使用错误代码参数
错误代码参数为您提供了一种方法来确定 API 是否迂到任何错误。 以下是显示错误代码参数的不正确和正确使用方式的程序示例。
本主题中的示例提供了用于创建用户空间的程序。
注: 通过使用代码示例,您同意 代码许可证和免责声明信息的条款。
不正确的程序示例: 使用错误代码参数
此示例中显示的常见错误是使用错误代码结构向 API 指示不针对发现的错误发送异常消息。 此外,该示例不会检查错误代码结构以确定 API 调用是否成功。 为了演示错误代码结构的不当使用,在 QUSCRTUS API 的 replace 参数上使用了不正确的值。 替换参数是必需参数。 编码错误 (*XXXXXXX) 显示在不正确的位置 (1) ,也显示在正确的编码位置 (2) 。
不正确的 (3) 和正确的编码 (4) 都显示程序监视来自 API 调用的任何错误。 但是,在调用 QUSCRTUS API 之后,程序不会检查可用字节字段。
由于替换参数上存在错误,因此未创建所请求的用户空间。 但是,调用程序不知道这一点,如 (5)中所示。
*****************************************************************
*
*Program Name: PGM1
*
*Program Language: RPG
*
*Description: This sample program illustrates the incorrect
* way of using the error code parameter.
*
*Header Files Included: QUSEC - Error Code Parameter
*
*APIs Used: QUSCRTUS - Create User Space
*
*****************************************************************
* BRING IN THE ERROR STRUCTURE FROM QSYSINC
I/COPY QSYSINC/QRPGSRC,QUSEC
**
ISPCNAM DS
I I 'SPCNAME ' 1 10 SPC
I I 'PAM ' 11 20 LIB
** OTHER ASSORTED VARIABLES
I DS
I I 2000 B 1 40SIZ
I B 5 80START
I I X'00' 9 9 INTVAL
*
* Initialize the bytes provided field (QUSBNDB) of the error code
* structure. Languages such as RPG and CL tend to initialize the bytes
* provided field to blanks, which when passed to an API is viewed as a
* very large (and incorrect) binary value. If you receive CPF3CF1 when
* calling an API, the bytes provided field should be the first field
* you examine as part of problem determination.
C Z-ADD16 QUSBNB (3)
*
* CREATE THE SPACE TO HOLD THE DATA
C CALL 'QUSCRTUS'
C PARM SPCNAM
C PARM 'EXT_ATTR'EXTATR 10
C PARM SIZ
C PARM INTVAL
C PARM '*ALL 'PUBAUT 10
C PARM 'NO TEXT 'TXTDSC 50
C PARM '*XXXXXXX'REPLAC 10 (1)
C PARM QUSBN
** Program does not check the error code parameter (5)
**
C SETON LR
正确的程序示例: 使用错误代码参数
您可以添加代码以帮助您发现程序中可能存在的错误。 在以下示例程序中,添加了代码以监视在错误代码参数 (QUSBN) 中传回的错误信息。 已添加 (6) 处的代码以检查任何消息的错误代码参数,并在发现任何错误时向用户显示异常标识。 错误编码的程序不会检查错误代码参数,如 (5)中所示。
*****************************************************************
*
*Program Name: PGM2
*
*Program Language: RPG
*
*Description: This sample program illustrates the correct
* way of using the error code parameter.
*
*Header Files Included: QUSEC - Error Code Parameter
*
*APIs Used: QUSCRTUS - Create User Space
*
*****************************************************************
* BRING IN THE ERROR STRUCTURE FROM QSYSINC
I/COPY QSYSINC/QRPGSRC,QUSEC
**
ISPCNAM DS
I I 'SPCNAME ' 1 10 SPC
I I 'QTEMP ' 11 20 LIB
** OTHER ASSORTED VARIABLES
I DS
I I 2000 B 1 40SIZ
I B 5 80START
I I X'00' 9 9 INTVAL
*
C Z-ADD16 QUSBNB (4)
*
* CREATE THE SPACE TO HOLD THE DATA
C CALL 'QUSCRTUS'
C PARM SPCNAM
C PARM 'EXT_ATTR'EXTATR 10
C PARM SIZ
C PARM INTVAL
C PARM '*ALL 'PUBAUT 10
C PARM 'NO TEXT 'TXTDSC 50
C PARM '*XXXXXXX'REPLAC 10 (2)
C PARM QUSBN
**
* DISPLAY EXCEPTION IDENTIFIER TO THE USER
C QUSBNC IFGT *ZEROS (6)
C EXSR DSPERR
C END
*
C SETON LR
*
C DSPERR BEGSR
C DSPLY QUSBND
C ENDSR