如何从命令行在 IBMi 中编译(和 link)COBOL 程序?
How to compile (and link) a COBOL program in an IBMi from the command line?
我有一个 COBOL 程序:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO1.
AUTHOR. MYSELF.
PROCEDURE DIVISION.
* SHOW BEGINS
DISPLAY 'HELLO WORLD RUN'.
STOP RUN.
如果我用它运行的 STRPDM 的选项 14 编译它。
但是如果我从命令行(F10)尝试这个:
CRTPGM PGM(HIGINIO1/HELLO2) MODULE(*PGM) ENTMOD(*FIRST) BNDSRVPGM(*NONE) BNDDIR(*NONE) ACTGRP(*ENTMOD) TGTRLS(*CURRENT)
失败:未创建程序 HELLO2。
有什么想法吗?
所有ILE语言,你首先要编译模块。然后从模块创建程序。
使用CRTCBLMOD
命令创建模块:
CRTCBLMOD MODULE(yourlib/TEST0007B) SRCFILE(QCBLLESRC)
OPTION(*SOURCE) DBGVIEW(*SOURCE)
运行 CRTPGM
从模块创建可执行程序的命令:
CRTPGM PGM(TEST0007B) MODULE(*PGM)
这是一个 cobol sql 示例(没有走得太远,因为我不完全理解如何在 cobol 中执行循环)。使用CRTSQLCBLI
命令创建模块。然后CRTPGM
创建程序。
CRTSQLCBLI OBJ(TEST0008B) SRCFILE(QCBLLESRC)
SRCMBR(TEST0008B) OBJTYPE(*MODULE) REPLACE(*YES)
crtpgm test0008b
IDENTIFICATION DIVISION.
PROGRAM-ID. TEST0008B.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-ISERIES.
OBJECT-COMPUTER. IBM-ISERIES.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC X(80) VALUE " ".
01 B PIC S9(8) VALUE 10.
01 C PIC S9(8) VALUE 5.
01 SR_FILLER.
05 sr_srcdta PIC x(100) VALUE " ".
EXEC SQL
INCLUDE SQLCA
END-EXEC.
PROCEDURE DIVISION.
MAINLINE.
MOVE B TO C.
exec sql
declare c1 cursor for
select a.srcdta
from qrpglesrc a
end-exec.
exec sql
open c1
end-exec.
EXEC SQL
fetch c1
into :sr_srcdta
END-EXEC.
if sqlcode not = 0
display 'end of input file'
else
DISPLAY sr_srcdta
END-IF.
EXEC SQL
close c1
END-EXEC.
EXEC SQL
SELECT a.srcdta
INTO :sr_srcdta
FROM qrpglesrc a
fetch first row only
END-EXEC.
DISPLAY sr_srcdta.
STOP RUN.
我有一个 COBOL 程序:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO1.
AUTHOR. MYSELF.
PROCEDURE DIVISION.
* SHOW BEGINS
DISPLAY 'HELLO WORLD RUN'.
STOP RUN.
如果我用它运行的 STRPDM 的选项 14 编译它。 但是如果我从命令行(F10)尝试这个:
CRTPGM PGM(HIGINIO1/HELLO2) MODULE(*PGM) ENTMOD(*FIRST) BNDSRVPGM(*NONE) BNDDIR(*NONE) ACTGRP(*ENTMOD) TGTRLS(*CURRENT)
失败:未创建程序 HELLO2。 有什么想法吗?
所有ILE语言,你首先要编译模块。然后从模块创建程序。
使用CRTCBLMOD
命令创建模块:
CRTCBLMOD MODULE(yourlib/TEST0007B) SRCFILE(QCBLLESRC)
OPTION(*SOURCE) DBGVIEW(*SOURCE)
运行 CRTPGM
从模块创建可执行程序的命令:
CRTPGM PGM(TEST0007B) MODULE(*PGM)
这是一个 cobol sql 示例(没有走得太远,因为我不完全理解如何在 cobol 中执行循环)。使用CRTSQLCBLI
命令创建模块。然后CRTPGM
创建程序。
CRTSQLCBLI OBJ(TEST0008B) SRCFILE(QCBLLESRC)
SRCMBR(TEST0008B) OBJTYPE(*MODULE) REPLACE(*YES)
crtpgm test0008b
IDENTIFICATION DIVISION.
PROGRAM-ID. TEST0008B.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-ISERIES.
OBJECT-COMPUTER. IBM-ISERIES.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC X(80) VALUE " ".
01 B PIC S9(8) VALUE 10.
01 C PIC S9(8) VALUE 5.
01 SR_FILLER.
05 sr_srcdta PIC x(100) VALUE " ".
EXEC SQL
INCLUDE SQLCA
END-EXEC.
PROCEDURE DIVISION.
MAINLINE.
MOVE B TO C.
exec sql
declare c1 cursor for
select a.srcdta
from qrpglesrc a
end-exec.
exec sql
open c1
end-exec.
EXEC SQL
fetch c1
into :sr_srcdta
END-EXEC.
if sqlcode not = 0
display 'end of input file'
else
DISPLAY sr_srcdta
END-IF.
EXEC SQL
close c1
END-EXEC.
EXEC SQL
SELECT a.srcdta
INTO :sr_srcdta
FROM qrpglesrc a
fetch first row only
END-EXEC.
DISPLAY sr_srcdta.
STOP RUN.