|
On Thu, 16 Aug 2001, Mike Naughton wrote:
>
> Does anyone have an example of using the QDCRCFGS API that they'd be
> willing to share? I'd be interested in either RPG(LE) or CL.
>
Here, I whipped up an example for you... I wasn't sure what you
wanted to use the API for, so I just displayed a bunch of stuff...
Compile with: CRTBNDRPG PGM(xxx) SRCFILE(XXX/xxx) DBGVIEW(*LIST)
run with: CALL XXX PARM('*DEVD' 'DSP01') (or whatever you like)
you can take it from there...
H DFTACTGRP(*NO) ACTGRP(*NEW) OPTION(*SRCSTMT)
D RtvCfgSts PR ExtPgm('QDCRCFGS')
D RcvVar 32766A options(*varsize)
D RcvVarLen 10I 0 const
D Format 8A const
D CfgDType 10A const
d CfgDName 10A const
D ErrorCode 32766A options(*varsize)
D p_ds1 S *
D ds1 DS based(p_ds1)
D ds1BytesRtn 10I 0
D ds1BytesAvl 10I 0
D ds1Status 10I 0
D ds1DateRtv 7A
D ds1TimeRtv 6A
D ds1StatusTxt 20A
D ds1JobName 10A
D ds1JobUser 10A
D ds1JobNbr 6A
D ds1PassThr 10A
D ds1Reserv1 3A
D ds1OffActCnv 10I 0
D ds1NbrActCnv 10I 0
D ds1LenActCnv 10I 0
D ds1OffMulJob 10I 0
D ds1NbrMulJob 10I 0
D ds1LenMulJob 10I 0
D p_ds2 S *
D ds2 DS based(p_ds2)
D ds2CnvSts 10I 0
D ds2CnvStsTxt 20A
D ds2CnvStsMod 10A
D ds2CnvStsJob 10A
D ds2CnvStsUsr 10A
D ds2CnvStsNbr 6A
D p_ds3 S *
D ds3 DS based(p_ds3)
D ds3MultJob 10A
D ds3MultUser 10A
D ds3MultNbr 6A
D dsEC DS
D dsECBytesP 1 4I 0 inz(256)
D dsECBytesA 5 8I 0 inz(0)
D dsECMsgID 9 15
D dsECReserv 16 16
D dsECMsgDta 17 256
D p_workspace S *
D workspace S 1A based(p_workspace)
D size S 10I 0
D Msg S 52A
D X S 10I 0
D pause S 1A
c *entry plist
c parm CfgType 10
c parm CfgName 10
c eval *inlr = *on
C* Reserve space for up to 200 active convs & 200 multjobs...
c eval size = %size(ds1) + (%size(ds2)*200) +
c (%size(ds3)*200)
c alloc size p_workspace
C* Call Retrieve Cfg Status API:
c callp RtvCfgSts(workspace: size: 'CFGS0100':
c CfgType: CfgName: dsEC)
c if dsECBytesA > 0
c eval Msg = 'QDCRCFGS failed with ' +
c dsECMsgID
c dsply Msg
c return
c endif
c eval p_ds1 = p_workspace
C** Show status of cfg descr:
c eval Msg = 'Status = ' + ds1StatusTxt
c Msg dsply
C** Show job using cfg descr:
c if ds1JobName <> *blanks
c eval Msg = 'Job = ' + %trimr(ds1JobName) +
c '/' + %trimr(ds1JobUser) + '/' +
c ds1JobNbr
c Msg dsply
c endif
C** Show any active conversations:
c do ds1NbrActCnv X
c eval p_ds2 = p_workspace + ds1OffActCnv +
c ((X-1) * ds1LenActCnv)
c eval Msg = 'ActCnv ' + %trim(%editc(X:'Z'))
c + ' status = ' + ds2CnvStsTxt
c Msg dsply
c eval Msg = 'ActCnv ' + %trim(%editc(X:'Z')) +
c ' job = ' + %trimr(ds2CnvStsJob) +
c '/' + %trimr(ds2CnvStsUsr) + '/' +
c ds2CnvStsNbr
c Msg dsply
c enddo
C** If this device can be used by multiple jobs,
C** show them all now:
c do ds1NbrMulJob X
c eval p_ds2 = p_workspace + ds1OffMulJob +
c ((X-1) * ds1LenMulJob)
c eval Msg = 'MultJob ' + %trim(%editc(X:'Z')) +
c ' = ' + %trimr(ds3MultJob) +
c '/' + %trimr(ds3MultUser) + '/' +
c ds3MultNbr
c Msg dsply
c enddo
c dsply pause
c return
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.