|
I hope the following, excerpted from our Introduction to AS/400 Journaling
session, helps and is not too big:
Copyright 1991-2001 MPH, Inc., Okemos, MI USA, All Rights Reserved
** RECEIVE JOURNAL ENTRY
RCVJRNE JRN($JRNLIB/$JRN) EXITPGM(PGMLIB/PGMNAME)
FILE(FILELIB/FILENAME) ENTTYP(PT UP DL)
DELAY(60)
** SPECIFIED EXIT PROGRAM RECEIVES NEW JOURNAL RECEIVER ENTRIES ONE AT A
TIME EVERY 60 SECONDS FROM JOURNAL $JRN IN LIBRARY $JRNLIB
** DEFAULT IS EVERY 30 SECONDS
** TWO PARAMETERS PASSED
** JOURNAL ENTRY FIRST PARAMETER
** SINGLE CHARACTER FLAG SECOND PARAMETER
** SIMILAR TO FORMAT OF QADSPJRN
FORMAT OF STATUS FLAG PARAMETER 2
9 RCVJRNE ENDS IF PROGRAM SETS TO 9
0 RCVJRNE SETS TO 0 IF NO NEW JOURNAL ENTRIES TO PASS
1 RCVJRNE SETS TO 1 IF NEW JOURNAL ENTRY PASSED
** PROGRAM CALLED WITH PARM 2 = '1' IF NEW JOURNAL RECEIVER ENTRY
** PROGRAM CALLED WITH PARM 2 = '0' IF NO MORE JOURNAL RECEIVER ENTRIES
** PROGRAM SETS PARM 2 = '9' TO END CL PROGRAM
** FILE OPTIONAL
** FILE(*ALL) IS DEFAULT
** ENTRY TYPE OPTIONAL
** ENTTYP(*ALL) DEFAULT
** PT = RECORD ADDED
** UP = RECORD UPDATED
** DL = RECORD DELETED
** ENTTYP(*RCD) ALSO SENDS UB (BEFORE IMAGE)
** NUMEROUS OTHER SELECTION CRITERIAL ALSO AVAILABLE
/* */
/* STRJPGMC - START JOURNAL PROCESSING PROGRAM */
/* 12 JUL 92 - CHARLES L. MASSOGLIA */
/* */
/* COPYRIGHT 1992, MPH, INC., OKEMOS, MICHIGAN, ALL RIGHTS RESERVED */
/* */
PGM
/* DECLARE PROGRAM VARIABLES */
DCL VAR(&JOBTYPE) TYPE(*CHAR) LEN(1)
DCL VAR(&JOB) TYPE(*CHAR) LEN(10)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
DCL VAR(&NBR) TYPE(*CHAR) LEN(6)
DCL VAR(&STATUS) TYPE(*CHAR) LEN(1)
/* VERIFY THAT JOB IS NOT ALREADY ACTIVE */
RTVDTAARA DTAARA(KWAJP (27 1)) RTNVAR(&STATUS)
IF COND(&STATUS *EQ 'A') THEN(DO)
SNDPGMMSG MSG('Journal processing program +
already active') MSGTYPE(*COMP)
RETURN
ENDDO
/* SUBMIT JOB TO BATCH IF RUNNING INTERACTIVELY */
RTVJOBA TYPE(&JOBTYPE) /* '1'=INTERACTIVE */
IF COND(&JOBTYPE *EQ '1') THEN(DO)
SBMJOB CMD(CALL PGM(STRJPGMC)) JOBQ(QS36EVOKE)
SNDPGMMSG MSG('Journal processing program +
has been submitted') MSGTYPE(*COMP)
RETURN
ENDDO
/* RETRIEVE JOB NAME */
RTVJOBA JOB(&JOB) USER(&USER) NBR(&NBR)
/* PUT JOBNAME AND ACTIVE FLAG IN KWAJP DTAARA */
CHGDTAARA DTAARA(KWAJP (1 27)) VALUE(&JOB *CAT +
&USER *CAT &NBR *CAT 'A')
/* START JOURNAL PROCESSING PROGRAM */
RCVJRNE JRN($JRNLIB/$JRN) EXITPGM(EIRUKW) +
FILE((STUDNAME) (CUSTMAST)) ENTTYP(DL PT UP)
MONMSG MSGID(CPF7062) /* CPF7062=No entries +
converted or received */
END: ENDPGM
** CL PROGRAM SUBMITS ITSELF IT RUNNING INTERACTIVELY
** DATA AREA USED TO CONTROL WHETHER JOB ALREADY RUNNING
F*
F* EIRUKW - UPDATE KEYWORD/SOUNDEX FROM JOURNAL RECEIVER
F* 19 JUL 92 - CHARLES L. MASSOGLIA
F*
F* COPYRIGHT 1992, MPH, INC., OKEMOS, MICHIGAN ALL RIGHTS RESERVED
F*
IDsname....NODsExt-file++.............OccrLen+...............
I*
I* EXTERNALLY DEFINED DATA STRUCTURE TO RECEIVE RECEIVER IMAGE
I* (NOTE LENGTH 4221 TO OVERCOME JOESD LENGTH OF 100. POSITIONS
I* 1-125 DEFINE JOURNAL FIELDS, DATA IN POSITIONS 126-4221 = 4096.)
I*
IJRNRCV E DSQADSPJRN 4221
I 126 381 DATA
I*
I* EXTERNALLY DEFINED DATA STRUCTURE TO RECEIVE CUSTMAST IMAGE
I*
IFILECM E DSCUSTMAST
I*
I* EXTERNALLY DEFINED DATA STRUCTURE TO RECEIVE STUDNAME IMAGE
I*
IFILESN E DSSTUDNAME I*
I* NAMED DATA AREA TO TRACK JOB NAME AND STATUS
I*
IDsname....NODsExt-file++.............OccrLen+...............
IKWAJP UDS 256
I 27 27 @STAT
CSRn01n02n03Factor1+++OpCdeFactor2+++ResultLenDHHILOEQComment
C*
C*** ENTRY PARAMETER LIST
C*
C *ENTRY PLIST
C PARM JRNRCV EXT DEF DS
C PARM $$FLAG 1 CONTROL FLAG
C*
C*** RETURN IF ENDJOB, PWRDWNSYS, ENDSYS, OR ENDSBS
C*** IN PROGRESS WITH *CTRLD OPTION SPECIFIED
C*
C SHTDN 50 GT ON IF ENDxxx
B001 C *IN50 IFEQ *ON OR PWRDWNSYS
001 C MOVE '9' $$FLAG 1 END RCVJRNE CMD
001 C MOVE 'I' @STAT DTAARA STATUS
001 C MOVE *ON *INLR END RPG PGM
001 C RETRN RETURN TO CL PGM
E001 C ENDIF
C*
C*** RETURN IF NO NEW ENTRIES OR INCORRECT ENTRY TYPE
C*
B001 C $$FLAG IFEQ '0' IF NO NEW ENTRIES
001 C JOENTT ORNE 'DL' OR NOT DELETE
001 C JOENTT ANDNE'PT' AND NOT ADD
001 C JOENTT ANDNE'UP' AND NOT UPDATE
001 C RETRN RETURN TO CL PGM
E001 C ENDIF
C*
C*** PROCESS FILES
C*
B001 C JOOBJ CASEQ'CUSTMAST'@@UPCM PROCESS CUSTMAST
001 C JOOBJ CASEQ'STUDNAME'@@UPSN PROCESS STUDNAME
E001 C ENDCS
C*
C*** DONE
C*
C RETRN RETURN TO CL PGM
*----------------------------------------------------------------
* Subroutine @@UPCM - UPDATE CUSTMAST KEYWORD/SOUNDEX FILES
*----------------------------------------------------------------
C @@UPCM BEGSR
C*
C*** MOVE RECEIVER DATA IMAGE (DATA) INTO EXTERNALLY DEFINED
C*** DATA STRUCTURE (FILECM) TO GET CUSTMAST CMxxxx FIELDS
C*
C MOVELDATA FILECM
C*
C*** CALL UPDATE PROGRAM
C*
C CALL 'KWRUKW'
C PARM CMID $ID 90 ID NUMBER
C PARM JOENTT ENTRY TYPE
C PARM CMNAME $IN 128 NAME
C PARM 'CM' $DSG 2 FILE DESIGNATOR
C PARM $ERR 1 ERROR FLAG
C ENDSR
*----------------------------------------------------------------
* Subroutine @@UPSN - UPDATE STUDNAME KEYWORD/SOUNDEX FILES
*----------------------------------------------------------------
C @@UPSN BEGSR
C*
C*** MOVE RECEIVER DATA IMAGE (DATA) INTO EXTERNALLY DEFINED
C*** DATA STRUCTURE (FILESN) TO GET STUDNAME SNxxxx FIELDS
C*
C MOVELDATA FILESN
C*
C*** CALL UPDATE PROGRAM
C*
C CALL 'KWRUKW'
C PARM SNID $ID 90 ID NUMBER
C PARM JOENTT ENTRY TYPE
C PARM SNNAME $IN 128 NAME
C PARM 'SN' $DSG 2 FILE DESIGNATOR
C PARM $ERR 1 ERROR FLAG
C ENDSR
** PROGRAM RECEIVES JOURNAL ENTRIES, CHECKS FILE, AND CALLS ANOTHER PROGRAM
TO PROCESS ENTRIES/*
*/
/* ENDJPGMC - END JOURNAL PROCESSING PROGRAM */
/* 30 JUL 92 - CHARLES L. MASSOGLIA */
/* */
/* COPYRIGHT 1992, MPH, INC., OKEMOS, MICHIGAN, ALL RIGHTS RESERVED */
/* */
PGM
/* DECLARE PROGRAM VARIABLES */
DCL VAR(&JOB) TYPE(*CHAR) LEN(10)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
DCL VAR(&NBR) TYPE(*CHAR) LEN(6)
DCL VAR(&STATUS) TYPE(*CHAR) LEN(1)
/* DETERMINE WHETHER JOURNAL PROCESSING JOB IS ACTIVE */
RTVDTAARA DTAARA(KWAJP (27 1)) RTNVAR(&STATUS)
IF COND(&STATUS *NE 'A') THEN(DO)
SNDPGMMSG MSG('Journal processing +
program is not active.') MSGTYPE(*COMP)
RETURN
ENDDO
/* RETRIEVE JOURNAL PROCESSING JOB NAME AND END IT */
RTVDTAARA DTAARA(KWAJP (1 10)) RTNVAR(&JOB)
RTVDTAARA DTAARA(KWAJP (11 10)) RTNVAR(&USER)
RTVDTAARA DTAARA(KWAJP (21 6)) RTNVAR(&NBR)
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Ending +
journal processing program. Please wait +
1.5 minutes') TOPGMQ(*EXT) MSGTYPE(*STATUS)
ENDJOB JOB(&NBR/&USER/&JOB) DELAY(60)
/* IF JOB HAS COMPLETED, DISPLAY MESSAGE AND CLEAR DATA AREA */
MONMSG MSGID(CPF1321 CPF1362) EXEC(DO) /* +
CPF1321-JOB NOT FOUND, CPF1362-JOB +
COMPLETED */
CHGDTAARA DTAARA(KWAJP (27 1)) VALUE('I') /* CHANGE +
STATUS TO INACTIVE */
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Journal +
processing program not active. +
OK to restart') MSGTYPE(*COMP)
RETURN
ENDDO
/* WAIT FOR JOURNAL PROCESSING PROGRAM TO SHUTDOWN */
DLYJOB DLY(75)
/* DETERMINE WHETHER JOURNAL PROCESSING JOB IS STILL ACTIVE */
RTVDTAARA DTAARA(KWAJP (27 1)) RTNVAR(&STATUS)
IF COND(&STATUS *EQ 'A') THEN(DO)
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Could +
not end journal processing program') +
MSGTYPE(*ESCAPE)
RETURN
ENDDO
/* SEND SUCCESSFUL CANCEL MESSAGE */
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Journal +
processing program ended') MSGTYPE(*COMP)
ENDPGM
** CL PROGRAM EXECUTES A CONTROLLED END JOB OF JOURNAL PROCESSING PROGRAM
** JOURNAL PROCESSING PROGRAM EXECUTED SHTDN COMMAND TO CHECK FOR END JOB
Charles L.Massoglia, President
Massoglia Technical Consulting, Inc.
cmassoglia@voyager.net
In MI 517-676-9700 or in NC 919-363-9395
----- Original Message -----
From: "Chris Beck" <CBeck@good-sam.com>
To: <MIDRANGE-L@midrange.com>
Sent: Monday, 13 August, 2001 14:45
Subject: Receive journal exit program
> Has anyone got any examples of using the exit program on the RCVJRNE
command
> that they are willing to share, or know where I can find some.
>
>
> Thanks
>
> Chris Beck
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.