美文网首页
Windows平台Visual COBOL如何处理命令行

Windows平台Visual COBOL如何处理命令行

作者: CodingCode | 来源:发表于2023-03-01 05:32 被阅读0次
  1. 定义COBOL程序
> cat TEST.cbl
        IDENTIFICATION DIVISION.
        PROGRAM-ID. TEST.
        DATA DIVISION.
        WORKING-STORAGE SECTION.
        01  SEND-STRING            PIC X(100) VALUE SPACES.
        LINKAGE SECTION.
        01 CMD-PARAM.
           03 CMD-LENGTH       PIC 9(4) COMP-X.
           03 CMD-LINE.
              05 CMD-CHAR     PIC X
                              OCCURS 1 TO 999 DEPENDING ON CMD-LENGTH.
      ******************************************************
      * Start program with command line args
      ******************************************************
        PROCEDURE DIVISION USING CMD-PARAM.
           MOVE CMD-LINE TO SEND-STRING.
      *    ACCEPT SEND-STRING FROM COMMAND-LINE.
           DISPLAY "SEND-STRING:" SEND-STRING.
           STOP RUN.
  1. 配置setting

为了支持上述linkage section从命令行读取参数,必须

  • 定义COBOL配置文件,包含如下行
> cat cobconfig.cfg
set command_line_linkage=TRUE
  • 设置环境变量

SET COBCONFIG=/path/to/cobconfig.cfg

如果觉得配置setting比较繁琐,也可以在COBOL程序里面指定Directive COMMAND-LINE-LINKAGE,例如:

> cat TEST.cbl
       $SET COMMAND-LINE-LINKAGE
        IDENTIFICATION DIVISION.
        PROGRAM-ID. TEST.
        DATA DIVISION.
        ...
  1. 编译运行
>cbllink -V -K TEST.cbl
...
>TEST.exe abcd
SEND-STRING:abcd
  1. 编译运行:分步执行

前面使用cbllink直接从.cbl编译成了.exe,也可以分两步从.cbl->.obj->.exe.

>cobol TEST.cbl;
>cbllink -V -K TEST.obj

注意cobol命令后面的分号(;)不能少,它不是分隔符,而是命令的一部分哦。

这里再细分一下,cbllink又包含两个子命令:

> cblnames -v -mTEST TEST.obj

> cl TEST.obj cbllds.obj cblrtsmi.lib oopsm.lib msvcrt.lib kernel32.lib ucrt.lib vcruntime.lib legacy_stdio_definitions.lib legacy_stdio_wide_specifiers.lib kernel32.lib user32.lib gdi32.lib advapi32.lib /link /SUBSYSTEM:CONSOLE /ENTRY:mainCRTStartup /OUT:TEST.exe

其中cbllds.obj是由命令cblnames生成的。

相关文章

网友评论

      本文标题:Windows平台Visual COBOL如何处理命令行

      本文链接:https://www.haomeiwen.com/subject/wqsrldtx.html