首页 > 解决方案 > 如何检查文件路径是否存在

问题描述

我是大会的新手;如何从 IBM 大型机汇编代码中检查某个路径 (UNIX) 路径是否存在。例如我想检查路径'/user/lpd/file'路径是否存在。

IBM页面上有一个示例

     MVC   BUFFERA(19),=CL19'labrec/qual/current'                   
     MVC   BUFLENA,=F'19'                                           
     SPACE ,                                                        
     CALL  BPX1STA,              Get file status                   +
           (BUFLENA,             Input: Pathname length            +
           BUFFERA,              Input: Pathname                   +
           STATL,                Input: Length of buffer needed    +
           STAT,                 Buffer, BPXYSTAT                  +
           RETVAL,               Return value: 0 or -1             +
           RETCODE,              Return code                       +
           RSNCODE),             Reason code                       +
           VL,MF=(E,PLIST)       ---------------------------------- 

但是这个还是需要手动查找参数a的长度

标签: assemblymainframe

解决方案


当我第一次开始学习 HL/ASM 时,我发现结合使用操作原理和 C 编译器列表很方便。

如果你在 Unix 系统服务端,你可以写一段代码,例如

富.c:

#include <stdlib.h>
int foo(const char* str) {
  return strlen(str);
}

然后将该代码编译为:

c89 -c -Wc,list(./) foo.c

然后看看编译器是如何生成代码的。你也可以试试 -O2 看看优化器是怎么做的。注意不要让优化器“做太多”,例如不要让它看到实际的字符串,否则它只会在编译时计算长度


推荐阅读