我需要一个函数或过程来从活动运行的程序中检索用户名、库名、模块名等。 IBM 文档告诉我一些有关“程序状态结构”的信息!我从RPG中知道这样的结构。 我如何使用 COBOL 程序状态结构模拟 RPG PSDS?
我们使用的是System i操作系统V7R5M0!作为新手,我声明了一个像 ibm 文档这样的数据结构。我不知道如何将数据放入结构的模具字段中!
代码片段:
SPECIAL-NAMES. LOCAL-DATA IS LOCDATA
DECIMAL-POINT IS COMMA
PROGRAM STATUS IS PSDS.
...
structur
* Programmdatenstruktur
01 REDEFINES PSDS.
* Programmname
03 SDSPGMNM PIC X(10).
* Bibliotheksname
03 SDSLIBNM PIC X(10).
* Modulname
03 SDSMODNM PIC X(10).
* Statement nuber. *N if not availible
03 SDSSTATEN PIC X(10).
* Optimization Level
03 SDSOPTLVL PIC X(6).
* Exception Message Identifier
03 SDSEXCEPTM PIC X(7).
* Job name
03 SDSJOBNM PIC X(10).
* Job number
03 SDSJOBNBR PIC X(6).
* Job type
03 SDSJOBTYPE PIC X(1).
* User Profile running the program
03 SDSUSERP PIC X(10).
....
我必须在 COBOL 中使用
ACCEPT
子句来用数据填充模具结构字段吗?
根据文档,COBOL 的程序状态数据结构会在发生错误时更新。 https://www.ibm.com/docs/en/i/7.5?topic=handling-program-status-struct
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
PROGRAM STATUS IS PSDS.
WORKING-STORAGE SECTION.
01 PSDS.
03 SDSPGMNM PIC X(10).
PROCEDURE DIVISION.
BEGIN.
display "Pgmname before exception: " SDSPGMNM.
CALL "BADPGM"
ON EXCEPTION
DISPLAY "Call error".
display "Pgmname after exception: " SDSPGMNM.
STOP RUN.
输出(我的COBOL程序称为PGMSTAT)
Pgmname before exception:
Call error
Pgmname after exception: PGMSTAT