Retrieve Data Area
D QwcRdtAA pr ExtPgm('QWCRDTAA')
D aRcvVar Like(DtaAraRcv)
D aRcvVarLen 10i 0 Const
D aDtaAra 20a Const
D aStrPos 10i 0 Const
D aDtaLen 10i 0 Const
D ApiError Like(ApiError)
D DtaAraRcv ds
D AraBytes 10i 0
D AraBytesOut 10i 0
D AraDtaType 10a
D AraLibrary 10a
D AraLength 10i 0
D AraDecimals 10i 0
D AraValue 2000a
D RtvDtaAra pr 2000a Varying
D iDtaAra 10a Const
D iDtaAraLib 10a Const Options(*NoPass)
D iStrPos 5p 0 Const Options(*NoPass)
D iDtaLen 5p 0 Const Options(*NoPass)
P RtvDtaAra b Export
D RtvDtaAra pi 2000a Varying
D iDtaAra 10a Const
D iDtaAraLib 10a Const Options(*NoPass)
D iStrPos 5p 0 Const Options(*NoPass)
D iDtaLen 5p 0 Const Options(*NoPass)
D wDtaAra s 10a
D wDtaAraLib s 10a
D wStrPos s 5p 0
D wDtaLen s 5p 0
D qDtaAra s 20a
* Prepare all input parameters...
C Eval wDtaAra = iDtaAra
C If %Parms < 2
C Eval wDtaAraLib = '*LIBL'
C Else
C Eval wDtaAraLib = iDtaAraLib
C EndIf
C If %Parms < 3
C Eval wStrPos = 1
C Else
C Eval wStrPos = iStrPos
C EndIf
* Prepare API parameters...
C If wDtaAra = '*LDA' or
C wDtaAra = '*GDA' or
C wDtaAra = '*PDA'
C Eval wDtaAraLib = *Blanks
C EndIf
C Eval qDtaAra = wDtaAra + wDtaAraLib
* Call the API to retrieve the data area...
C Reset ApiError
C CallP QwcRdtAA(DtaAraRcv :
C %Size(DtaAraRcv):
C qDtaAra :
C -1 :
C 2000 :
C ApiError )
* If any errors were detected then return an error flag...
C If AraBytesOut = 0
C Return '*ERROR'
C EndIf
* Return the data area value...
C If %Parms < 4
C Eval wDtaLen = araLength - wStrPos + 1
C Else
C Eval wDtaLen = iDtaLen
C EndIf
C Return %Subst(AraValue : wStrPos : wDtaLen)
P RtvDtaAra e
Thanks to Jonathan Mason
阅读(1226) | 评论(0) | 转发(0) |