Where allowed to run:
|
Parameters Examples Error messages |
http://www.neroni.it/NERONI2/JRECURS.NERONI2.HTML
Il comando JRECURS esamina la chiamabilita' di un dato programma subito prima della chiamata effettiva valutando che il programma non sia gia' in lista di chiamata e sia pero' presente in lista librerie.
http://www.neroni.it/NERONI2/JRECURSI.NERONI2.HTML
Il comando JRECURSI valuta estemporaneamente le risposte del command processing program in comune col comando JRECURS.
Quando riceve un nome di programma che si trova gia' in lista di chiamata o che e' inesistente in lista librerie:
1) il comando JRECURS restituisce una variabile logica accesa e, a richiesta, visualizza eventuali messaggi di esito negativo;
2) il comando JRECURSI non restituisce variabili ma visualizza soltanto eventuali messaggi di esito negativo.
Il recupero delle informazioni necessarie avviene spedendo un messaggio al programma cercato per valutarne la presenza in lista di chiamata. Se il programma non e' in lista di chiamata, se ne accorge intercettando l'errore. Se il programma e' in lista di chiamata, se ne accorge perche' non si verificano errori. Il messaggio viene poi rimosso per non inquinare il log.
Per completare l'esame di chiamabilita' quando il programma non e' in lista, considera errore di chiamabilita' anche la mancanza del programma in lista librerie.
Se richiesti, i messaggi di errore vengono spediti alla coda esterna che, nei lavori interattivi, viene visualizzata immediatamente con il nuovo messaggio in bella vista. Nessun disturbo si verifica se il chiamante e' un lavoro batch.
Top |
Keyword | Description | Choices | Notes |
---|---|---|---|
PGM | Program name | Name | Required, Positional 1 |
RECURS | Recursion (I=Dsp O=Recur) *LGL | Logical value | Required, Positional 2 |
Top |
Nome del programma da cercare in lista di chiamata e, se non presente, da ricercare in lista librerie.
Il valore e' obbligatorio.
Valori permessi:
Top |
Variabile logica di ritorno obbligatoria adatta a contenere sia una richiesta di comportamento che la risposta del comando.
Valori permessi:
Valori ricevuti:
Valori restituiti:
Top |
Esempio 1: Testa recursione con il comando JRECURS
Cerca risposte chiamando un programma di test dal video comandi.
Il programma JRECURST e' un programma di test dimostrativo dell'uso di JRECURS, eseguibile interattivamente e presente tra i sorgenti del tool nella sua forma completa.
Il programma contiene un esempio di chiamata del comando JRECURS e genera un messaggio estemporaneo di evidenziazione del risultato.
/* Claudio Neroni 15-01-2019 Creato. */ /* JRECURST */ /* Monitor recursion. Test */ /* Controlla recursione. Test */ /* */ PGM PARM(&PGM &RECURS) /* Riceve Nome del programma da cercare */ /* in invocation stack e library list. */ DCL VAR(&PGM) TYPE(*CHAR) LEN(10) /* Riceve Richiesta di segnalazione errore (1). */ DCL VAR(&RECURS) TYPE(*LGL) /* Decodifica della variabile logica ante manipolazione. */ DCL VAR(&ANTE) TYPE(*CHAR) LEN(4) VALUE(*OFF) /* Decodifica della variabile logica post manipolazione. */ DCL VAR(&POST) TYPE(*CHAR) LEN(4) VALUE(*OFF) /* Decodifica la richiesta di visualizzazione messaggi. */ IF COND(&RECURS) THEN(CHGVAR VAR(&ANTE) + VALUE(*ON)) /* Valuta la chiamabilita' del programma. */ JRECURS PGM(&PGM) RECURS(&RECURS) /* Decodifica la risposta di chiamabilita'. */ IF COND(&RECURS) THEN(CHGVAR VAR(&POST) + VALUE(*ON)) /* Documenta l'avvenimento. */ SNDPGMMSG MSG('Pgm:' *CAT &PGM *CAT ' Ante:' *CAT + &ANTE *CAT ' Post:' *CAT &POST) ENDPGM
Si riportano le call di chiamata del test e le log di esecuzione e, quando presenti, le visualizzazioni della coda messaggi di programma del job.
1) Programma QCMD in lista di chiamata, no messaggio. Call e log > CALL PGM(JRECURST) PARM(QCMD '0') Pgm:QCMD Ante:*OFF Post:*ON Messaggi programma nessuno
2) Programma QCMD in lista di chiamata, messaggio. Call e log > CALL PGM(JRECURST) PARM(QCMD '1') Pgm:QCMD Ante:*ON Post:*ON Messaggi programma Visualizzazione messaggi del programma Lavoro 887050/NERONI/N2NERO avviato il 15/01/19 alle 11:47:36 nel sottosistema QINTER Il programma QCMD non puo' essere chiamato di nuovo Premere Invio per continuare. F3=Fine F12=Annullamento
3) Programma ESISTE in lista di chiamata, no messaggio. Call e log > CALL PGM(JRECURST) PARM(ESISTE '0') Pgm:ESISTE Ante:*OFF Post:*OFF Messaggi programma nessuno
4) Programma ESISTE in lista di chiamata, messaggio. Call e log > CALL PGM(JRECURST) PARM(ESISTE '1') Pgm:ESISTE Ante:*ON Post:*OFF Messaggi programma nessuno
5) Programma MANCA in lista di chiamata, no messaggio. Call e log > CALL PGM(JRECURST) PARM(MANCA '0') Pgm:MANCA Ante:*OFF Post:*ON Messaggi programma nessuno
6) Programma MANCA in lista di chiamata, messaggio. Call e log > CALL PGM(JRECURST) PARM(MANCA '1') Pgm:MANCA Ante:*ON Post:*ON Messaggi programma Visualizzazione messaggi del programma Lavoro 887050/NERONI/N2NERO avviato il 15/01/19 alle 11:47:36 nel sottosistema QINTER Il programma QCMD non puo' essere chiamato di nuovo Il programma da chiamare MANCA non esiste Premere Invio per continuare. F3=Fine F12=Annullamento
Esempio 2: Testa recursione con il comando JRECURSI
Cerca risposte per gli stessi programmi e presuppone di farlo dallo stesso video comandi dell'esempio 1.
> JRECURSI PGM(QCMD) Il programma QCMD non puo' essere chiamato di nuovo > JRECURSI PGM(ESISTE) > JRECURSI PGM(MANCA) Il programma da chiamare MANCA non esiste
La prima e la terza call visualizzano anche i seguenti due messaggi nella coda messaggi del lavoro.
Visualizzazione messaggi del programma Lavoro 887050/NERONI/N2NERO avviato il 15/01/19 alle 11:47:36 nel sottosistema QINTER Il programma QCMD non puo' essere chiamato di nuovo Il programma da chiamare MANCA non esiste Il programma QCMD non puo' essere chiamato di nuovo Il programma da chiamare MANCA non esiste Premere Invio per continuare. F3=Fine F12=Annullamento
Top |
Top |