/*Î**************************************************************************Ä*/ 970429 /*ÎSAVCOMS1 OMS SHELL AROUND MIRRORED BACKOFFS - TARGET MACHINE PROGRAM 1 Ä*/ 970429 /*ÎPGMR: MJR April 1997 Ä*/ 970429 /*Î**************************************************************************Ä*/ 970429 PGM 970429 DCL VAR(&PGM) TYPE(*CHAR) LEN(10) VALUE('SAVCOMS1') 970704 DCL VAR(&LINKID) TYPE(*CHAR) LEN(10) 970704 DCL VAR(&OMSLIB) TYPE(*CHAR) LEN(10) 970704 DCL VAR(&OMSLIB01) TYPE(*CHAR) LEN(10) 970704 DCL VAR(&DTAQ) TYPE(*CHAR) LEN(10) + 970704 VALUE('SAVQOMS1') 970704 DCL VAR(&DTAQLIB) TYPE(*CHAR) LEN(10) + 970704 VALUE('*LIBL') 970704 DCL VAR(&DTAQDTA) TYPE(*CHAR) LEN(80) 970704 DCL VAR(&EMPTY) TYPE(*CHAR) LEN(80) VALUE(' ') 970704 DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(512) 970704 DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) 970704 DCL VAR(&MSGKEY) TYPE(*CHAR) LEN(4) 970704 DCL VAR(&KEYVAR) TYPE(*CHAR) LEN(4) 970704 DCL VAR(&DTAQLEN) TYPE(*DEC) LEN(5 0) VALUE(50) 970704 DCL VAR(&DTAQWAIT) TYPE(*DEC) LEN(5 0) 970704 DCL VAR(&COUNT) TYPE(*DEC) LEN(5 0) 970704 DCL VAR(&NOWAIT) TYPE(*DEC) LEN(5 0) VALUE(0) 970704 DCL VAR(&AUTOTIME) TYPE(*DEC) LEN(5 0) 970704 DCL VAR(&STATUS) TYPE(*CHAR) LEN(9) 971007 DCLF FILE(SAVSOMS1) 970704 970429 RTVDTAARA DTAARA(OMSLINKID) RTNVAR(&LINKID) 970704 RTVDTAARA DTAARA(SAVAOMS1) RTNVAR(&AUTOTIME) 970704 RTVDTAARA DTAARA(OMSLIB) RTNVAR(&OMSLIB) 970704 RTVDTAARA DTAARA(YYCOTXA) RTNVAR(&COMPNY) 970704 SAVLIBL 970707 MONMSG MSGID(CPF0000) 970707 ADDLIBLE LIB(&OMSLIB) 970704 MONMSG MSGID(CPF2103) 970704 CHGVAR VAR(&OMSLIB01) VALUE(&OMSLIB |< '0001') 971006 ADDLIBLE LIB(&OMSLIB01) POSITION(*BEFORE &OMSLIB) 970704 MONMSG MSGID(CPF2103) 970704 /*ÎSet initial screen control indicators (51 allows F10 use)Ä*/ 970704 CHGVAR VAR(&IN51) VALUE('0') 970704 CHGVAR VAR(&SFPAGE) VALUE(1) 970704 CHGVAR VAR(&DTAQWAIT) VALUE(&AUTOTIME) 970704 /*ÎTidy up anything left over from last timeÄ*/ 970704 CLRDTAQ DTAQ(SAVQOMS1) 990317 DLTF FILE(SAVEDJRN/SAVEJRN) 970717 MONMSG MSGID(CPF0000) 970717 /*ÎCheck status of OMS jobs - in case this is a retryÄ*/ 970704 RTVOMSAJS STATUS(&STATUS) 971010 /*ÎIf OMS is not running, then allow save immediatelyÄ*/ 970704 IF COND(&STATUS = '*INACTIVE') THEN(DO) 971007 /*ÎPut on the screenÄ*/ 970704 CHGVAR VAR(&MSGDTA) VALUE('The OMS apply queues are + 970704 not active, so you can start the save now.') 970704 SNDPGMMSG MSGID(GSM9999) MSGF(GSM0000) MSGDTA(&MSGDTA) + 970704 TOPGMQ(*SAME) 970704 /*ÎEnable F10=Continue & let user know they can use itÄ*/ 970704 CHGVAR VAR(&IN51) VALUE('1') 970704 CHGVAR VAR(&MSGDTA) VALUE('Press F10 to continue + 970704 with the save.') 970704 SNDPGMMSG MSGID(GSM9999) MSGF(GSM0000) MSGDTA(&MSGDTA) + 970704 TOPGMQ(*SAME) 970704 /*ÎRemind user of manual routine to restart OMS/ODS via SAVCOMS4 pgmÄ*/ 970704 CHGVAR VAR(&MSGDTA) VALUE('If manually running this + 970704 routine, run command RESTARTOMS.') 970704 SNDPGMMSG MSGID(GSM9999) MSGF(GSM0000) MSGDTA(&MSGDTA) + 970704 TOPGMQ(*SAME) 970704 GOTO CMDLBL(DISPLAY) 970704 ENDDO 970704 /*ÎKick off the program on the source to set the checkpoint & end OMSÄ*/ 970704 OMSRMTCMD LINKID(&LINKID) CMD('SBMJOB CMD(CALL + 970704 PGM(SAVCOMS2I)) JOB(SHTDWNOMS1)') 970704 /*ÎPut info message on screen for above actionÄ*/ 970704 CHGVAR VAR(&MSGDTA) VALUE('Command submitted to + 970704 place Checkpoint on OMS journal on Source + 970704 (LIV1).') 970704 SNDPGMMSG MSGID(GSM9999) MSGF(GSM0000) MSGDTA(&MSGDTA) + 970704 TOPGMQ(*SAME) 970704 /*ÎMain display loopÄ*/ 970704 DISPLAY: 000000 /*ÎSend the screen display, which will wait on the data queueÄ*/ 970704 SNDF RCDFMT(MSFLC) 970704 CHGVAR VAR(&DTAQDTA) VALUE(&EMPTY) 970704 /*ÎWait for a data queue entry (generated by a user key press or outside pgm)Ä*/ 970429 CALL PGM(QRCVDTAQ) PARM(&DTAQ &DTAQLIB &DTAQLEN + 970704 &DTAQDTA &DTAQWAIT) 970704 /*ÎGet the number of messages in the subfileÄ*/ 970704 CHGVAR VAR(&COUNT) VALUE(0) 970704 RCVMSG MSGTYPE(*FIRST) RMV(*NO) KEYVAR(&KEYVAR) + 970704 MSGID(&MSGID) 970704 GETSFLSIZE: 000000 IF COND(&MSGID ª= ' ') THEN(DO) 970704 CHGVAR VAR(&COUNT) VALUE(&COUNT + 1) 970704 CHGVAR VAR(&MSGKEY) VALUE(&KEYVAR) 970704 RCVMSG MSGTYPE(*NEXT) MSGKEY(&MSGKEY) RMV(*NO) + 970704 KEYVAR(&KEYVAR) MSGID(&MSGID) 970704 GOTO CMDLBL(GETSFLSIZE) 970704 ENDDO 970704 /*ÎSet subfile page value to number of messages in subfile (or 1 if empty)Ä*/ 970704 CHGVAR VAR(&SFPAGE) VALUE(&COUNT) 970704 IF COND(&SFPAGE = 0) THEN(CHGVAR VAR(&SFPAGE) + 970704 VALUE(1)) 970704 /*ÎNo entry on data queue - then screen timed outÄ*/ 970704 IF COND(&DTAQDTA = &EMPTY) THEN(GOTO + 970704 CMDLBL(DISPLAY)) 970704 /*ÎIf entry generated by another routine (not screen generated entry)Ä*/ 970704 IF COND(%SST(&DTAQDTA 1 5) ª= '*DSPF') THEN(DO) 970704 /*ÎProcess the entry(s)Ä*/ 970704 GOTO CMDLBL(GETREMAIN) 970704 ENDDO 970704 /*ÎGet screen input as to get here, Enter or F-key pressedÄ*/ 970704 RCVF RCDFMT(MSFLC) WAIT(*YES) 970704 /*ÎF1=HelpÄ*/ 970704 IF COND(&IN01) THEN(DO) 970704 WRKOLD DOCFILE(GSLOPS0) DOCUMENT(SAVNONSYS) 980629 GOTO CMDLBL(DISPLAY) 970704 ENDDO 970704 /*ÎF10=ContinueÄ*/ 970704 IF COND(&IN10) THEN(GOTO CMDLBL(ENDPGM)) 970704 /*ÎF21=Command lineÄ*/ 970704 IF COND(&IN21) THEN(DO) 970704 CALL PGM(QUSCMDLN) 970704 GOTO CMDLBL(DISPLAY) 970704 ENDDO 970704 CHGVAR VAR(&DTAQWAIT) VALUE(&AUTOTIME) 970704 /*ÎProcess manually generated data queue entry(s)Ä*/ 970704 GETREMAIN: 000000 /*ÎIf the final completion message is foundÄ*/ 970704 IF COND(%SST(&DTAQDTA 1 8) = 'OMS *CMP') THEN(DO) 970704 /*ÎCheck if F10=Continue is to be displayed - if not then okay to leave nowÄ*/ 971008 CHKOBJ OBJ(DISPLAYF10) OBJTYPE(*DTAARA) 971008 MONMSG MSGID(CPF9801) EXEC(DO) 971008 GOTO CMDLBL(ENDPGM) 971008 ENDDO 971008 /*ÎPut on the screenÄ*/ 970704 CHGVAR VAR(&MSGDTA) VALUE(%SST(&DTAQDTA 1 78)) 970704 SNDPGMMSG MSGID(GSM9999) MSGF(GSM0000) MSGDTA(&MSGDTA) + 970704 TOPGMQ(*SAME) 970704 /*ÎEnable F10=Continue & let user know they can use itÄ*/ 970704 CHGVAR VAR(&IN51) VALUE('1') 970704 CHGVAR VAR(&MSGDTA) VALUE('Press F10 to continue + 970704 with the save.') 970704 SNDPGMMSG MSGID(GSM9999) MSGF(GSM0000) MSGDTA(&MSGDTA) + 970704 TOPGMQ(*SAME) 970704 /*ÎRemind user of manual routine to restart OMS/ODS via SAVCOMS4 pgmÄ*/ 970704 CHGVAR VAR(&MSGDTA) VALUE('If manually running this + 970704 routine, run command RESTARTOMS.') 970704 SNDPGMMSG MSGID(GSM9999) MSGF(GSM0000) MSGDTA(&MSGDTA) + 970704 TOPGMQ(*SAME) 970704 ENDDO 970704 /*ÎOtherwise, process all intermediate entriesÄ*/ 970704 ELSE CMD(DO) 970704 /*ÎBounce it to the screenÄ*/ 970704 CHGVAR VAR(&MSGDTA) VALUE(%SST(&DTAQDTA 1 78)) 970704 SNDPGMMSG MSGID(GSM9999) MSGF(GSM0000) MSGDTA(&MSGDTA) + 970704 TOPGMQ(*SAME) 970704 ENDDO 970704 /*ÎCheck for any more entries - don't wait, just grab what's thereÄ*/ 970704 CHGVAR VAR(&DTAQDTA) VALUE(&EMPTY) 970704 CALL PGM(QRCVDTAQ) PARM(&DTAQ &DTAQLIB &DTAQLEN + 970704 &DTAQDTA &NOWAIT) 970704 /*ÎIf nothing else found, back to the screenÄ*/ 970704 IF COND(&DTAQDTA = &EMPTY) THEN(GOTO + 970704 CMDLBL(DISPLAY)) 970704 /*ÎOtherwise, process recovered entryÄ*/ 970704 GOTO CMDLBL(GETREMAIN) 970704 /*ÎTime to go....Ä*/ 970704 ENDPGM: 000000 RSTLIBL 970707 MONMSG MSGID(CPF0000) 970707 RETURN 970429 ENDPGM 970429