OPM RPG 中的示例: 打印 HOLD 值
此 OPM RPG 程序打印作业描述的 HOLD 值 (在 "创建作业描述" (CRTJOBD) 或 "更改作业描述" (CHGJOBD) 命令上指定)。
这与 OPM RPG 中的示例: 检索 HOLD 参数 (异常消息) 和 OPM RPG 中的示例: 检索 HOLD 参数 (错误代码结构)中的程序类型相同。 名为 JOBDAPI 的程序将打印 HOLD 值 (如果找到) ,如 1中所示。 如果发生错误,那么程序会将包含错误消息标识的行打印到名为 QPRINT 的假脱机文件,如 2中所示。
注: 通过使用代码示例,您同意 代码许可证和免责声明信息的条款。
F*****************************************************************
F*****************************************************************
F*
F*Program Name: JOBDAPI
F*
F*Language: OPM RPG
F*
F*Descriptive Name: Get Job Description
F*
F*Description: The following program prints out the name of
F* the job description or prints an error if the
F* API could not find the job description name
F* specified.
F*
F*
F*Header Files Included: QUSEC - Error Code Parameter
F* QWDRJOBD - Retrieve Job Description API
F*
F*****************************************************************
F*****************************************************************
F* JOBDAPIR - Print value of HOLD parameter using API
F* Uses error-code data structure
F*
FQPRINT O F 132 OF PRINTER
I*
I* Error Code Parameter Include for the APIs
I*
I/COPY QSYSINC/QRPGSRC,QUSEC
I*
I* Retrieve Job Description API Include
I*
I/COPY QSYSINC/QRPGSRC,QWDRJOBD
I*
I*
I* Dummy data structure used to declare binary field (3)
I*
I DS
I I 390 B 1 40RCVLEN
I I 'JOBD0100' 5 12FORMAT
C*
C* Beginning of Mainline
C*
C* Two parameters are being passed into this program.
C*
C *ENTRY PLIST Parm list
C PARM JOBD 10 Job descrp
C PARM JOBDL 10 Jobd library
C*
C* Move the two parameters passed into LFNAM.
C*
C JOBD CAT JOBDL LFNAM 20 Qlfd name
C*
C* Error code parameter is set to 16.
C*
C Z-ADD16 QUSBNB Bytes provid
C*
C* Instead of specifying 'QWCRJOBD', I could have used the
C* constant QWDBGB that was defined in the QWDRJOBD include.
C* Call the API
C*
C CALL 'QWDRJOBD' Parm list
C PARM QWDBH Receiver Var.
C PARM RCVLEN Length RCVVAR
C PARM FORMAT Format Name
C PARM LFNAM Qual. Job Desc
C PARM QUSBN Error Code
C* If no bytes available, API was successful; print HOLD value
C QUSBNC IFEQ 0
C EXCPTGOOD
C ENDIF
C* If some bytes available, API failed; print error message ID
C QUSBNC IFGT 0
C EXCPTBAD
C ENDIF
C* End of program
C SETON LR
C RETRN
C*
C* End of MAINLINE
C**********************************************************************
O*
OQPRINT E 106 GOOD
O 'HOLD value - '
O QWDBHN
OQPRINT E 106 BAD
O 'Failed. Error ID - '
O QUSBND
使用以下数据结构:
- 错误代码数据结构
这将定义所使用的两个二进制字段以及针对错误情况返回的消息标识。
- 检索作业描述数据结构
这将定义格式 JOBD0100,这是具有位置 77-86 中的保留字段的 390 字节数据结构。
- 虚拟数据结构
这包含用于接收器变量长度的字段。 该字段定义为二进制,并且在前 4 个字节中。 虚拟数据结构 (如 3中所示) 也包含格式字段。
使用此数据结构是因为 RPG 仅允许在数据结构的上下文中定义二进制变量。
程序检索传递的参数列表,并初始化要传递到 API 的字段。 调用 API 并将信息放入接收方变量数据结构 (如果找到了信息)。 如果发生错误并且提供了足够的空间来接收信息,那么 API 会将信息放在错误代码数据结构中。
根据是否发现任何错误,程序将打印两条不同行中的一条:
HOLD value - *NO (1)
Failed. Error ID - CPF9801 (2)