
|
PGM PARM(&FIN)
DCL VAR(&FIN) TYPE(*LGL)
DCL VAR(&CMD) TYPE(*CHAR) LEN(512)
DCL VAR(&POINT) TYPE(*LGL)
DCL VAR(&DTA) TYPE(*CHAR) LEN(10)
DCL VAR(&MSG) TYPE(*CHAR) LEN(320) VALUE(' ***** +
Saisir vos commandes puis F3 pour sortir +
et éxécuter ***** F4 = +
Invite à la saisie, "?" = Invite à +
l''éxécution (Utilisez +
SNDSTSMSG pour placer des messages +
d''état sur la ligne 24) +
-------------------------------------------+
----------------------------')
DCL VAR(&KEY) TYPE(*CHAR) LEN(4)
DCL VAR(&MSGKEY) TYPE(*CHAR) LEN(4)
DCL VAR(&RTN) TYPE(*CHAR) LEN(2)
DCL VAR(&WAIT) TYPE(*DEC) LEN(5 0) VALUE(0)
DCL VAR(&DQLEN) TYPE(*DEC) LEN(5 0) VALUE(512)
DCL VAR(&RSMTIME) TYPE(*CHAR) LEN(6)
DCL VAR(&CMDPWR) TYPE(*CHAR) LEN(128)
DCL VAR(&INITTIM) TYPE(*CHAR) LEN(6)
DCL VAR(&ENDTIM) TYPE(*CHAR) LEN(6)
DCL VAR(&DLYS) TYPE(*LGL)
DCL VAR(&DLYH) TYPE(*LGL)
DCLF FILE(RQSMD)
MONMSG CPF1907 EXEC(GOTO FINEXEC)
 
SNDPGMMSG MSG(&MSG) TOPGMQ(*EXT) MSGTYPE(*RQS)
RCVMSG PGMQ(*EXT) MSGTYPE(*RQS) RMV(*NO) +
KEYVAR(&MSGKEY)
 
 
/* SAISIE D'UNE COMMANDE SUR L'éCRAN DES COMMANDES */
START: CHGVAR &CMD ' '
CHGVAR &POINT '0'
RCVMSG PGMQ(*EXT) MSGTYPE(*RQS) WAIT(*MAX) RMV(*NO) +
KEYVAR(&KEY) MSG(&CMD) RTNTYPE(&RTN)
/*****************************/
/* F3/F12 SUR INVITE */
/*****************************/
MONMSG CPF6801 EXEC(DO)
SNDPGMMSG MSG(&CMD) TOPGMQ(*EXT) MSGTYPE(*RQS)
MONMSG CPF0000 EXEC(GOTO START)
|
RMVMSG PGMQ(*SAME) MSGKEY(&KEY)
MONMSG CPF0000
RCVMSG PGMQ(*EXT) MSGTYPE(*RQS) WAIT(0) RMV(*NO) +
MSG(&CMD)
GOTO START
ENDDO
/*****************************/
/* F3/F12 SUR ECRAN */
/*****************************/
MONMSG CPF2415 EXEC(GOTO FIN)
/*****************************/
/* F4 DEMANDE INVITE */
/*****************************/
IF (%SST(&CMD 1 1) = '?') DO
CHGVAR %SST(&CMD 1 1) ' '
CHGVAR &POINT '1'
ENDDO
IF (&RTN *EQ '10') THEN(DO)
CHGVAR &CMD ('?' !! &CMD)
ENDDO
 
CALL QCMDCHK (&CMD 512)
MONMSG CPF6801 EXEC(DO)
SNDPGMMSG MSG(&CMD) TOPGMQ(*EXT) MSGTYPE(*RQS)
MONMSG CPF0000 EXEC(GOTO START)
RMVMSG PGMQ(*SAME) MSGKEY(&KEY)
MONMSG CPF0000
RCVMSG PGMQ(*EXT) MSGTYPE(*RQS) WAIT(*MAX) +
RMV(*NO) MSG(&CMD)
GOTO START
ENDDO
MONMSG CPF0000 EXEC(GOTO START)
/*****************************/
/* ENTREE SUR ECRAN */
/*****************************/
IF &POINT CHGVAR &CMD ('?' !! &CMD)
SNDPGMMSG MSG(&CMD) TOPGMQ(*EXT) MSGTYPE(*RQS)
MONMSG CPF0000 EXEC(GOTO START)
CALL QSNDDTAQ PARM(RQSMDQ QTEMP &DQLEN &CMD)
RMVMSG PGMQ(*SAME) MSGKEY(&KEY)
MONMSG CPF0000
RCVMSG PGMQ(*EXT) MSGTYPE(*RQS) WAIT(*MAX) RMV(*NO) +
MSG(&CMD)
 
|
GOTO START   FIN: RMVMSG PGMQ(*EXT) MSGKEY(&MSGKEY) MONMSG CPF0000   ECRAN: SNDRCVF RCDFMT(FMTFIN)   CHGVAR &FIN &IN03 IF &IN03 RETURN IF &IN10 DO DSPJOBLOG GOTO ECRAN ENDDO   BOUCLE: CHGVAR &CMD ' ' CHGVAR VAR(&DQLEN) VALUE(512) CALL PGM(QRCVDTAQ) PARM(RQSMDQ QTEMP &DQLEN &CMD + &WAIT) IF COND((&CMD = ' ') *OR (&DQLEN = 0)) + THEN(GOTO CMDLBL(EXEC)) SNDPGMMSG MSG(&CMD) TOPGMQ(*EXT) MSGTYPE(*RQS) GOTO BOUCLE EXEC:   CHGVAR &CMDPWR ' ' IF ((&PWRDWN *EQ 'O') & (&INVITE *EQ 'O')) DO CHGVAR &CMDPWR '? PWRDWNSYS' CALL PGM(QCMDCHK) PARM(&CMDPWR 128) MONMSG CPF6801 EXEC(CHGVAR &PWRDWN 'N') ENDDO   CHGDTAARA DTAARA(QTEMP/RQSMDA (1 1)) VALUE(&PWRDWN) CHGDTAARA DTAARA(QTEMP/RQSMDA (2 1)) VALUE(&SIGNOFF) CHGDTAARA DTAARA(QTEMP/RQSMDA (3 7)) VALUE(&LOG) CHGDTAARA DTAARA(QTEMP/RQSMDA (10 128)) VALUE(&CMDPWR) CHGDTAARA DTAARA(QTEMP/RQSMDA (138 1)) VALUE(&ENDSYS)   IF (&DIF *EQ 'O') DO RTVSYSVAL SYSVAL(QTIME) RTNVAR(&INITTIM) IF (&DLY *NE 0) DO CHGVAR &DLYS '1' CALL PGM(RQSTIM) PARM(&DLY &RSMTIM) |
MONMSG MSGID(CPF0000 RPG0000) EXEC(DO)
CHGVAR &IN61 '1'
GOTO FIN
ENDDO
ENDDO
ELSE CHGVAR &DLYH '1'
CHGVAR &RSMTIME &RSMTIM
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Attente +
d''éxécution différée jusqu''à ' *CAT +
&RSMTIME *CAT ' ...') TOPGMQ(*EXT) +
MSGTYPE(*STATUS)
 
