顯示具有 JRNRCV 標籤的文章。 顯示所有文章
顯示具有 JRNRCV 標籤的文章。 顯示所有文章

星期四, 11月 09, 2023

2014-10-22 如何將指定的 audit journal reveiver journal entry 轉換至於 PF(Command CVTJRNE with API QjoRetrieveJournalEntries)


如何將指定的 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')





星期三, 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