如何將指定的 audit journal reveiver journal entry 轉換至於 PF(Command CVTJRNE with API QjoRetrieveJournalEntries)
File : QDDSSRC
Member: JRNRCVRP
Type : PF
Usage : CRTPF JRNRCVRP
A R JRNRCVR
A SYSNAM 8
A JRNSEQ 20S 0
A JRNCDE 1
A JRNENTTYP 2
A JRNENTDTS 20
A JOBNAM 10
A USRNAM 10
A JOBNBR 6
A PGMNAM 10
A PGMLIB 10
A OBJECT 30
A USRPRF 10
A RCVNAM 10
A RCVLIB 10
A ADRFAM 1
A RMTADR 16
A RMTPORT 5S 0
A ARMNBR 5S 0
A PGMLIBASP 5S 0
A PGMLIBASPD 10
A OBJNAMID 1
A OBJTYPE 10
A ENTDTALEN 5S 0
A JRNENTDTA 8192
File : QRPGLESRC
Member: CVTJRNER
Type : RPGLE
Usage : CRTBNDRPG CVTJRNER
**
** Program . . : CBX1042
** Description : Retreive journal entries - format RJNE0200
** Author . . : Carsten Flensburg
** Published . : Club Tech iSeries Programming Tips Newsletter
** Date . . . : July 24, 2003
**
** Modified by : Vengoal Chang
** Modified date October 15, 2014
** Description : Convert journal entries to PF
**
** Program summary
** ---------------
**
** Journal and commit APIs:
** QjoRetrieveJournalEntries Retrieves journal entries based on
** a variety of selection criteria.
**
** The API provides a flexible and
** comprehensive interface to journal
** entries similar to - and also
** extending - the functions provided
** provided by journal CL commands
** like RCVJRNE and RTVJRNE.
**
** QjoDeletePointerHandle Deletes the specified pointer
** handle previously generated by the
** QjoRetrieveJournalEntries API.
**
** Miscellaneous APIs:
** QWCCVTDT Convert date and Converts date and time values from
** time format one format to another, including a
** system timestamp of type *DTS to
** character format.
** C library function:
** tstbts Test bits Tests the bit value of the bit
** located with the bit offset
** parameter, bit 0 being the
** leftmost and 64k the maximum.
**
**
** Sequence of events:
** 1. Initialization of the journal entry type selection criteria.
** A table describing the possible entry types is available here:
**
** http://publib.boulder.ibm.com/iseries/v5r2/ic2924/info/rzaki/
** finder/rzakijournalfinderall.htm
**
** All the journal entry selection records are optional - for
** each record not provided the default value is assumed.
** See API manual for the specific details.
**
** 2. The QjoRetrieveJournalEntries API is called until there are no
** more journal entries available for retrieval.
**
** 3. Each retrieved entry is processed - in this case written to
** the internally defined printer file.
**
** 4. The entry's timestamp is converted from system timestamp to
** character format prior to printing.
**
** 5. Some entry information is provided in the form of bit fields
** retrieved using a C library function.
**
** 6. If a pointer handle was returned by the API it is eventually
** deleted for housekeeping purposes.
**
** 7. After each call the continuation information returned in the
** entry header data - including continuation journal sequence
** number and receiver name - is used to offset the next entry
** retrieval correctly.
**
**
** Programmer's notes:
** Earliest release program will run: V5R2
**
**
** Compile options:
**
** CrtRpgMod Module( CVTJRNER ) DbgView( *LIST )
**
** CrtPgm Pgm( CVTJRNER )
** Module( CVTJRNER )
**
**
**-- Header specifications: --------------------------------------------**
H Option( *SrcStmt ) BndDir( 'QC2LE' ) DatEdit( *DMY/ )
H DFTACTGRP(*NO) Debug
**-- Printer file: -----------------------------------------------------**
FJRNRCVRP O E Disk
**-- Printer file information: -----------------------------------------**
D PrtLinInf Ds
D PlOvfLin 5i 0 Overlay( PrtLinInf: 188 )
D PlCurLin 5i 0 Overlay( PrtLinInf: 367 )
D PlCurPag 5i 0 Overlay( PrtLinInf: 369 )
**-- System information: -----------------------------------------------**
D SDs
D PsPgmNam *Proc
**-- API error data structure: -----------------------------------------**
D ApiError Ds
D AeBytPrv 10i 0 Inz( %Size( ApiError ))
D AeBytAvl 10i 0
**-- Global variables: -------------------------------------------------**
D Idx s 10i 0
D EntDta s 8192a Varying
**
D Time s 6s 0
D NbrRcds s 10u 0
D JrnEntDts s 20a Inz( *All'0' )
D*JrnDta s 24a
D JrnDta s 70a
**-- Retrieve journal entry data: --------------------------------------**
D JeRcvVar Ds Align
D JhJrnHdr
D JhBytRtn 10i 0 Overlay( JhJrnHdr: 1 )
D JhOfsHdrJrnE 10i 0 Overlay( JhJrnHdr: *Next )
D JhNbrEntRtv 10i 0 Overlay( JhJrnHdr: *Next )
D JhConInd 1a Overlay( JhJrnHdr: *Next )
D JhConRcvStr 10a Overlay( JhJrnHdr: *Next )
D JhConLibStr 10a Overlay( JhJrnHdr: *Next )
D JhConSeqNbr 20s 0 Overlay( JhJrnHdr: *Next )
D 11a Overlay( JhJrnHdr: *Next )
D JeData 32754a
**-- Entry header:
D JeEntHdr Ds Based( pEntHdr )
D JeOfsHdrJrnE 10u 0
D JeOfsNulValI 10u 0
D JeOfsEntDta 10u 0
D JeOfsTrnId 10u 0
D JeOfsLglUoW 10u 0
D JeOfsRcvInf 10u 0
D JeSeqNbr 20u 0
D JeTimStp 20u 0
D JeTimStpC 8a Overlay( JeTimStp )
D JeThrId 20u 0
D JeSysSeqNbr 20u 0
D JeCntRrn 20u 0
D JeCmtCclId 20u 0
D JePtrHdl 10u 0
D JeRmtPort 5u 0
D JeArmNbr 5u 0
D JePgmLibAsp 5u 0
D JeRmtAdr 16a
D JeJrnCde 1a
D JeEntTyp 2a
D JeJobNam 10a
D JeUsrNam 10a
D JeJobNbr 6a
D JePgmNam 10a
D JePgmLib 10a
D JePgmLibAspDv 10a
D JeObject 30a
D JeUsrPrf 10a
D JeJrnId 10a
D JeAdrFam 1a
D JeSysNam 8a
D JeIndFlg 1a
D JeObjNamInd 1a
D JeBitFld 1a
D JeObjTyp 10a
D JeRsv 3a
**
** JeBitFld:
D Ds
D JbRefCst 1s 0
D JbTrg 1s 0
D JbIncDta 1s 0
D JbIgnApyRmvJ 1s 0
D JbMinEntDta 1s 0
D JbFilTypInd 1s 0
D JbMinFldBnd 1s 0
D JbRsv 3a
**-- Null values - *VARLEN:
D JeNulValVar Ds Based( pNulVal )
D JnNulValLen 10i 0
D JnNulValIndV 512a
**-- Null values - length:
D JeNulValLen Ds Based( pNulVal )
D JnNulValIndL 512a
**-- Entry data:
D JeEntDta Ds Based( pEntDta )
D JdEntDtaLen 5s 0
D 11a
D JdEntDta 8192a
**-- Logical unit of work:
D JeLglUoW Ds Based( pLglUow )
D JuLglUoW 39a
**-- Receiver information:
D JeRcvInf Ds Based( pRcvInf )
D JrRcvNam 10a
D JrRcvLib 10a
D JrRcvLibAspDv 10a
D JrRcvLibAspNb 5i 0
**
**-- Retrieve journal entry selection records: -------------------------**
D JrnEntRtv Ds
D JeNbrVarRcd 10i 0
**-- RCVRNG - *CURRENT, *CURCHAIN
D JrnVarR01 Ds
D JvR01RcdLen 10i 0 Inz( %Size( JrnVarR01 ))
D JvR01Key 10i 0 Inz( 1 )
D JvR01DtaLen 10i 0 Inz( %Size( JvR01Dta ))
D JvR01Dta 40a Inz( '*CURCHAIN' )
D JvR01RcvStr 10a Overlay( JvR01Dta: 1 )
D JvR01LibStr 10a Overlay( JvR01Dta: *Next )
D JvR01RcvEnd 10a Overlay( JvR01Dta: *Next )
D JvR01LibEnd 10a Overlay( JvR01Dta: *Next )
**-- FROMENT - *FIRST
D JrnVarR02 Ds
D JvR02RcdLen 10i 0 Inz( %Size( JrnVarR02 ))
D JvR02Key 10i 0 Inz( 2 )
D JvR02DtaLen 10i 0 Inz( %Size( JvR02Dta ))
D JvR02Dta 20a Inz( '*FIRST' )
D JvR02SeqNbr 20s 0 Overlay( JvR02Dta )
**-- FROMTIME
D JrnVarR03 Ds
D JvR03RcdLen 10i 0 Inz( %Size( JrnVarR03 ))
D JvR03Key 10i 0 Inz( 3 )
D JvR03DtaLen 10i 0 Inz( %Size( JvR03Dta ))
D JvR03Dta 26a
**-- TOENT - *LAST
D JrnVarR04 Ds
D JvR04RcdLen 10i 0 Inz( %Size( JrnVarR04 ))
D JvR04Key 10i 0 Inz( 4 )
D JvR04DtaLen 10i 0 Inz( %Size( JvR04Dta ))
D JvR04Dta 20a Inz( '*LAST' )
**-- TOTIME
D JrnVarR05 Ds
D JvR05RcdLen 10i 0 Inz( %Size( JrnVarR05 ))
D JvR05Key 10i 0 Inz( 5 )
D JvR05DtaLen 10i 0 Inz( %Size( JvR05Dta ))
D JvR05Dta 26a
**-- NBRENT
D JrnVarR06 Ds
D JvR06RcdLen 10i 0 Inz( %Size( JrnVarR06 ))
D JvR06Key 10i 0 Inz( 6 )
D JvR06DtaLen 10i 0 Inz( %Size( JvR06Dta ))
D JvR06Dta 10i 0 Inz( 1000 )
**-- JRNCDE - *ALL, *CTL / *ALLSLT, *IGNFILSLT
D JrnVarR07 Ds
D JvR07RcdLen 10i 0 Inz( %Size( JrnVarR07 ))
D JvR07Key 10i 0 Inz( 7 )
D JvR07DtaLen 10i 0 Inz( %Size( JvR07Dta ))
D JvR07Dta
D JcNbrCod 10i 0 Overlay( JvR07Dta: 1 )
D JcJrnCod 20a Overlay( JvR07Dta: *Next )
D Dim( 16 )
D JcJrnCodVal 10a Overlay( JcJrnCod: 1 )
D JcJrnCodSlt 10a Overlay( JcJrnCod: *Next )
**-- ENTTYP - *ALL, *RCD
D JrnVarR08 Ds
D JvR08RcdLen 10i 0 Inz( %Size( JrnVarR08 ))
D JvR08Key 10i 0 Inz( 8 )
D JvR08DtaLen 10i 0 Inz( %Size( JvR08Dta ))
D JvR08Dta
D JcNbrTyp 10i 0 Overlay( JvR08Dta: 1 )
D JcEntTyp 10a Overlay( JvR08Dta: *Next )
D Dim( 16 )
**-- JOB - *ALL
D JrnVarR09 Ds
D JvR09RcdLen 10i 0 Inz( %Size( JrnVarR09 ))
D JvR09Key 10i 0 Inz( 9 )
D JvR09DtaLen 10i 0 Inz( %Size( JvR09Dta ))
D JvR09Dta 26a Inz( '*ALL' )
**-- PGM - *ALL
D JrnVarR10 Ds
D JvR10RcdLen 10i 0 Inz( %Size( JrnVarR10 ))
D JvR10Key 10i 0 Inz( 10 )
D JvR10DtaLen 10i 0 Inz( %Size( JvR10Dta ))
D JvR10Dta 10a Inz( '*ALL' )
**-- USRPRF * *ALL
D JrnVarR11 Ds
D JvR11RcdLen 10i 0 Inz( %Size( JrnVarR11 ))
D JvR11Key 10i 0 Inz( 11 )
D JvR11DtaLen 10i 0 Inz( %Size( JvR11Dta ))
D JvR11Dta 10a Inz( '*ALL' )
**-- CMTCYCID - *ALL
D JrnVarR12 Ds
D JvR12RcdLen 10i 0 Inz( %Size( JrnVarR12 ))
D JvR12Key 10i 0 Inz( 12 )
D JvR12DtaLen 10i 0 Inz( %Size( JvR12Dta ))
D JvR12Dta 20a Inz( '*ALL' )
**-- DEPENT - *ALL, *NONE
D JrnVarR13 Ds
D JvR13RcdLen 10i 0 Inz( %Size( JrnVarR13 ))
D JvR13Key 10i 0 Inz( 13 )
D JvR13DtaLen 10i 0 Inz( %Size( JvR13Dta ))
D JvR13Dta 10a Inz( '*ALL' )
**-- INCENT - *CONFIRMED, *ALL
D JrnVarR14 Ds
D JvR14RcdLen 10i 0 Inz( %Size( JrnVarR14 ))
D JvR14Key 10i 0 Inz( 14 )
D JvR14DtaLen 10i 0 Inz( %Size( JvR14Dta ))
D JvR14Dta 10a Inz( '*CONFIRMED' )
**-- NULLINDLEN - *VARLEN
D JrnVarR15 Ds
D JvR15RcdLen 10i 0 Inz( %Size( JrnVarR15 ))
D JvR15Key 10i 0 Inz( 15 )
D JvR15DtaLen 10i 0 Inz( %Size( JvR15Dta ))
D JvR15Dta 10a Inz( '*VARLEN' )
**-- FILE - *ALLFILE, *ALL
D JrnVarR16 Ds
D JvR16RcdLen 10i 0 Inz( %Size( JrnVarR16 ))
D JvR16Key 10i 0 Inz( 16 )
D JvR16DtaLen 10i 0 Inz( %Size( JvR01Dta ))
D JvR16Dta
D JcNbrFil 10i 0 Overlay( JvR16Dta: 1 )
D JcFilNamQ 30a Overlay( JvR16Dta: *Next )
D Dim( 16 )
D JfFilNam 10a Overlay( JcFilNamQ: 1 )
D JfLibNam 10a Overlay( JcFilNamQ: *Next )
D JfMbrNam 10a Overlay( JcFilNamQ: *Next )
**-- Retrieve journal entries: -----------------------------------------**
D RtvJrnE Pr ExtProc( 'QjoRetrieveJournalEntries')
D RjRcvVar 32767a Options( *VarSize )
D RjRcvVarLen 10i 0 Const
D RjJrnNamQ 20a Const
D RjRcvInfFmt 8a Const
D RjSltInf 32767a Const Options( *NoPass: *VarSize )
D RjError 32767a Options( *NoPass: *VarSize )
**-- Delete pointer handle: --------------------------------------------**
D DltPtrHdl Pr ExtProc( 'QjoDeletePointerHandle' )
D DhPtrHdl 10u 0 Const
D DhError 32767a Options( *NoPass: *VarSize )
**-- Test bit in string: -----------------------------------------------**
D tstbts Pr 10i 0 ExtProc( 'tstbts' )
D String * Value
D BitOfs 10u 0 Value
**-- Convert date & time: ----------------------------------------------**
D CvtDtf Pr ExtPgm( 'QWCCVTDT' )
D CdInpFmt 10a Const
D CdInpVar 17a Const Options( *VarSize )
D CdOutFmt 10a Const
D CdOutVar 17a Options( *VarSize )
D CdError 10i 0 Const
**-- Convert IP address to xxx.xxx.xxx.xxx format -----------------------**
D INET_NTOA PR * EXTPROC('inet_ntoa')
D INTERNET_ADDR 10U 0 VALUE
D IPADR DS 4
D SIN_ADR 10U 0
*Array for contain EntTyp
D EntTypAry S 2 Dim(50)
D EntTypAryDs DS
D EntTypSiz 4B 0
D EntTypAryTmp 2 Dim(50)
**-- --**
D CVTJRNER Pr
D RCVRNAME 10a Const
D RCVRLIB 10a Const
D ENTTYPDS 102a Const
D CVTJRNER Pi
D RCVRNAME 10a Const
D RCVRLIB 10a Const
D ENTTYPDS 102a Const
**
**-- Mainline: ---------------------------------------------------------**
**
C Eval *InLr = *On
**-- Setup entry type selection criteria - replace values and number
**-- of values if applicable for your test purposes:
C Eval JvR01RcvStr = RCVRNAME
C Eval JvR01LibStr = RCVRLIB
C Eval JvR01RcvEnd = RCVRNAME
C Eval JvR01LibEnd = RCVRLIB
C Eval EntTypAryDs = ENTTYPDS
C For idx = 1 to EntTypSiz
C Eval EntTypAry(idx) = EntTypAryTmp(idx)
C EndFor
**
**-- Replace journal name and library if appropriate for your
**-- environment. Journal selection entries can be added and
**-- removed as necessary - just set JeNbrVarRcd accordingly:
C Eval JeNbrVarRcd = 2
**
C DoU JhConInd = '0' Or
C AeBytAvl > *Zero
**
C CallP RtvJrnE( JeRcvVar
C : %Size( JeRcvVar )
C : 'QAUDJRN *LIBL '
C : 'RJNE0200'
C : JrnEntRtv +
C JrnVarR01 +
C JrnVarR02
C : ApiError
C )
**
C If AeBytAvl = *Zero
C Eval pEntHdr = %Addr( JeRcvVar ) +
C JhOfsHdrJrnE
**
C For Idx = 1 to JhNbrEntRtv
**
C ExSr PrcLstEnt
**
C If JePtrHdl > *Zero
C CallP(e) DltPtrHdl( JePtrHdl )
C EndIf
**
C If Idx < JhNbrEntRtv
C Eval pEntHdr = pEntHdr + JeOfsHdrJrnE
C EndIf
**
C EndFor
**
C If JhConInd = '1'
C Eval JvR01RcvStr = JhConRcvStr
C Eval JvR01LibStr = JhConLibStr
C* Eval JvR01RcvEnd = '*CURRENT'
C Eval JvR02SeqNbr = JhConSeqNbr
C EndIf
C EndIf
**
C EndDo
**
C Eval *InLr = *On
C Return
**
**-- Process list entry: -----------------------------------------------**
C PrcLstEnt BegSr
**
C Eval JbRefCst = tstbts( %Addr( JeBitFld ): 0 )
C Eval JbTrg = tstbts( %Addr( JeBitFld ): 1 )
C Eval JbIncDta = tstbts( %Addr( JeBitFld ): 2 )
C Eval JbIgnApyRmvJ = tstbts( %Addr( JeBitFld ): 3 )
C Eval JbMinEntDta = tstbts( %Addr( JeBitFld ): 4 )
C Eval JbFilTypInd = tstbts( %Addr( JeBitFld ): 5 )
C Eval JbMinFldBnd = tstbts( %Addr( JeBitFld ): 6 )
**
C Eval pEntDta = pEntHdr + JeOfsEntDta
C Eval EntDta = %SubSt( JdEntDta
C : 1
C : JdEntDtaLen
C )
**
C If JeOfsNulValI > *Zero
C Eval pNulVal = pEntHdr + JeOfsNulValI
C EndIf
**
C If JeOfsLglUoW > *Zero
C Eval pLglUow = pEntHdr + JeOfsLglUoW
C EndIf
**
C If JeOfsRcvInf > *Zero
C Eval pRcvInf = pEntHdr + JeOfsRcvInf
C EndIf
**
C Eval JrnDta = EntDta
C
C JeEntTyp lookup EntTypAry(1) 99
C If EntTypAry(1) = '*A' or
C *In99 = *On
**
C CallP CvtDtf( '*DTS'
C : JeTimStpC
C : '*YYMD'
C : JrnEntDts
C : 0
C )
**
C eval SYSNAM = JeSysNam
C eval JRNSEQ = JeSeqNbr
C eval JRNCDE = JeJrnCde
C eval JRNENTTYP = JeEntTyp
C eval JOBNAM = JeJobNam
C eval USRNAM = JeUsrNam
C eval JOBNBR = JeJobNbr
C eval PGMNAM = JePgmNam
C eval PGMLIB = JePgmLib
C eval OBJECT = JeObject
C eval USRPRF = JeUsrPrf
C eval RCVNAM = JrRcvNam
C eval RCVLIB = JrRcvLib
C eval ADRFAM = JeAdrFam
C If JeRmtAdr = *ALLX'00'
C eval RMTADR = ' '
C Else
C eval IPADR = %SubSt(JeRmtAdr:13:4)
C eval RMTADR = %STR(INET_NTOA(SIN_ADR))
C EndIf
C eval RMTPORT= JeRmtPort
C eval ARMNBR = JeArmNbr
C eval PGMLIBASP =JePgmLibAsp
C eval PGMLIBASPD=JePgmLibAspDv
C eval OBJNAMID =JeObjNamInd
C eval OBJTYPE =JeObjTyp
C eval ENTDTALEN = JdEntDtaLen
C eval JRNENTDTA = ENTDTA
C write JRNRCVR
**
C EndIf
C EndSr
File : QCLSRC
Member: CVTJRNEC
Type : CLP
Usage : CRTCLPGM CVTJRNEC
/*-------------------------------------------------------------------*/
/* */
/* Program . . : CVTJRNEC */
/* Description : Convert journal entry to PF */
/* Author . . : Vengoal Chang */
/* Published . : AS400ePaper */
/* Date . . . : June 26, 2014 */
/* */
/* Program function: CVTJRNE command processing program */
/* */
/* */
/* Program summary */
/* --------------- */
/* */
/* */
/* */
/* Compile options: */
/* CrtClPgm Pgm( CVTJRNEC ) */
/* SrcFile( QCLSRC ) */
/* SrcMbr( *PGM ) */
/* */
/*-------------------------------------------------------------------*/
Pgm ( &QualRcvr +
&ToFile +
&EntTypDs +
)
/*-- Parameters: ---------------------------------------------------*/
Dcl &QualRcvr *Char 20
Dcl &ToFile *Char 20
Dcl &RcvrName *Char 10
Dcl &RcvrLib *Char 10
Dcl &RtnLib *Char 10
Dcl &ToFileName *Char 10
Dcl &ToFileLib *Char 10
Dcl &EntTypDs *Char 102
Dcl &NbrOfTypsC *Char 2
Dcl &NbrOfTyps *Dec (2 0)
/*-- Global error monitoring: --------------------------------------*/
MonMsg CPF0000 *N GoTo Error
ChgVar &RcvrName %SST(&QualRcvr 1 10)
ChgVar &RcvrLib %SST(&QualRcvr 11 10)
ChgVar &ToFileName %SST(&ToFile 1 10)
ChgVar &ToFileLib %SST(&ToFile 11 10)
ChgVar &NbrOfTypsC %SST(&EntTypDs 1 2)
ChgVar &NbrOfTyps %BIN(&NbrOfTypsC)
RtvObjD Obj(&RcvrLib/&RcvrName) +
ObjType(*JRNRCV) +
RtnLib(&RtnLib)
ChgVar &RcvrLib &RtnLib
DltF &ToFileLib/&ToFileName
MonMsg CPF0000
CrtDupObj Obj(JRNRCVRP) +
FromLib(*LIBL) +
ObjType(*FILE) +
ToLib(&ToFileLib) +
NewObj(&ToFileName) +
Cst(*NO) +
Trg(*NO)
OvrDbf File(JRNRCVRP) +
ToFile(&ToFileLib/&ToFileName) +
OvrScope(*JOB)
Call CVTJRNER ( &RcvrName &RcvrLib &EntTypDs)
DltOvr File(JRNRCVRP) Lvl(*JOB)
Return:
Return
/*-- Error handling: -----------------------------------------------*/
Error:
Call QMHMOVPM ( ' ' +
'*DIAG' +
x'00000001' +
'*PGMBDY' +
x'00000001' +
x'0000000800000000' +
)
Call QMHRSNEM ( ' ' +
x'0000000800000000' +
)
EndPgm:
EndPgm
File : QCMDSRC
Member: CVTJRNE
Type : CMD
Usage : CRTCMD CMD(CVTJRNE) PGM(CVTJRNEC)
/*-------------------------------------------------------------------*/
/* */
/* Command . . : CVTJRNE */
/* Description : Convert journal entry to PF */
/* Author . . : Vrngoal Chang */
/* Published . : AS400ePaper */
/* Date . . . : June 26, 2014 */
/* */
/* */
/* */
/* */
/* Programmer's notes: */
/* */
/* */
/* Compile options: */
/* */
/* CrtCmd Cmd( CVTJRNE ) */
/* Pgm( CVTJRNEC ) */
/* */
/*-------------------------------------------------------------------*/
Cmd Prompt( 'Convert journal entry to PF' )
Parm JRNRCVR Q0001 +
Min( 1 ) +
Choice( *NONE ) +
Prompt( 'Journal receiver' 1 )
Parm TOFILE Q0002 +
Min( 1 ) +
Choice( *NONE ) +
Prompt('To data base file' 2)
Parm KWD(ENTTYP) +
TYPE(*CHAR) +
LEN(2) +
DFT(*ALL) +
SPCVAL((*ALL '*A')) +
MAX(50) +
PROMPT('Journal entry types' 3)
Q0001: Qual *Name 10 +
Min( 1 ) +
Expr( *YES )
Qual Type(*Name) +
Len(10) +
Dft(*LIBL) +
SpcVal((*LIBL) (*CURLIB)) +
Expr(*YES) +
Prompt('Library')
Q0002: QUAL TYPE(*NAME) +
LEN(10) +
MIN(1) +
EXPR(*YES)
QUAL TYPE(*NAME) +
LEN(10) +
DFT(*LIBL) +
SPCVAL( +
(*LIBL ) +
(*CURLIB '*CURLIB ')) +
EXPR(*YES) +
PROMPT('Library')
A blog about IBM i (AS/400), MQ and other things developers or Admins need to know.
星期四, 11月 09, 2023
2014-10-22 如何將指定的 audit journal reveiver journal entry 轉換至於 PF(Command CVTJRNE with API QjoRetrieveJournalEntries)
星期三, 11月 08, 2023
2008-03-29 如何取得 Journal 的屬性?(Command RTVJRNA with API QjoRetrieveJournalInformation)
如何取得 Journal 的屬性?(Command RTVJRNA with API QjoRetrieveJournalInformation)
File : QCLSRC
Member : RTVJRNA
Type : CLLE
Usage : CRTBNDCL PGM(RTVJRNA)
/* =============================================================== */
/* = Command RtvJrnA CPP = */
/* = RtvJrnA CLLE = */
/* =============================================================== */
/* = Date : 2008/03/14 = */
/* = Author: Vengoal Chang = */
/* =============================================================== */
PGM PARM(&QUALJRN &RTNLIB &ASP &MSGQ &MSGQLIB &MNGRCV &DLTRCV +
&MNGRCVDLY &DLTRCVDLY &JRNTYP &JRNSTS &JRNDLVMODE +
&RCVSIZMFIX +
&RCVSIZRMVI +
&RCVSIZOPT1 +
&RCVSIZOPT2 +
&RCVSIZOPT3 +
&NBRRCV +
&ATCJRNRCV +
&ATCJRNRCVL +
&JRNCACHE +
&RMTJRNTYP +
&JRNOBJ +
&JRNOBJLMT +
&MINJRNENTD +
&MINJRNENTF +
&JRNRCVCNT +
&TEXT )
DCL VAR(&QUALJRN) TYPE(*CHAR) LEN(20)
DCL VAR(&JRNNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&JRNLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&RTNLIB) TYPE(*CHAR) LEN(10) /* STR LEN*/
DCL VAR(&ASP ) TYPE(*DEC ) LEN(3 0) /* 33 4*/
DCL VAR(&MSGQ ) TYPE(*CHAR) LEN(10) /* 37 10*/
DCL VAR(&MSGQLIB) TYPE(*CHAR) LEN(10) /* 47 10*/
DCL VAR(&MNGRCV ) TYPE(*CHAR) LEN(10) /* 57 1*/
DCL VAR(&DLTRCV ) TYPE(*CHAR) LEN( 4) /* 58 1*/
DCL VAR(&MNGRCVDLY) TYPE(*DEC) LEN(7 0) /* 257 4*/
DCL VAR(&DLTRCVDLY) TYPE(*DEC) LEN(7 0) /* 261 4*/
DCL VAR(&JRNTYP ) TYPE(*CHAR) LEN(10) /* 66 1*/
DCL VAR(&JRNSTS ) TYPE(*CHAR) LEN(10) /* 68 1*/
DCL VAR(&JRNDLVMODE) TYPE(*CHAR) LEN(10) /* 69 1*/
DCL VAR(&RCVSIZMFIX) TYPE(*CHAR) LEN( 4) /* 60 1*/
DCL VAR(&RCVSIZRMVI) TYPE(*CHAR) LEN( 4) /* 59 1*/
DCL VAR(&RCVSIZOPT1) TYPE(*CHAR) LEN( 4) /* 61 1*/
DCL VAR(&RCVSIZOPT2) TYPE(*CHAR) LEN( 4) /* 62 1*/
DCL VAR(&RCVSIZOPT3) TYPE(*CHAR) LEN( 4) /* 63 1*/
DCL VAR(&NBRRCV ) TYPE(*DEC ) LEN(5 0) /* 197 4*/
DCL VAR(&ATCJRNRCV ) TYPE(*CHAR) LEN(10) /* 201 10*/
DCL VAR(&ATCJRNRCVL) TYPE(*CHAR) LEN(10) /* 211 10*/
DCL VAR(&JRNCACHE ) TYPE(*CHAR) LEN( 4) /* 196 1*/
DCL VAR(&RMTJRNTYP ) TYPE(*CHAR) LEN(10) /* 67 1*/
DCL VAR(&JRNOBJ ) TYPE(*DEC ) LEN(15 0)/* 309 4*/
DCL VAR(&JRNOBJLMT ) TYPE(*CHAR) LEN(1) /* 308 1*/
DCL VAR(&MINJRNENTD) TYPE(*CHAR) LEN(1) /* 186 1*/
DCL VAR(&MINJRNENTF) TYPE(*CHAR) LEN(1) /* 187 1*/
DCL VAR(&JRNRCVCNT ) TYPE(*DEC ) LEN(11 0)/* 341 4*/
DCL VAR(&TEXT ) TYPE(*CHAR) LEN(50) /* 136 50*/
DCL VAR(&WORK) TYPE(*CHAR) LEN(4)
DCL VAR(&RCVRNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&RCVRLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&RCV) TYPE(*CHAR) LEN(512)
DCL VAR(&RCVLEN) TYPE(*CHAR) LEN(4)
DCL VAR(&JRNRCV) TYPE(*CHAR) LEN(20)
DCL VAR(&SEQNBR) TYPE(*CHAR) LEN(20)
DCL VAR(&RCVRINFO) TYPE(*CHAR) LEN(20)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(256)
DCL VAR(&MSGF) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGTXT) TYPE(*CHAR) LEN(256)
MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO CMDLBL(ERROR))
CHGVAR VAR(&JRNNAME) VALUE(%SST(&QUALJRN 1 10))
CHGVAR VAR(&JRNLIB) VALUE(%SST(&QUALJRN 11 10))
CHKOBJ OBJ(&JRNLIB/&JRNNAME) OBJTYPE(*JRN)
IF (&JRNLIB *EQ '*LIBL') Do
RTVOBJD OBJ(&JRNLIB/&JRNNAME) OBJTYPE(*JRN) +
RTNLIB(&RTNLIB)
MONMSG MCH3601
EndDo
Else Do
CHGVAR VAR(&RTNLIB) VALUE(&JRNLIB)
MONMSG MCH3601
EndDo
CHGVAR VAR( %bin(&RCVLEN )) VALUE(512)
CHGVAR %SST(&RCVRINFO 1 10) &JRNNAME
CHGVAR %SST(&RCVRINFO 11 10) &JRNLIB
CALLPRC PRC('QjoRetrieveJournalInformation') +
PARM((&RCV) (&RCVLEN) (&RCVRINFO) +
('RJRN0100') (X'00000000') +
(*OMIT))
/* ASP */
CHGVAR VAR(&JRNRCV) VALUE(%SST(&RCV 201 20))
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 33 4))
CHGVAR VAR(&ASP) VALUE(%BIN(&WORK))
MONMSG MCH3601
CHGVAR VAR(&MSGQ ) VALUE(%SST(&RCV 37 10))
MONMSG MCH3601
CHGVAR VAR(&MSGQLIB) VALUE(%SST(&RCV 47 10))
MONMSG MCH3601
CHGVAR VAR(&ATCJRNRCV) VALUE(%SST(&RCV 201 10))
MONMSG MCH3601
CHGVAR VAR(&ATCJRNRCVL) VALUE(%SST(&RCV 211 10))
MONMSG MCH3601
CHGVAR VAR(&ATCJRNRCVL) VALUE(%SST(&RCV 211 10))
MONMSG MCH3601
CHGVAR VAR(&JRNOBJLMT ) VALUE(%SST(&RCV 308 1))
MONMSG MCH3601
CHGVAR VAR(&MINJRNENTD) VALUE(%SST(&RCV 186 1))
MONMSG MCH3601
CHGVAR VAR(&MINJRNENTF) VALUE(%SST(&RCV 187 1))
MONMSG MCH3601
/* MNGRCV ' ' remote journal */
/* '0' user manage */
/* '1' system manage */
If (%SST(&RCV 57 1 ) *EQ '1') Do
CHGVAR VAR(&MNGRCV ) VALUE('*SYSTEM')
MONMSG MCH3601
EndDo
If (%SST(&RCV 57 1 ) *EQ '0') Do
CHGVAR VAR(&MNGRCV ) VALUE('*USER')
MONMSG MCH3601
EndDo
If (%SST(&RCV 57 1 ) *EQ ' ') Do
CHGVAR VAR(&MNGRCV ) VALUE(' ')
MONMSG MCH3601
EndDo
If (%SST(&RCV 58 1 ) *EQ '1') Do
CHGVAR VAR(&DLTRCV ) VALUE('*YES')
MONMSG MCH3601
EndDo
Else Do
CHGVAR VAR(&DLTRCV ) VALUE('*NO')
MONMSG MCH3601
EndDo
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 257 4))
CHGVAR VAR(&MNGRCVDLY) VALUE(%BIN(&WORK))
MONMSG MCH3601
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 261 4))
CHGVAR VAR(&DLTRCVDLY) VALUE(%BIN(&WORK))
MONMSG MCH3601
/* Journal type */
If (%SST(&RCV 66 1 ) *EQ '1') Do
CHGVAR VAR(&JRNTYP ) VALUE('*REMOTE')
MONMSG MCH3601
EndDo
Else Do
CHGVAR VAR(&JRNTYP ) VALUE('*LOCAL')
MONMSG MCH3601
EndDo
/* Journal state */
If (%SST(&RCV 68 1 ) *EQ '0') Do
CHGVAR VAR(&JRNSTS ) VALUE('*INACTIVE')
MONMSG MCH3601
EndDo
If (%SST(&RCV 68 1 ) *EQ '1') Do
CHGVAR VAR(&JRNSTS ) VALUE('*ACTIVE')
MONMSG MCH3601
EndDo
If (%SST(&RCV 68 1 ) *EQ '2') Do
CHGVAR VAR(&JRNSTS ) VALUE('*FAILED')
MONMSG MCH3601
EndDo
If (%SST(&RCV 68 1 ) *EQ '4') Do
CHGVAR VAR(&JRNSTS ) VALUE('*INACTPEND')
MONMSG MCH3601
EndDo
If (%SST(&RCV 68 1 ) *EQ '5') Do
CHGVAR VAR(&JRNSTS ) VALUE('*STANDBY')
MONMSG MCH3601
EndDo
/* Journal delivery mode */
If (%SST(&RCV 69 1 ) *EQ '0') Do
CHGVAR VAR(&JRNDLVMODE) VALUE('*NA' )
MONMSG MCH3601
EndDo
If (%SST(&RCV 69 1 ) *EQ '1') Do
CHGVAR VAR(&JRNDLVMODE) VALUE('*ASYNC')
MONMSG MCH3601
EndDo
If (%SST(&RCV 69 1 ) *EQ '2') Do
CHGVAR VAR(&JRNDLVMODE) VALUE('*SYNC')
MONMSG MCH3601
EndDo
If (%SST(&RCV 69 1 ) *EQ '3') Do
CHGVAR VAR(&JRNDLVMODE) VALUE('*ASYNCPEND')
MONMSG MCH3601
EndDo
If (%SST(&RCV 69 1 ) *EQ '4') Do
CHGVAR VAR(&JRNDLVMODE) VALUE('*SYNCPEND')
MONMSG MCH3601
EndDo
/* Receiver size option *RMVINTENT */
If (%SST(&RCV 59 1 ) *EQ '1') Do
CHGVAR VAR(&RCVSIZRMVI ) VALUE('*YES')
MONMSG MCH3601
EndDo
Else Do
CHGVAR VAR(&RCVSIZRMVI ) VALUE('*NO')
MONMSG MCH3601
EndDo
/* Receiver size option *MINFIXLEN */
If (%SST(&RCV 60 1 ) *EQ '1') Do
CHGVAR VAR(&RCVSIZMFIX ) VALUE('*YES')
MONMSG MCH3601
EndDo
Else Do
CHGVAR VAR(&RCVSIZMFIX ) VALUE('*NO')
MONMSG MCH3601
EndDo
/* Receiver size option *MAXOPT1 */
If (%SST(&RCV 61 1 ) *EQ '1') Do
CHGVAR VAR(&RCVSIZOPT1 ) VALUE('*YES')
MONMSG MCH3601
EndDo
Else Do
CHGVAR VAR(&RCVSIZOPT1 ) VALUE('*NO')
MONMSG MCH3601
EndDo
/* Receiver size option *MAXOPT2 */
If (%SST(&RCV 62 1 ) *EQ '1') Do
CHGVAR VAR(&RCVSIZOPT2 ) VALUE('*YES')
MONMSG MCH3601
EndDo
Else Do
CHGVAR VAR(&RCVSIZOPT2 ) VALUE('*NO')
MONMSG MCH3601
EndDo
/* Receiver size option *MAXOPT3 */
If (%SST(&RCV 63 1 ) *EQ '1') Do
CHGVAR VAR(&RCVSIZOPT3 ) VALUE('*YES')
MONMSG MCH3601
EndDo
Else Do
CHGVAR VAR(&RCVSIZOPT3 ) VALUE('*NO')
MONMSG MCH3601
EndDo
/* Number of receiver */
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 197 4))
CHGVAR VAR(&NBRRCV ) VALUE(%BIN(&WORK))
MONMSG MCH3601
/* Journal cache */
/* ' ' remote journal */
/* '0' no cache */
/* '1' cache */
If (%SST(&RCV 196 1 ) *EQ ' ') Do
CHGVAR VAR(&JRNCACHE) VALUE('*NA' )
MONMSG MCH3601
EndDo
If (%SST(&RCV 196 1 ) *EQ '1') Do
CHGVAR VAR(&JRNCACHE) VALUE('*YES')
MONMSG MCH3601
EndDo
If (%SST(&RCV 196 1 ) *EQ '0') Do
CHGVAR VAR(&JRNCACHE ) VALUE('*NO')
MONMSG MCH3601
EndDo
/* Remote journal type */
If (%SST(&RCV 67 1 ) *EQ '0') Do
CHGVAR VAR(&RMTJRNTYP) VALUE('*LOCAL')
MONMSG MCH3601
EndDo
If (%SST(&RCV 67 1 ) *EQ '1') Do
CHGVAR VAR(&RMTJRNTYP) VALUE('*TYPE1')
MONMSG MCH3601
EndDo
If (%SST(&RCV 67 1 ) *EQ '2') Do
CHGVAR VAR(&RMTJRNTYP) VALUE('*TYPE2')
MONMSG MCH3601
EndDo
/* Number of object journaled */
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 309 4))
CHGVAR VAR(&JRNOBJ ) VALUE(%BIN(&WORK))
MONMSG MCH3601
/* Journal recovery count from V5R4 */
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 341 4))
CHGVAR VAR(&JRNRCVCNT) VALUE(%BIN(&WORK))
MONMSG MCH3601
Return
/* =============================================================== */
/* = Error routine = */
/* =============================================================== */
Error:
RcvMsg MsgType( *Excp ) +
MsgDta( &MsgDta ) +
MsgID( &MsgID ) +
MsgF( &MsgF ) +
MsgFLib( &MsgFLib )
MonMsg ( CPF0000 MCH0000 )
SndMsg:
SndPgmMsg MsgID( &MsgID ) +
MsgF( &MsgFLib/&MsgF ) +
MsgDta( &MsgDta ) +
MsgType( *Escape )
MonMsg ( CPF0000 MCH0000 )
/* =============================================================== */
/* = End of program = */
/* =============================================================== */
ENDPGM
File : QCMDSRC
Member : RTVJRNA
Type : CMD
Usage : CRTCMD CMD(your-lib/RTVJRNA) PGM(your-lib/RTVJRNA) ALLOW(*IPGM *BPGM)
/* =============================================================== */
/* = Command....... RtvJrnA = */
/* = CPP........... RtvJrnA CLLE = */
/* = Description... Retrieve journal attributes = */
/* = = */
/* = CrtCmd Cmd( RtvJrnA ) = */
/* = Pgm( RtvJrnA ) = */
/* = Pgm( RtvJrnA ) = */
/* = SrcFile( YourSourceFile ) = */
/* = Allow(*Ipgm *Bpgm) = */
/* =============================================================== */
/* = Date : 2008/03/14 = */
/* = Author: Vengoal Chang = */
/* =============================================================== */
/* = Parameter Description = */
/* = JRN The qualified name of the journal to be retrieved*/
/* = RTNLIB The library containing the journal. = */
/* = ASP The Auxiliary Storage pool containing the = */
/* = journal. = */
/* = MSGQ The Message Queue where messages from the = */
/* = journal sent.such as if the threshold has = */
/* = been reached. = */
/* = MSGQLIB The Message Queue Library where messages from = */
/* = the journal are sent such as if the threshold = */
/* = has been reached. = */
/* = MNGRCV The Manage Receiver option as specified on = */
/* = CRTJRN. Either *USER or *SYSTEM is returned. = */
/* = DLTRCV The Delete Receiver option as specified on = */
/* = CRTJRN. Either *NO or *YES is returned. = */
/* = MNGRCVDLY The time in minutes to be used to delay the = */
/* = attempt to delete a journal receiver, if the = */
/* = system cannot allocate it and DLTRCV(*YES) = */
/* = is specified. = */
/* = DLTRCVDLY The time in minutes to be used to delay the = */
/* = next attempt to attach a new journal receiver = */
/* = for system managed receivers. = */
/* = JRNTYP The type of journal. = */
/* = *LOCAL or *REMOTE is returned. = */
/* = JRNSTS The status of the journal. = */
/* = *INACTIVE, *ACTIVE, *FAILED, or *INACTPEND = */
/* = will be returned. = */
/* = JRNDLVMODE The delivery mode of the journal. = */
/* = *NA if it is not applicable, such as local = */
/* = journal. = */
/* = *ASYNC, *SYNC, *ASYNCPEND, and *SYNCPEND will = */
/* = will be returned for remote journal. = */
/* = RCVSIZMFIX The CRTJRN RCVSIZOPT(*MINFIXLEN) option. = */
/* = Blank is returned for remote journal. = */
/* = *YES or *NO is returned depending on whether = */
/* = *MINFIXLEN was specified. = */
/* = RCVSIZRMVI The CRTJRN RCVSIZOPT(*RMVINTENT) option. = */
/* = Blank is returned for remote journal. = */
/* = *YES or *NO is returned depending on whether = */
/* = *RMVINTENT was specified. = */
/* = RCVSIZOPT1 The CRTJRN RCVSIZOPT(*MAXOPT1) option. = */
/* = Blank is returned for remote journal. = */
/* = *YES or *NO is returned depending on whether = */
/* = *MAXOPT1 was specified. = */
/* = RCVSIZOPT2 The CRTJRN RCVSIZOPT(*MAXOPT2) option. = */
/* = Blank is returned for remote journal. = */
/* = *YES or *NO is returned depending on whether = */
/* = *MAXOPT2 was specified. = */
/* = RCVSIZOPT3 The CRTJRN RCVSIZOPT(*MAXOPT3) option. = */
/* = Blank is returned for remote journal. = */
/* = *YES or *NO is returned depending on whether = */
/* = *MAXOPT3 was specified. = */
/* = NBRRCV The number of receivers currently attached. = */
/* = ACTJRNRCV The name of the current attached journal = */
/* = receiver. = */
/* = ACTJRNRCVL The name of the library of the attached = */
/* = journal receiver. = */
/* = JRNCACHE Whether journal entries will be cached, before= */
/* = being written out to disk. = */
/* = *NA for remote journal, *YES, *NO will be = */
/* = returned. = */
/* = RMTJRNTYP The type of Remote Journal. *LOCAL, *TYPE1 = */
/* = or *TYPE2 will be returned. = */
/* = JRNOBJ The total number of objects being journaled = */
/* = to the journal. = */
/* = JRNOBJLMT The maximum number of objects that may be = */
/* = journaled to the journal.(From V5R4) = */
/* = MINJRNENTD Whether journal entries to data areas will be = */
/* = minimized in size. = */
/* = MINJRNENTF Whether journal entries to files will be = */
/* = minimized in size. = */
/* = JRNRCVCNT Journal recovery count (From V5R4) = */
/* = Describes whether a faster abnormal IPL will = */
/* = occur. = */
/* = TEXT The text description of the Journal. = */
/* = = */
/* =============================================================== */
CMD PROMPT('Retrieve Journal Attributes')
PARM KWD(JRN) TYPE(QUAL) MIN(1) +
PROMPT('Journal')
PARM KWD(RTNLIB) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
PROMPT('CL var for RTNLIB (10)')
PARM KWD(ASP) TYPE(*DEC) LEN(3 0) RTNVAL(*YES) +
PROMPT('CL var for ASP (3 0)')
PARM KWD(MSGQ ) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
PROMPT('CL var for MSGQ (10)')
PARM KWD(MSGQLIB) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) PROMPT('CL var for +
MSGQLIB (10)')
PARM KWD(MNGRCV ) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) PROMPT('CL var for +
MNGRCV (10)')
PARM KWD(DLTRCV) TYPE(*CHAR) LEN( 4) RTNVAL(*YES) +
PROMPT('CL var for DLTRCV (10)')
PARM KWD(MNGRCVDLY) TYPE(*DEC) LEN( 7 0) +
RTNVAL(*YES) PROMPT('CL var for +
MNGRCVDLY (15 0)')
PARM KWD(DLTRCVDLY) TYPE(*DEC) LEN( 7 0) +
RTNVAL(*YES) PROMPT('CL var for +
DLTRCVDLY (15 0)')
PARM KWD(JRNTYP ) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) PROMPT('CL var for +
JRNTYP (10)')
PARM KWD(JRNSTS ) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) PROMPT('CL var for +
JRNSTS (10)')
PARM KWD(JRNDLVMODE ) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) PROMPT('CL var for +
JRNDLVMODE (10)')
PARM KWD(RCVSIZMFIX ) TYPE(*CHAR) LEN( 4) +
RTNVAL(*YES) PROMPT('CL var for +
RCVSIZMFIX ( 4)')
PARM KWD(RCVSIZRMVI ) TYPE(*CHAR) LEN( 4) +
RTNVAL(*YES) PROMPT('CL var for +
RCVSIZRMVI ( 4)')
PARM KWD(RCVSIZOPT1 ) TYPE(*CHAR) LEN( 4) +
RTNVAL(*YES) PROMPT('CL var for +
RCVSIZOPT1 ( 4)')
PARM KWD(RCVSIZOPT2 ) TYPE(*CHAR) LEN( 4) +
RTNVAL(*YES) PROMPT('CL var for +
RCVSIZOPT2 ( 4)')
PARM KWD(RCVSIZOPT3 ) TYPE(*CHAR) LEN( 4) +
RTNVAL(*YES) PROMPT('CL var for +
RCVSIZOPT3 ( 4)')
PARM KWD(NBRRCV ) TYPE(*DEC) LEN( 5 0) +
RTNVAL(*YES) PROMPT('CL var for +
NBRRCV (5 0)')
PARM KWD(ACTJRNRCV ) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) PROMPT('CL var for +
ACTJRNRCV (10)')
PARM KWD(ACTJRNRCVL) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) PROMPT('CL var for +
ACTJRNRCVL (10)')
PARM KWD(JRNCACHE ) TYPE(*CHAR) LEN( 4) +
RTNVAL(*YES) PROMPT('CL var for +
JRNCACHE ( 4)')
PARM KWD(RMTJRNTYP ) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) PROMPT('CL var for +
RMTJRNTYP (10)')
PARM KWD(JRNOBJ ) TYPE(*DEC) LEN(15 0) +
RTNVAL(*YES) PROMPT('CL var for +
JRNOBJ (15 0)')
PARM KWD(JRNOBJLMT ) TYPE(*CHAR) LEN( 1) +
RTNVAL(*YES) PROMPT('CL var for +
JRNOBJLMT ( 1)')
PARM KWD(MINJRNENTD ) TYPE(*CHAR) LEN( 1) +
RTNVAL(*YES) PROMPT('CL var for +
MINJRNENTD ( 1)')
PARM KWD(MINJRNENTF ) TYPE(*CHAR) LEN( 1) +
RTNVAL(*YES) PROMPT('CL var for +
MINJRNENTF ( 1)')
PARM KWD(JRNRCVCNT) TYPE(*DEC) LEN(11 0) +
RTNVAL(*YES) PROMPT('CL var for +
JRNRCVCNT (11 0)')
PARM KWD(TEXT ) TYPE(*CHAR) LEN(50) +
RTNVAL(*YES) PROMPT('CL var for +
TEXT (50)')
QUAL: QUAL TYPE(*NAME) LEN(10) SPCVAL((*ALL)) EXPR(*YES)
QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) +
SPCVAL((*LIBL) (*CURLIB)) EXPR(*YES) +
PROMPT('Library')
File : QCLSRC
Member : RTVJRNAT
Type : CLP
Usage : 測試程式
CRTCLPGM RTVJRNAT
CALL RTVJRNRCVT
PGM
DCL VAR(&JRNNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&JRNLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&RTNLIB) TYPE(*CHAR) LEN(10) /*STR LEN*/
DCL VAR(&ASP ) TYPE(*DEC ) LEN(3 0) /* 33 4*/
DCL VAR(&MSGQ ) TYPE(*CHAR) LEN(10) /* 37 10*/
DCL VAR(&MSGQLIB) TYPE(*CHAR) LEN(10) /* 47 10*/
DCL VAR(&MNGRCV ) TYPE(*CHAR) LEN(10) /* 57 1*/
DCL VAR(&DLTRCV ) TYPE(*CHAR) LEN( 4) /* 58 1*/
DCL VAR(&MNGRCVDLY) TYPE(*DEC) LEN(7 0) /* 257 4*/
DCL VAR(&DLTRCVDLY) TYPE(*DEC) LEN(7 0) /* 261 4*/
DCL VAR(&JRNTYP ) TYPE(*CHAR) LEN(10)/* 66 1*/
DCL VAR(&JRNSTS ) TYPE(*CHAR) LEN(10)/* 68 1*/
DCL VAR(&JRNDLVMODE) TYPE(*CHAR) LEN(10)/* 69 1*/
DCL VAR(&RCVSIZMFIX) TYPE(*CHAR) LEN( 4)/* 60 1*/
DCL VAR(&RCVSIZRMVI) TYPE(*CHAR) LEN( 4)/* 59 1*/
DCL VAR(&RCVSIZOPT1) TYPE(*CHAR) LEN( 4)/* 61 1*/
DCL VAR(&RCVSIZOPT2) TYPE(*CHAR) LEN( 4)/* 62 1*/
DCL VAR(&RCVSIZOPT3) TYPE(*CHAR) LEN( 4)/* 63 1*/
DCL VAR(&NBRRCV ) TYPE(*DEC ) LEN(5 0)/* 197 4*/
DCL VAR(&ATCJRNRCV ) TYPE(*CHAR) LEN(10)/* 201 10*/
DCL VAR(&ATCJRNRCVL) TYPE(*CHAR) LEN(10)/* 211 10*/
DCL VAR(&JRNCACHE ) TYPE(*CHAR) LEN( 4)/* 196 1*/
DCL VAR(&RMTJRNTYP ) TYPE(*CHAR) LEN(10)/* 67 1*/
DCL VAR(&JRNOBJ ) TYPE(*DEC ) LEN(15 0)/* 309 4*/
DCL VAR(&JRNOBJLMT ) TYPE(*CHAR) LEN(1) /* 308 1*/
DCL VAR(&MINJRNENTD) TYPE(*CHAR) LEN(1) /* 186 1*/
DCL VAR(&MINJRNENTF) TYPE(*CHAR) LEN(1) /* 187 1*/
DCL VAR(&JRNRCVCNT ) TYPE(*DEC ) LEN(11 0) /* 341 4*/
DCL VAR(&TEXT ) TYPE(*CHAR) LEN(50) /* 136 50*/
RTVJRNA JRN(QAUDJRN) RTNLIB(&RTNLIB) ASP(&ASP) +
MSGQ(&MSGQ) MSGQLIB(&MSGQLIB) +
MNGRCV(&MNGRCV) DLTRCV(&DLTRCV) +
MNGRCVDLY(&MNGRCVDLY) +
DLTRCVDLY(&DLTRCVDLY) JRNTYP(&JRNTYP) +
JRNSTS(&JRNSTS) JRNDLVMODE(&JRNDLVMODE) +
RCVSIZMFIX(&RCVSIZMFIX) +
RCVSIZRMVI(&RCVSIZRMVI) +
RCVSIZOPT1(&RCVSIZOPT1) +
RCVSIZOPT2(&RCVSIZOPT2) +
RCVSIZOPT3(&RCVSIZOPT3) NBRRCV(&NBRRCV) +
ACTJRNRCV(&ATCJRNRCV) +
ACTJRNRCVL(&ATCJRNRCVL) +
JRNCACHE(&JRNCACHE) RMTJRNTYP(&RMTJRNTYP) +
JRNOBJ(&JRNOBJ) JRNOBJLMT(&JRNOBJLMT) +
MINJRNENTD(&MINJRNENTD) +
MINJRNENTF(&MINJRNENTF) +
JRNRCVCNT(&JRNRCVCNT) TEXT(&TEXT)
DMPCLPGM
ENDPGM
2008-03-28 如何取得 Journal Receiver 的屬性?(Command RTVJRNRCVA with API QjoRtvJrnReceiverInformation)
如何取得 Journal Receiver 的屬性?(Command RTVJRNRCVA with API QjoRtvJrnReceiverInformation)
如何取得 Journal Receiver 的屬性?(Command RTVJRNRCVA with API QjoRtvJrnReceiverInformation)
File : QCLSRC
Member : RTVJRNRCVA
Type : CLLE
Usage : CRTBNDCL PGM(RTVJRNRCVA)
/* =============================================================== */
/* = Command RtvJrnRcvA CPP = */
/* = RtvJrnRcvA CLLE = */
/* =============================================================== */
/* = Date : 2008/03/14 = */
/* = Author: Vengoal Chang = */
/* =============================================================== */
PGM PARM(&QUALRCVR &RTNLIB &STATUS &ASP &THRESHOLD &SIZE &NBRENTP +
&MAXNULIND &MAXENTLEN &MAXENTLENP &RCVMAXOPT +
&FSTSEQNBRP &LSTSEQNBRP &ACTDATTIM &DACTDATTIM &SAVDATTIM +
&JRNNAME &JRNLIB &TEXT)
DCL VAR(&QUALRCVR) TYPE(*CHAR) LEN(20)
DCL VAR(&RCVRNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&RCVRLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&RTNLIB ) TYPE(*CHAR) LEN(10)
DCL VAR(&JRNNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&JRNLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&THRESHOLD) TYPE(*DEC) LEN( 7 0)
DCL VAR(&SIZE) TYPE(*DEC) LEN( 7 0)
DCL VAR(&ASP ) TYPE(*DEC) LEN(3 0)
DCL VAR(&NBRENT ) TYPE(*DEC) LEN(10 0)
DCL VAR(&NBRENTP ) TYPE(*DEC) LEN(15 0)
DCL VAR(&NBRENT2 ) TYPE(*CHAR) LEN(20)
DCL VAR(&MAXENTLEN) TYPE(*DEC) LEN( 7 0)
DCL VAR(&MAXENTLENP) TYPE(*DEC) LEN(15 0)
DCL VAR(&MAXENTLEN2) TYPE(*CHAR) LEN(20)
DCL VAR(&MAXNULIND) TYPE(*DEC) LEN(15 0)
DCL VAR(&MINDTAARA) TYPE(*CHAR) LEN(1)
DCL VAR(&MINDTAFLE) TYPE(*CHAR) LEN(1)
DCL VAR(&RCVMAXOPT) TYPE(*CHAR) LEN(1)
DCL VAR(&FSTSEQNBR) TYPE(*DEC) LEN(15 0)
DCL VAR(&LSTSEQNBR) TYPE(*DEC) LEN(15 0)
DCL VAR(&FSTSEQNBRP) TYPE(*DEC) LEN(15 0)
DCL VAR(&FSTSEQNBRL) TYPE(*CHAR) LEN(20)
DCL VAR(&LSTSEQNBRP) TYPE(*DEC) LEN(15 0)
DCL VAR(&LSTSEQNBRL) TYPE(*CHAR) LEN(20)
DCL VAR(&STATUS) TYPE(*CHAR) LEN(1)
/* 1 *ATTACHED Currently attached */
/* 2 *ONLINE On line, detached, but not saved */
/* 3 *SAVED On line, detached, and saved */
/* 4 *FREED On line, detached, saved and stg freed */
/* 5 *PARTIAL See note */
/* 6 *EMPTY Never attached */
DCL VAR(&ACTDATTIM) TYPE(*CHAR) LEN(13)
/* CYYMMDDHHMMSS */
DCL VAR(&DACTDATTIM) TYPE(*CHAR) LEN(13)
DCL VAR(&SAVDATTIM) TYPE(*CHAR) LEN(13)
DCL VAR(&TEXT) TYPE(*CHAR) LEN(50)
DCL VAR(&RCV) TYPE(*CHAR) LEN(512)
DCL VAR(&RCVLEN) TYPE(*CHAR) LEN(4)
DCL VAR(&JRNRCV) TYPE(*CHAR) LEN(20)
DCL VAR(&FSTSEQNBRC) TYPE(*CHAR) LEN(20)
DCL VAR(&LSTSEQNBRC) TYPE(*CHAR) LEN(20)
DCL VAR(&RCVRINFO) TYPE(*CHAR) LEN(20)
DCL VAR(&WORK) TYPE(*CHAR) LEN(4)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(256)
DCL VAR(&MSGF) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGTXT) TYPE(*CHAR) LEN(256)
MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO CMDLBL(ERROR))
CHGVAR VAR(&RCVRNAME) VALUE(%SST(&QUALRCVR 1 10))
CHGVAR VAR(&RCVRLIB ) VALUE(%SST(&QUALRCVR 11 10))
CHKOBJ OBJ(&RCVRLIB/&RCVRNAME) OBJTYPE(*JRNRCV)
If (&RCVRLIB *EQ '*LIBL') Do
RTVOBJD OBJ(&RCVRLIB/&RCVRNAME) OBJTYPE(&JRNRCV) +
RTNLIB(&RTNLIB)
MONMSG MCH3601
EndDo
Else Do
CHGVAR VAR(&RTNLIB) VALUE(&RCVRLIB)
MONMSG MCH3601
EndDo
CHGVAR VAR(%BIN(&RCVLEN)) VALUE(512)
CHGVAR VAR(&JRNRCV) VALUE(&RCVRNAME *CAT &RCVRLIB)
CALLPRC PRC('QjoRtvJrnReceiverInformation') +
PARM((&RCV) (&RCVLEN) (&JRNRCV) +
('RRCV0100') (*OMIT))
CHGVAR VAR(&JRNNAME) VALUE(%SST(&RCV 29 10))
MONMSG MCH3601
CHGVAR VAR(&JRNLIB) VALUE(%SST(&RCV 39 10))
MONMSG MCH3601
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 49 4))
CHGVAR VAR(&THRESHOLD) VALUE(%BIN(&WORK))
MONMSG MCH3601
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 53 4))
CHGVAR VAR(&SIZE) VALUE(%BIN(&WORK))
MONMSG MCH3601
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 57 4))
CHGVAR VAR(&ASP) VALUE(%BIN(&WORK))
MONMSG MCH3601
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 61 4))
CHGVAR VAR(&NBRENT) VALUE(%BIN(&WORK))
MONMSG MCH3601
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 65 4))
CHGVAR VAR(&MAXENTLEN) VALUE(%BIN(&WORK))
MONMSG MCH3601
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 69 4))
CHGVAR VAR(&MAXNULIND) VALUE(%BIN(&WORK))
MONMSG MCH3601
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 73 4))
CHGVAR VAR(&FSTSEQNBR) VALUE(%BIN(&WORK))
CHGVAR VAR(&MINDTAARA) VALUE(%SST(&RCV 77 1))
CHGVAR VAR(&MINDTAFLE) VALUE(%SST(&RCV 78 1))
CHGVAR VAR(&WORK) VALUE(%SST(&RCV 81 4))
CHGVAR VAR(&LSTSEQNBR) VALUE(%BIN(&WORK))
CHGVAR VAR(&STATUS) VALUE(%SST(&RCV 89 1))
MONMSG MCH3601
CHGVAR VAR(&RCVMAXOPT) VALUE(%SST(&RCV 89 1))
MONMSG MCH3601
CHGVAR VAR(&ACTDATTIM) VALUE(%SST(&RCV 96 13))
MONMSG MCH3601
CHGVAR VAR(&DACTDATTIM) VALUE(%SST(&RCV 109 13))
MONMSG MCH3601
CHGVAR VAR(&SAVDATTIM) VALUE(%SST(&RCV 122 13))
MONMSG MCH3601
CHGVAR VAR(&NBRENT2) VALUE(%SST(&RCV 373 20))
CHGVAR VAR(&NBRENTP) VALUE(&NBRENT2)
MONMSG MCH3601
CHGVAR VAR(&MAXENTLEN2) VALUE(%SST(&RCV 393 20))
CHGVAR VAR(&MAXENTLENP) VALUE(&MAXENTLEN2)
MONMSG MCH3601
CHGVAR VAR(&FSTSEQNBRL) VALUE(%SST(&RCV 413 20))
CHGVAR VAR(&FSTSEQNBRP) VALUE(&FSTSEQNBRL)
MONMSG MCH3601
CHGVAR VAR(&LSTSEQNBRL) VALUE(%SST(&RCV 433 20))
CHGVAR VAR(&LSTSEQNBRP) VALUE(&LSTSEQNBRL)
MONMSG MCH3601
CHGVAR VAR(&TEXT) VALUE(%SST(&RCV 135 50))
MONMSG MCH3601
Return
/* =============================================================== */
/* = Error routine = */
/* =============================================================== */
Error:
RcvMsg MsgType( *Excp ) +
MsgDta( &MsgDta ) +
MsgID( &MsgID ) +
MsgF( &MsgF ) +
MsgFLib( &MsgFLib )
MonMsg ( CPF0000 MCH0000 )
SndMsg:
SndPgmMsg MsgID( &MsgID ) +
MsgF( &MsgFLib/&MsgF ) +
MsgDta( &MsgDta ) +
MsgType( *Escape )
MonMsg ( CPF0000 MCH0000 )
/* =============================================================== */
/* = End of program = */
/* =============================================================== */
ENDPGM
File : QCMDSRC
Member : RTVJRNRCVA
Type : CMD
Usage : CRTCMD CMD(your-lib/RTVJRNRCVA) PGM(your-lib/RTVJRNRCVA) ALLOW(*IPGM *BPGM)
/* =============================================================== */
/* = Command....... RtvJrnrcvA = */
/* = CPP........... RtvJrnRcvA CLLE = */
/* = Description... Retrieve journal receiver attributes = */
/* = = */
/* = CrtCmd Cmd( RtvJrnrcvA ) = */
/* = Pgm( RtvJrnrcvA ) = */
/* = SrcFile( YourSourceFile ) = */
/* = Allow(*Ipgm *Bpgm) = */
/* =============================================================== */
/* = Date : 2008/03/14 = */
/* = Author: Vengoal Chang = */
/* =============================================================== */
/* = Parameter Description = */
/* = JRNRCV The qualified name of the journal receiver to = */
/* = be retrieved. = */
/* = RTNLIB The library containing the journal receiver. = */
/* = STATUS The status of the journal receiver. One of the= */
/* = following values will be returned: = */
/* = *ATTACHED Currently attached = */
/* = *ONLINE On line, detached, but not saved = */
/* = *SAVED On line, detached, and saved = */
/* = *FREED On line, detached, saved and stg = */
/* = freed. = */
/* = *PARTIAL See API detail = */
/* = QjoRetrieveJournalInformation = */
/* = *EMPTY Never attached = */
/* = ASP The Auxiliary Storage pool containing the = */
/* = journal. = */
/* = THRESHOLD The value of the THRESHOLD parameter specified= */
/* = on CRTJRNRCV = */
/* = SIZE The size of the journal receiver.specified = */
/* = The value is in KB. = */
/* = NBRENT The number of entries in the journal receiver.= */
/* = MAXNULLIND The maximum number of null value indicators = */
/* = among all journal entries in this journal = */
/* = receiver. = */
/* = MAXENTLEN The maximum length of the entry specific data = */
/* = for any journal entry, If the value exceeds = */
/* = 99999, zero willbe returned.(use MAXENTLEN2). = */
/* = MAXENTLEN2 The maximum length of the entry specific data = */
/* = for any journal entry = */
/* = RCVMAXOPT Indicates the journal receiver sequence number= */
/* = and size options. = */
/* = Blank means the journal receiver has not yet = */
/* = been attached. A description of the codes can = */
/* = be found in QjoRtvJrnReceiverInformation API. = */
/* = FSTSEQNBR The first journal sequence number in the = */
/* = receiver. = */
/* = LSTSEQNBR The last journal sequence number in the = */
/* = receiver. = */
/* = ATCDATTIM The date the journal receiver was attached in = */
/* = the format CYYMMDDHHMMSS = */
/* = DATCDATTIM The date the journal receiver was detached in = */
/* = the format CYYMMDDHHMMSS = */
/* = SAVDATTIM The date the journal receiver was saved in = */
/* = the format CYYMMDDHHMMSS = */
/* = JRN The journal the receiver is or was attached to= */
/* = If never attached, the value will be blank. = */
/* = JRNLIB The library of the journal the receiver is or = */
/* = was attached to. If never attached, the value = */
/* = will be blank. = */
/* = TEXT The text description of the journal receiver. = */
/* =============================================================== */
CMD PROMPT('Retrieve Journal Receiver Atr')
PARM KWD(JRNRCV) TYPE(QUAL) MIN(1) +
PROMPT('Journal receiver')
PARM KWD(RTNLIB) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
PROMPT('CL var for RTNLIB (10)')
PARM KWD(STATUS) TYPE(*CHAR) LEN(1) RTNVAL(*YES) +
PROMPT('CL var for STATUS ( 1)')
PARM KWD(ASP) TYPE(*DEC) LEN(3 0) RTNVAL(*YES) +
PROMPT('CL var for ASP (3 0)')
PARM KWD(THRESHOLD) TYPE(*DEC) LEN(7 0) +
RTNVAL(*YES) PROMPT('CL var for +
THRESHOLD (7 0)')
PARM KWD(SIZE) TYPE(*DEC) LEN(7 0) RTNVAL(*YES) +
PROMPT('CL var for SIZE (7 0)')
PARM KWD(NBRENT) TYPE(*DEC) LEN(15 0) +
RTNVAL(*YES) PROMPT('CL var for +
NBRENT (15 0)')
PARM KWD(MAXNULLIND) TYPE(*DEC) LEN(15 0) +
RTNVAL(*YES) PROMPT('CL var for +
MAXNULLIND (15 0)')
PARM KWD(MAXENTLEN) TYPE(*DEC) LEN( 7 0) +
RTNVAL(*YES) PROMPT('CL var for +
MAXENTLEN (15 0)')
PARM KWD(MAXENTLEN2) TYPE(*DEC) LEN(15 0) +
RTNVAL(*YES) PROMPT('CL var for +
MAXENTLEN2 (15 0)')
PARM KWD(RCVMAXOPT ) TYPE(*CHAR) LEN(1) +
RTNVAL(*YES) PROMPT('CL var for +
RCVMAXOPT (1)')
PARM KWD(FSTSEQNBR) TYPE(*DEC) LEN(15 0) +
RTNVAL(*YES) PROMPT('CL var for +
FSTSEQNBR (15 0)')
PARM KWD(LSTSEQNBR) TYPE(*DEC) LEN(15 0) +
RTNVAL(*YES) PROMPT('CL var for +
LSTSEQNBR (15 0)')
PARM KWD(ACTDATTIM) TYPE(*CHAR) LEN(13) +
RTNVAL(*YES) PROMPT('CL var for +
ACTDATTIM (13)')
PARM KWD(DACTDATTIM) TYPE(*CHAR) LEN(13) +
RTNVAL(*YES) PROMPT('CL var for +
DACTDATTIM (13)')
PARM KWD(SAVDATTIM) TYPE(*CHAR) LEN(13) +
RTNVAL(*YES) PROMPT('CL var for +
SAVDATTIM (13)')
PARM KWD(JRN) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) PROMPT('CL var for +
JRN (10)')
PARM KWD(JRNLIB) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) PROMPT('CL var for +
JRNLIB (10)')
PARM KWD(TEXT) TYPE(*CHAR) LEN(50) +
RTNVAL(*YES) PROMPT('CL var for +
TEXT (50)')
QUAL: QUAL TYPE(*NAME) LEN(10) SPCVAL((*ALL)) EXPR(*YES)
QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) +
SPCVAL((*LIBL) (*CURLIB)) EXPR(*YES) +
PROMPT('Library')
File : QCLSRC
Member : RTVJRNRCVT
Type : CLP
Usage : 測試程式
CRTCLPGM RTVJRNRCVT
CALL RTVJRNRCVT
PGM
DCL &FSTSEQNBR *DEC 15 0
DCL &LSTSEQNBR *DEC 15 0
DCL &RTNLIB *CHAR 10
DCL &STATUS *CHAR 1
DCL &ASP *DEC 3 0
DCL &THRESHOLD *DEC 7 0
DCL &SIZE *DEC 7 0
DCL &NBRENT *DEC 15 0
DCL &MAXENTLEN *DEC 7 0
DCL &MAXENTLEN2 *DEC 15 0
DCL &MAXNULIND *DEC 15 0
DCL &RCVMAXOPT *CHAR 50
DCL &ACTDATTIM *CHAR 13
DCL &DACTDATTIM *CHAR 13
DCL &SAVDATTIM *CHAR 13
DCL &JRN *CHAR 10
DCL &JRNLIB *CHAR 10
DCL &TEXT *CHAR 50
DCL &RCVRNAME *CHAR 10 'AUDRCV0075'
DCL &RCVRLIB *CHAR 10 'PMEDHJRN'
/* DCL &RCVRLIB *CHAR 10 '*LIBL' */
RTVJRNRCVA JRNRCV(&RCVRLIB/&RCVRNAME) RTNLIB(&RTNLIB) +
STATUS(&STATUS) ASP(&ASP) +
THRESHOLD(&THRESHOLD) SIZE(&SIZE) +
NBRENT(&NBRENT) MAXNULLIND(&MAXNULIND) +
MAXENTLEN(&MAXENTLEN) +
MAXENTLEN2(&MAXENTLEN2) +
RCVMAXOPT(&RCVMAXOPT) +
FSTSEQNBR(&FSTSEQNBR) +
LSTSEQNBR(&LSTSEQNBR) +
ACTDATTIM(&ACTDATTIM) +
DACTDATTIM(&DACTDATTIM) +
SAVDATTIM(&SAVDATTIM) JRN(&JRN) +
JRNLIB(&JRNLIB) TEXT(&TEXT)
DMPCLPGM
ENDPGM
訂閱:
文章 (Atom)