首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于IBM和z/OS的单一源

用于IBM和z/OS的单一源
EN

Stack Overflow用户
提问于 2022-03-31 12:26:53
回答 3查看 129关注 0票数 1

我主要是一个C开发人员,而不是一个常规的COBOL开发人员。我希望我的COBOL程序在IBM上拥有与z/OS上相同的源代码。

我的COBOL程序调用一个子例程。在z/OS上,我这样做:

代码语言:javascript
复制
CALL                                      
  'PBFNInit' USING                        
                    BY VALUE NULL-POINTER,

在IBM上,我必须这样调用:

代码语言:javascript
复制
    CALL PROCEDURE
      'PBFNInit' USING                        
                        BY VALUE NULL-POINTER,

有什么方法可以动态地告诉COBOL编译器使用哪种格式的CALL语句?

我希望有某种动态语句,比如由

SOURCE-COMPUTER. IBM-3270 WITH DEBUGGING MODE.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-03-31 13:24:04

如果您的编译器支持条件编译,则可以使用编译器指令进行定义常量,然后.

代码语言:javascript
复制
    >>EVALUATE TRUE
    >>WHEN DEFINED IBM-Z
        CALL 'PBFNInit' USING                        
            BY VALUE NULL-POINTER, [...]
    >>WHEN DEFINED IBM-I
        CALL PROCEDURE 'PBFNInit' USING                        
            BY VALUE NULL-POINTER, [...]
    >>WHEN OTHER
        !non-sequiter, your facts do not coordinate
    >>END-EVALUATE

每条评论更新一条..。

你可以尝试把这个答案和@SimonSobisch的答案结合起来,就像.

代码语言:javascript
复制
    >>IF DEFINED IBM-I
        REPLACE ==CALL== BY ==CALL PROCEDURE==.
    >>END-IF

        CALL 'PBFNInit' USING                        
            BY VALUE NULL-POINTER, [...]

目前文档中没有任何内容表明正在有条件编译的文本必须是有效代码。也许作者认为这是隐含的,也可能是错误。

票数 2
EN

Stack Overflow用户

发布于 2022-03-31 14:44:58

WITH DEBUGGING MODE将是每个文件中的一个小变化--但也与实际的COBOL功能重叠。

如果“小更改”对您来说是可以的,那么只需编写CALL PROCEDURE代码并使用单个

REPLACE ==CALL PROCEDURE== BY ==CALL==

在源头。

票数 0
EN

Stack Overflow用户

发布于 2022-04-01 13:07:10

如果您的所有调用都应该是过程调用,那么看起来您可以为所有带有编译或进程选项中的参数的调用设置它。

https://www.ibm.com/docs/en/i/7.4?topic=program-identifying-linkage-type-called-programs-procedures

上面写着

CRTCBLMOD和CRTBNDCBL命令的LINKLIT参数,或关联的PROCESS语句选项。 CRTCBLMOD和CRTBNDCBL命令的LINKLIT参数允许您在编译时指定ILE COBOL程序中所有外部调用文字-1、取消文字-1或将过程-指针-数据-项目设置为条目文字-1语句的链接类型。您不需要在特殊名称段落或带有调用、取消或设置…的链接类型短语中指定链接类型子句。链接由CRTCBLMOD或CRTBNDCBL的LINKLIT参数定义时的ENTRY语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71692473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档