DLY: DLYJOB RSMTIME(&RSMTIME)
MONMSG CPF1907 EXEC(DO)
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&ENDTIM)
IF (&RSMTIME *GT &ENDTIM) GOTO DLY
IF ((&RSMTIME *LE &ENDTIM) & (&RSMTIME *LT &INITTIM)) +
GOTO DLY
ENDDO
MONMSG CPF0000 EXEC(DO)
IF &DLYH CHGVAR &IN62 '1'
ELSE CHGVAR &IN61 '1'
GOTO FIN
ENDDO
ENDDO
 
IF (&ENDSYS = 'O') THEN(DO)
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Arret +
du système en cours.') TOPGMQ(*EXT) +
MSGTYPE(*STATUS)
CHGJOB BRKMSG(*HOLD)
CHGMSGQ MSGQ(QSYSOPR) DLVRY(*BREAK) SEV(99)
MONMSG MSGID(CPF0000)
SNDBRKMSG MSG('Arret du système dans 5 minutes !') +
TOMSGQ(*ALLWS)
DLYJOB DLY(300)
ENDSBS SBS(*ALL) OPTION(*IMMED)
TESTSBS:
ENDSBS SBS(*ALL) OPTION(*IMMED)
MONMSG MSGID(CPF1035) EXEC(DO)
RCVMSG MSGTYPE(*EXCP) RMV(*YES)
DLYJOB DLY(15)
GOTO TESTSBS
ENDDO
|
MONMSG MSGID(CPF0000)
ENDDO
 
SNDPGMMSG MSG('ENDRQS') TOPGMQ(*EXT) MSGTYPE(*RQS)
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA('Exécution des demandes en cours.') +
TOPGMQ(*EXT) MSGTYPE(*STATUS)
CALL QCMD
FINEXEC:
ENDPGM
|