AS/400 QSYRUSRI API 参数
AS/400 QSYRUSRI API parameters
我正在尝试使用 QYSRUSRI api 检索 Iseries 用户配置文件中补充组的数量。
有一个指向保存此数据的数组开头的偏移指针。格式 USRI0300 的规范提到这是从接收器变量的位置 585 开始的,但在我的实现中,子字段 (suppGrpIdx) 包含零,即使补充组 (suppGrp) 数量的子字段包含 6,这对于配置文件 I 是正确的正在分析。
有关接收数据的 DS 规格,请参见下文。
知道我遗漏了什么吗?
D USRI0300 DS based(p_usrData) qualified
D name 10a overlay(USRI0300:9)
D prevSign 6a overlay(USRI0300:20)
D signTries 10i 0 overlay(USRI0300:33)
D status 10a overlay(USRI0300:37)
D changed 8a overlay(USRI0300:47)
D expires 8a overlay(USRI0300:61)
D special 15a overlay(USRI0300:84)
D groupprf 10a overlay(USRI0300:99)
D owner 10a overlay(USRI0300:109)
D authority 10a overlay(USRI0300:119)
D initmenu 20a overlay(USRI0300:149)
D initpgm 20a overlay(USRI0300:169)
D jobd 20a overlay(USRI0300:290)
D text 50a overlay(USRI0300:199)
D suppGrpIdx 10i 0 overlay(USRI0300:585)
D suppGrp 10i 0 overlay(USRI0300:589)
这是我的原型:-
D QSYRUSRI PR ExtPgm('QSYRUSRI')
D RcvVar 32767a options(*varsize)
D RcvVarLen 10i 0 const
D Format 8a const
D UsrPrf 10a const
D ErrCode 32767a options(*varsize)
我试过你的代码,我将 %SIZE(USRI00300) 作为第二个参数,suppGrpIdx 也为零。
正如 Charles 和 Mark Sanderson 所暗示的那样,您必须使接收器足够大以提供所有信息,并告诉 API 接收器有多大。我猜既然您将数据结构定义为 based,那么您正在将 p_usrData 设置为一些更大的存储空间。如果是这样,请给出较大存储的长度,而不是 USRI0300 的大小。
当我设置 p_usrData 指向一个 32767 长度的缓冲区,并将 %size(buffer) 作为第二个参数时,我得到 722 的 suppGrpIdx。
我正在尝试使用 QYSRUSRI api 检索 Iseries 用户配置文件中补充组的数量。
有一个指向保存此数据的数组开头的偏移指针。格式 USRI0300 的规范提到这是从接收器变量的位置 585 开始的,但在我的实现中,子字段 (suppGrpIdx) 包含零,即使补充组 (suppGrp) 数量的子字段包含 6,这对于配置文件 I 是正确的正在分析。
有关接收数据的 DS 规格,请参见下文。
知道我遗漏了什么吗?
D USRI0300 DS based(p_usrData) qualified
D name 10a overlay(USRI0300:9)
D prevSign 6a overlay(USRI0300:20)
D signTries 10i 0 overlay(USRI0300:33)
D status 10a overlay(USRI0300:37)
D changed 8a overlay(USRI0300:47)
D expires 8a overlay(USRI0300:61)
D special 15a overlay(USRI0300:84)
D groupprf 10a overlay(USRI0300:99)
D owner 10a overlay(USRI0300:109)
D authority 10a overlay(USRI0300:119)
D initmenu 20a overlay(USRI0300:149)
D initpgm 20a overlay(USRI0300:169)
D jobd 20a overlay(USRI0300:290)
D text 50a overlay(USRI0300:199)
D suppGrpIdx 10i 0 overlay(USRI0300:585)
D suppGrp 10i 0 overlay(USRI0300:589)
这是我的原型:-
D QSYRUSRI PR ExtPgm('QSYRUSRI')
D RcvVar 32767a options(*varsize)
D RcvVarLen 10i 0 const
D Format 8a const
D UsrPrf 10a const
D ErrCode 32767a options(*varsize)
我试过你的代码,我将 %SIZE(USRI00300) 作为第二个参数,suppGrpIdx 也为零。
正如 Charles 和 Mark Sanderson 所暗示的那样,您必须使接收器足够大以提供所有信息,并告诉 API 接收器有多大。我猜既然您将数据结构定义为 based,那么您正在将 p_usrData 设置为一些更大的存储空间。如果是这样,请给出较大存储的长度,而不是 USRI0300 的大小。
当我设置 p_usrData 指向一个 32767 长度的缓冲区,并将 %size(buffer) 作为第二个参数时,我得到 722 的 suppGrpIdx。