//BCHJOB JOB(JNETLIBL) JOBD(NERONI2/NERONI2) OUTQ(QPRINT) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Open source scaricabile da www.neroni.it */ /* LA JOB DESCRIPTION "NERONI2/NERONI2" DEVE PREESISTERE. PUO' ESSERE */ /* IDENTICA A QBATCH E PUO' ESSERE SOSTITUITA DA QBATCH O SIMILE. */ /* From System: "S65D69DA" */ /* From Library: "NERONI2" */ /* Unload Time: 2015-04-23 17:50 */ /* To File : "JNETLIBL" */ /* To Library : "NERONI2" */ /* To Text : "UF library list. Src" */ /********* INIZIO ISTRUZIONI *******************************************/ /* LE SUCCESSIVE ISTRUZIONI PERMETTONO DI RICARICARE I SORGENTI. */ /* 1) DA UN VIDEO COMANDI DELL'AS400 RICEVENTE */ /* CREARE UN FILE SORGENTE DI LUNGHEZZA RECORD 112: */ /* CRTSRCPF FILE(NERONI2/STRINGHE) RCDLEN(112) */ /* 2) SPOSTARE IL FILE "JNETLIBL.txt" NELL'INDIRIZZARIO */ /* DI UN PC CONNESSO IN RETE CON L'AS400 RICEVENTE */ /* (AD ES.: "c:\"). */ /* 3) DAL VIDEO COMANDI DEL PC CHIAMARE FTP: */ /* ftp nomeas400 */ /* 4) DIGITARE UTENTE E PASSWORD. */ /* 5) ESEGUIRE IL COMANDO DI COPIA DA FILE PC A MEMBRO AS400: */ /* put "c:\JNETLIBL.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JNETLIBL.mbr" */ /* 6) ABBANDONARE FTP: */ /* quit */ /* 7) DA UN VIDEO COMANDI DELL'AS400 RICEVENTE */ /* ESEGUIRE LA STRINGA COPIATA NEL MEMBRO SORGENTE: */ /* SBMDBJOB FILE(NERONI2/STRINGHE) MBR(JNETLIBL) JOBQ(QBATCH) */ /* LE SUCCESSIVE ISTRUZIONI PERMETTONO DI CREARE L'UTILITY. */ /* 8) DA UN VIDEO COMANDI DELL'AS400 RICEVENTE */ /* ESEGUIRE LA STRINGA O LE STRINGHE SORGENTE DI TIPO SEU "CL" */ /* (IL CUI NOME TERMINA SEMPRE CON ".") */ /* PRESENTI NEL FILE RICARICATO "NERONI2/JNETLIBL" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JNETLIBL) MBR(JNETLIBL.) JOBQ(QBATCH) */ /********* FINE ISTRUZIONI *********************************************/ /* Crea la libreria. */ MKDIR DIR('/qsys.lib/NERONI2.lib') CHGLIB LIB(NERONI2) TEXT('Utility di Claudio Neroni') /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP NERONI2 QGPL) /* Crea il file sorgente. */ DLTF FILE(NERONI2/JNETLIBL) CRTSRCPF FILE(NERONI2/JNETLIBL) RCDLEN(112) + TEXT('UF library list. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JNETLIBL) TOFILE(NERONI2/JNETLIBL) + TOMBR(JNETLIBL) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JNETLIBL) MBR(JNETLIBL) + SRCTYPE(CMD) + TEXT('UF library list. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JNETLIBL.) TOFILE(NERONI2/JNETLIBL) + TOMBR(JNETLIBL.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JNETLIBL) MBR(JNETLIBL.) + SRCTYPE(CL) + TEXT('UF library list. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JNETLIBLC) TOFILE(NERONI2/JNETLIBL) + TOMBR(JNETLIBLC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JNETLIBL) MBR(JNETLIBLC) + SRCTYPE(CLLE) + TEXT('UF library list. Cpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JNETLIBLW) TOFILE(NERONI2/JNETLIBL) + TOMBR(JNETLIBLW) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JNETLIBL) MBR(JNETLIBLW) + SRCTYPE(CMD) + TEXT('UF library list. WhereisCmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JNETLIBLWC) TOFILE(NERONI2/JNETLIBL) + TOMBR(JNETLIBLWC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JNETLIBL) MBR(JNETLIBLWC) + SRCTYPE(CLLE) + TEXT('UF library list. WhereisCpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JNETLIBLX) TOFILE(NERONI2/JNETLIBL) + TOMBR(JNETLIBLX) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JNETLIBL) MBR(JNETLIBLX) + SRCTYPE(PF) + TEXT('UF library list. WhereisOutfile') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JNETLIBL1) TOFILE(NERONI2/JNETLIBL) + TOMBR(JNETLIBL1) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JNETLIBL) MBR(JNETLIBL1) + SRCTYPE(RPGLE) + TEXT('UF library list. Legge rcd ambiente') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JNETLIBL2) TOFILE(NERONI2/JNETLIBL) + TOMBR(JNETLIBL2) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JNETLIBL) MBR(JNETLIBL2) + SRCTYPE(CLLE) + TEXT('UF library list. Lista Librerie Ambienti') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JNETLIBL3) TOFILE(NERONI2/JNETLIBL) + TOMBR(JNETLIBL3) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JNETLIBL) MBR(JNETLIBL3) + SRCTYPE(RPGLE) + TEXT('UF library list. Scrive outfile di whereis') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(WAMBANA) TOFILE(NERONI2/JNETLIBL) + TOMBR(WAMBANA) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JNETLIBL) MBR(WAMBANA) + SRCTYPE(PF) + TEXT('Tabella Ambienti') /*---------------------------------------------------------------------*/ //DATA FILE(JNETLIBL) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* UF library list. Cmd */ /* Claudio Neroni 24/02/2014 Creato. */ CMD PROMPT('UF Library List') PARM KWD(LIBR) TYPE(*NAME) LEN(10) DFT(*LIST) + SPCVAL((*LIST)) PROMPT('Libreria ambienti') PARM KWD(AMBI) TYPE(*CHAR) LEN(10) DFT(*NONE) + SPCVAL((*LIST) (*TEST) (*WHEREIS) + (*NONE)) PROMPT('Chiave ambiente') PARM KWD(LIBUSR) TYPE(*NAME) LEN(10) DFT(*NONE) + SPCVAL((*USER)) SNGVAL((*NONE)) MAX(5) + PROMPT('Libreria utente da aggiungere') PARM KWD(OUT) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*RDICMD) VALUES(*RDI *RDICMD *QCMD + *FILE) PROMPT('Output *RDI/*RDICMD/*QCMD') PARM KWD(OUTFILE) TYPE(OUTFILE) PMTCTL(FILE) + PROMPT('Output File [se OUT(*FILE)]') OUTFILE: QUAL TYPE(*NAME) DFT(JNETLIBLX) QUAL TYPE(*NAME) DFT(QTEMP) MIN(0) PROMPT('in + library') DEP CTL(&LIBR *EQ *LIST) PARM((&AMBI *EQ *NONE)) + MSGID(JNL0001) DEP CTL(&LIBR *NE *LIST) PARM((&AMBI *NE *NONE)) + MSGID(JNL0002) DEP CTL(&AMBI *EQ *WHEREIS) PARM((&LIBUSR *NE + *NONE)) MSGID(JNL0003) DEP CTL(&OUT *EQ *FILE) PARM((&AMBI *EQ + *WHEREIS)) MSGID(JNL0004) FILE: PMTCTL CTL(OUT) COND((*EQ *FILE)) //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JNETLIBL.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JNETLIBL.) JOBD(NERONI2/NERONI2) OUTQ(QPRINTS) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Claudio Neroni 24/02/2014 Creato. */ /* JNETLIBL */ /* UF library list. */ /* Prerequisiti: JRSNMSG, JLIBL, JCPYCLR, JRQS, */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella gli oggetti preesistenti. */ /*DLTF FILE(NERONI2/WAMBANA)*/ DLTF FILE(NERONI2/JNETLIBLX) DLTCMD CMD(NERONI2/JNETLIBL) DLTCMD CMD(QGPL/JNETLIBL) DLTCMD CMD(NERONI2/JNETLIBLW) DLTCMD CMD(QGPL/JNETLIBLW) DLTPGM PGM(NERONI2/JNETLIBLC) DLTPGM PGM(NERONI2/JNETLIBLWC) DLTPGM PGM(NERONI2/JNETLIBL1) DLTPGM PGM(NERONI2/JNETLIBL2) DLTPGM PGM(NERONI2/JNETLIBL3) DLTMSGF MSGF(NERONI2/JNETLIBL) /* Crea i comandi. */ CRTCMD CMD(NERONI2/JNETLIBL) PGM(JNETLIBLC) SRCFILE(JNETLIBL) + ALLOW(*ALL) MSGF(JNETLIBL) PRDLIB(NERONI2) CRTCMD CMD(NERONI2/JNETLIBLW) PGM(JNETLIBLWC) SRCFILE(JNETLIBL) + ALLOW(*ALL) MSGF(JNETLIBL) PRDLIB(NERONI2) /* Crea gli stessi comandi in QGPL. */ CRTCMD CMD(QGPL/JNETLIBL) PGM(JNETLIBLC) SRCFILE(JNETLIBL) + ALLOW(*ALL) MSGF(JNETLIBL) PRDLIB(NERONI2) CRTCMD CMD(QGPL/JNETLIBLW) PGM(JNETLIBLWC) SRCFILE(JNETLIBL) + ALLOW(*ALL) MSGF(JNETLIBL) PRDLIB(NERONI2) /* Crea gli altri oggetti. */ /*CRTPF FILE(NERONI2/WAMBANA) SRCFILE(NERONI2/JNETLIBL)*/ CRTPF FILE(NERONI2/JNETLIBLX) SRCFILE(NERONI2/JNETLIBL) CRTBNDCL PGM(NERONI2/JNETLIBLC) SRCFILE(JNETLIBL) LOG(*NO) + TGTRLS(*CURRENT) DBGVIEW(*ALL) CRTBNDCL PGM(NERONI2/JNETLIBLWC) SRCFILE(JNETLIBL) LOG(*NO) + TGTRLS(*CURRENT) DBGVIEW(*ALL) CRTBNDRPG PGM(NERONI2/JNETLIBL1) SRCFILE(JNETLIBL) DBGVIEW(*ALL) + TGTRLS(*CURRENT) CRTBNDCL PGM(NERONI2/JNETLIBL2) SRCFILE(JNETLIBL) LOG(*NO) + TGTRLS(*CURRENT) DBGVIEW(*ALL) CRTBNDRPG PGM(NERONI2/JNETLIBL3) SRCFILE(JNETLIBL) DBGVIEW(*ALL) + TGTRLS(*CURRENT) /* Messaggi. */ CRTMSGF MSGF(NERONI2/JNETLIBL) TEXT('UF library list. Msgf') /* Messaggi del Cmd. */ ADDMSGD MSGID(JNL0001) MSGF(NERONI2/JNETLIBL) MSG('LIBR(*LIST) + richiede AMBI(*NONE).') SECLVL('La libreria + ambiente *LIST richiede chiave ambiente *NONE.') ADDMSGD MSGID(JNL0002) MSGF(NERONI2/JNETLIBL) MSG('LIBR<>(*LIST) + richiede AMBI<>(*NONE).') SECLVL('La libreria ambiente + diversa da *LIST richiede chiave ambiente diversa da + *NONE') ADDMSGD MSGID(JNL0003) MSGF(NERONI2/JNETLIBL) MSG('AMBI(*WHEREIS) + e LIBUSR(*NONE) sono incompatibili.') SECLVL('La + libreria *NONE non può essere cercata nelle liste + librerie presenti sulle job description per mancanza + di significato.') ADDMSGD MSGID(JNL0004) MSGF(NERONI2/JNETLIBL) MSG('OUT(*FILE) può + essere specificato solo se è anche AMBI(*WHEREIS).') + SECLVL('Solo la funzione *WHEREIS accetta l''emissione + su output file. Inoltre l''outfile deve preesistere.') /* Messaggi del Ccp. */ ADDMSGD MSGID(JNL1000) MSGF(NERONI2/JNETLIBL) MSG('JNETLIBL + LIBR(&1) AMBI(&2) LIBUSR(&3) OUT(&4)') FMT((*CHAR 10) + (*CHAR 10) (*CHAR 54) (*CHAR 10)) ADDMSGD MSGID(JNL2000) MSGF(NERONI2/JNETLIBL) MSG('JNETLIBL + LIBR(&1) AMBI(&2) /*&2>&3*/') FMT((*CHAR 10) (*CHAR + 10) (*CHAR 70)) ADDMSGD MSGID(JNL2001) MSGF(NERONI2/JNETLIBL) MSG('JNETLIBL + LIBR(&1) AMBI(&2) /*&4^&2>&3*/') FMT((*CHAR 10) (*CHAR + 10) (*CHAR 70) (*CHAR 2)) ADDMSGD MSGID(JNL3000) MSGF(NERONI2/JNETLIBL) MSG('JNETLIBL + LIBR(&1) AMBI(*TEST) /*&1>&2*/') FMT((*CHAR 10) (*CHAR + 50)) //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JNETLIBLC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* UF library list. Cpp */ /* Claudio Neroni 24/02/2014 Creato. */ /* Lista librerie UF. */ /* Claudio Neroni 17/10/2014 Modificato. */ /* Per loggare un elenco pulito degli ambienti in RDI, */ /* se richiesto da apposito nuovo parametro LOG, */ /* ho rimosso il messaggio cpf di fine file. */ /* Il log visibile in RDI è infatti quello al massimo dettagio */ /* e per ottenere un elenco pulito sul log RDI occorre eliminare */ /* tutta la loggatura del programma salvo i messaggi */ /* che costituiscono l'elenco. */ /* Claudio Neroni 23/04/2015 Modificato. */ /* Libreria utente trasformata in elenco di 5 elementi. */ /* Riceve i parametri. */ PGM PARM(&LIBAMB &KEYAMB &LIBUSRL &OUT &OUTFILEQ) /* Riceve Libreria Ambienti. Contiene il file ambienti. */ DCL VAR(&LIBAMB) TYPE(*CHAR) LEN(10) /* Riceve Chiave Ambiente. Permette il recupero del record ambiente. */ DCL VAR(&KEYAMB) TYPE(*CHAR) LEN(10) /* Riceve Elenco Librerie Utente. Vengono aggiunte dopo QTEMP. */ DCL VAR(&LIBUSRL) TYPE(*CHAR) LEN(52) /* Riceve Output *RDI=RDI info *RDICMD=RDI comandi *QCMD=Video comandi */ DCL VAR(&OUT) TYPE(*CHAR) LEN(10) /* Riceve Nome qualificato del file di emissione. */ DCL VAR(&OUTFILEQ) TYPE(*CHAR) LEN(20) /* Edit dell'elenco Librerie Utente. */ DCL VAR(&LIBUSRE) TYPE(*CHAR) LEN(54) /* Elemento dell'elenco Librerie Utente. */ DCL VAR(&LIBUSR) TYPE(*CHAR) LEN(10) /* Primo Elemento dell'elenco Librerie Utente. */ DCL VAR(&LIBUSR1) TYPE(*CHAR) LEN(10) /* Numero di parametri ricevuti. */ DCL VAR(&LIBUSR§) TYPE(*DEC) LEN(5) /* File di emissione. */ DCL VAR(&OUTFILE) TYPE(*CHAR) LEN(10) /* Libreria del File di emissione. */ DCL VAR(&OUTLIB) TYPE(*CHAR) LEN(10) /* Utente corrente. */ DCL VAR(&CURUSER) TYPE(*CHAR) LEN(10) /* Indice di dofor. */ DCL VAR(&IX) TYPE(*INT) /* Displacement per la lettura dell'elenco librerie utente. */ DCL VAR(&ID) TYPE(*INT) /* Job description dell'ambiente e libreria. */ DCL VAR(&JOBD) TYPE(*CHAR) LEN(10) DCL VAR(&JOBDL) TYPE(*CHAR) LEN(10) /* Errore. */ DCL VAR(&ERRORE) TYPE(*CHAR) LEN(2) /* Lista librerie da ripristinare. */ DCL VAR(&USRLIBL) TYPE(*CHAR) LEN(2750) DCL VAR(&CHGLIBL) TYPE(*CHAR) LEN(2800) /* Prenotazione del CPF0001. */ DCL VAR(&CPF0001) TYPE(*LGL) /* Parametri di log da salvare e ripristinare. */ DCL VAR(&LOGLVL) TYPE(*CHAR) LEN(1) DCL VAR(&LOGSEV) TYPE(*DEC) LEN(2 0) DCL VAR(&LOGTYPE) TYPE(*CHAR) LEN(10) DCL VAR(&LOGCLPGM) TYPE(*CHAR) LEN(10) /* File ambienti, aperto se richiesto log della lista. */ DCLF FILE(WAMBANA) /* Intercetta tutto saltando a errore. */ MONMSG MSGID(CPF0000 MCH0000 CEE0000) EXEC(GOTO + CMDLBL(ERRORE)) /* Estrae parametri. */ CHGVAR VAR(&OUTFILE) VALUE(%SST(&OUTFILEQ 1 10)) CHGVAR VAR(&OUTLIB) VALUE(%SST(&OUTFILEQ 11 10)) /* Interpreta il numero di parametri ricevuti. */ CHGVAR VAR(&LIBUSR§) VALUE(%BIN(&LIBUSRL 1 2)) /* Recupera l'utente. */ RTVJOBA CURUSER(&CURUSER) /* Edita l'elenco delle librerie utente. */ DOFOR VAR(&IX) FROM(1) TO(5) IF COND(&IX > &LIBUSR§) THEN(LEAVE) CHGVAR VAR(&ID) VALUE((&IX - 1) * 10 +3) CHGVAR VAR(&LIBUSR) VALUE(%SST(&LIBUSRL &ID 10)) IF COND(&IX = 1) THEN(CHGVAR VAR(&LIBUSRE) + VALUE(&LIBUSR)) ELSE CMD(CHGVAR VAR(&LIBUSRE) VALUE(&LIBUSRE + *BCAT &LIBUSR)) ENDDO /* Se richiesto output RDI o RDI comando, logga il comando in esecuzione. */ IF COND(&OUT *EQ *RDI *OR &OUT *EQ *RDICMD) + THEN(DO) SNDPGMMSG MSGID(JNL1000) MSGF(JNETLIBL) MSGDTA(&LIBAMB + *CAT &KEYAMB *CAT &LIBUSRE *CAT &OUT) ENDDO /* Salva i parametri di log del job corrente. */ if (1=2) do RTVJOBA LOGLVL(&LOGLVL) LOGSEV(&LOGSEV) + LOGTYPE(&LOGTYPE) LOGCLPGM(&LOGCLPGM) /* Se richiesto output RDI o RDI comando, abbassa i parametri di log. */ IF COND(&OUT *EQ *RDI *OR &OUT *EQ *RDICMD) + THEN(DO) CHGJOB LOG(3 99 *MSG) LOGCLPGM(*NO) ENDDO enddo /* Se richiesto l'elenco librerie contenenti il file ambienti WAMBANA. */ IF COND(&LIBAMB *EQ *LIST) THEN(DO) /* Chiama l'elenco librerie. */ CALL PGM(JNETLIBL2) PARM(&OUT) /* Salta alle attività finali. */ GOTO CMDLBL(RCLRSC) /* Se richiesto l'elenco librerie contenenti il file ambienti WAMBANA. */ ENDDO /* Se richiesto, usa il nome utente come nome della libreria utente. */ DOFOR VAR(&IX) FROM(1) TO(5) IF COND(&IX > &LIBUSR§) THEN(LEAVE) CHGVAR VAR(&ID) VALUE((&IX - 1) * 10 +3) IF COND(%SST(&LIBUSRL &ID 10) *EQ *USER) + THEN(CHGVAR VAR(%SST(&LIBUSRL &ID 10)) + VALUE(&CURUSER)) ENDDO /* Accantona la prima libreria dell'elenco. */ IF COND(&ID *GE 1) THEN(CHGVAR VAR(&LIBUSR1) + VALUE(%SST(&LIBUSRL 3 10))) /* Controlla l'esistenza della libreria ambienti. */ CHKOBJ OBJ(&LIBAMB) OBJTYPE(*LIB) /* Se non esiste la libreria ambienti. */ MONMSG MSGID(CPF0000) EXEC(DO) /* Segnala. */ SNDPGMMSG MSG('Libreria ambienti' *BCAT &LIBAMB *BCAT + 'non esiste') /* Abbandona. */ GOTO CMDLBL(CPF0001) /* Se non esiste la libreria ambienti. */ ENDDO /* Controlla l'esistenza del file ambienti. */ CHKOBJ OBJ(&LIBAMB/WAMBANA) OBJTYPE(*FILE) /* Se non esiste il file. */ MONMSG MSGID(CPF0000) EXEC(DO) /* Segnala. */ SNDPGMMSG MSG('File ambienti WAMBANA' *BCAT 'non + esiste nella libreria' *BCAT &LIBAMB) /* Abbandona. */ GOTO CMDLBL(CPF0001) /* Se non esiste il file. */ ENDDO /* Se richiesto l'outfile. */ IF COND(&OUT *EQ *FILE) THEN(DO) /* Controlla la preesistenza dell'outfile. */ CHKOBJ OBJ(&OUTLIB/&OUTFILE) OBJTYPE(*FILE) /* Se non esiste il file. */ MONMSG MSGID(CPF0000) EXEC(DO) /* Segnala. */ SNDPGMMSG MSG('File di emissione' *BCAT &OUTFILE *BCAT + 'non preesiste nella libreria' *BCAT + &OUTLIB *TCAT '. Il file di emissione può + essere usato solo quando il presente + comando è chiamato dal comando JNETLIBLW + (Where Is Library in JOBDs addressed by + WAMBANA?).') /* Abbandona. */ GOTO CMDLBL(CPF0001) /* Se non esiste il file. */ ENDDO /* Reindirizza l'outfile. */ OVRDBF FILE(JNETLIBLX) TOFILE(&OUTLIB/&OUTFILE) /* Se richiesto l'outfile. */ ENDDO /* Se richiesto l'elenco ambienti. */ IF COND(&KEYAMB *EQ *LIST) THEN(DO) /* Reindirizza il file ambienti. */ OVRDBF FILE(WAMBANA) TOFILE(&LIBAMB/WAMBANA) + LVLCHK(*NO) /* Cicla. */ DOWHILE COND('1') /* Legge un record ambiente. */ RCVF /* Se non ce ne sono altri. */ MONMSG MSGID(CPF0864) EXEC(DO) /* Se richiamato da RDI. */ IF COND(&OUT *EQ *RDI *OR &OUT *EQ *RDICMD) + THEN(DO) /* Rimuove il messaggio di fine file. */ RCVMSG MSGTYPE(*EXCP) /* Se richiamato da RDI. */ ENDDO /* Abbandona. */ GOTO CMDLBL(RCLRSC) /* Se non ce ne sono altri. */ ENDDO /* Se richiesto output RDI comando. */ IF COND(&OUT *EQ *RDICMD) THEN(DO) /* Logga l'ambiente come comando. */ SNDPGMMSG MSGID(JNL2000) MSGF(JNETLIBL) MSGDTA(&LIBAMB + *CAT &WACOD *CAT &WADESC) /* Se richiesto output RDI comando. */ ENDDO /* Se richiesto output RDI o QCMD. */ IF COND(&OUT *EQ *RDI *OR &OUT *EQ *QCMD) THEN(DO) /* Logga l'ambiente. */ SNDPGMMSG MSG(&WACOD *CAT ' ' *CAT &WADESC) /* Se richiesto output RDI o QCMD. */ ENDDO /* Cicla. */ ENDDO /* Abbandona. */ GOTO CMDLBL(RCLRSC) /* Se richiesto l'elenco ambienti. */ ENDDO /* Se richiesto l'elenco ambienti con test. */ IF COND(&KEYAMB *EQ *TEST) THEN(DO) /* Accantona la lista librerie corrente. */ RTVJOBA USRLIBL(&USRLIBL) /* Reindirizza il file ambienti. */ OVRDBF FILE(WAMBANA) TOFILE(&LIBAMB/WAMBANA) + LVLCHK(*NO) /* Cicla. */ DOWHILE COND('1') /* Legge un record ambiente. */ RCVF /* Se non ce ne sono altri. */ MONMSG MSGID(CPF0864) EXEC(DO) /* Se richiamato da RDI. */ IF COND(&OUT *EQ *RDI *OR &OUT *EQ *RDICMD) + THEN(DO) /* Rimuove il messaggio di fine file. */ RCVMSG MSGTYPE(*EXCP) /* Se richiamato da RDI. */ ENDDO /* Abbandona. */ GOTO CMDLBL(RCLRSC) /* Se non ce ne sono altri. */ ENDDO /* Assume nessun errore. */ CHGVAR VAR(&ERRORE) VALUE('ok') /* Imposta la lista librerie indicata sul record. */ JLIBL JOBD(&WAJOBDL/&WAJOBD) LOG(*NO) /* Se errore in lista librerie, annota errore. */ MONMSG MSGID(CPF0000 MCH0000) EXEC(CHGVAR + VAR(&ERRORE) VALUE('ER')) /* Se richiesto output RDI comando. */ IF COND(&OUT *EQ *RDICMD) THEN(DO) /* Logga l'ambiente come comando. */ SNDPGMMSG MSGID(JNL2001) MSGF(JNETLIBL) MSGDTA(&LIBAMB + *CAT &WACOD *CAT &WADESC *CAT &ERRORE) /* Se richiesto output RDI comando. */ ENDDO /* Se richiesto output RDI o QCMD. */ IF COND(&OUT *EQ *RDI *OR &OUT *EQ *QCMD) THEN(DO) /* Logga l'ambiente. */ SNDPGMMSG MSG(&WACOD *CAT ' ' *CAT &ERRORE *CAT ' ' + *CAT &WADESC) /* Se richiesto output RDI o QCMD. */ ENDDO /* Cicla. */ ENDDO /* Ripristina la lista librerie di partenza. */ CHGVAR VAR(&CHGLIBL) VALUE('CHGLIBL (' *TCAT + &USRLIBL *TCAT ')') CALL PGM(QCMDEXC) PARM(&CHGLIBL 2800) /* Abbandona. */ GOTO CMDLBL(RCLRSC) /* Se richiesto l'elenco ambienti con test. */ ENDDO /* Controlla se in ogni lista librerie testata esiste la libreria utente. */ IF COND(&KEYAMB *EQ *WHEREIS) THEN(DO) CHKOBJ OBJ(&LIBUSR1) OBJTYPE(*LIB) RTVJOBA USRLIBL(&USRLIBL) /* Reindirizza il file ambienti. */ OVRDBF FILE(WAMBANA) TOFILE(&LIBAMB/WAMBANA) + LVLCHK(*NO) /* Cicla. */ DOWHILE COND('1') /* Legge un record ambiente. */ RCVF /* Se non ce ne sono altri, abbandona. */ MONMSG MSGID(CPF0864) EXEC(LEAVE) /* Assume flag di errore ok. */ CHGVAR VAR(&ERRORE) VALUE(' ') /* Imposta la lista librerie prevista dal record. */ JLIBL JOBD(&WAJOBDL/&WAJOBD) /* Se la lista è in errore, annota errore nel flag. */ MONMSG MSGID(CPF0000 MCH0000) EXEC(CHGVAR + VAR(&ERRORE) VALUE(ER)) /* Se non corre errore. */ IF COND(&ERRORE *NE ER) THEN(DO) /* Tenta l'aggiunta della libreria cercata in coda. */ ADDLIBLE LIB(&LIBUSR1) POSITION(*LAST) /* Se già in lista, annota IH = IsHere */ MONMSG MSGID(CPF0000 MCH0000) EXEC(CHGVAR + VAR(&ERRORE) VALUE(IH)) /* Se non corre errore. */ ENDDO /* Segnala il risultato. */ SNDPGMMSG MSG(&WACOD *CAT ' ' *CAT &ERRORE *CAT ' ' + *CAT &WADESC) /* Se richiesto l'outfile, scrive le informazioni anche lì. */ IF COND(&OUT *EQ *FILE) THEN(DO) CALL PGM(JNETLIBL3) PARM(&LIBUSR1 &LIBAMB &WACOD + &ERRORE &WAJOBDL &WAJOBD &WADESC) ENDDO /* Cicla. */ ENDDO /* Ripristina la lista librerie iniziale. */ CHGVAR VAR(&CHGLIBL) VALUE('CHGLIBL (' *TCAT + &USRLIBL *TCAT ')') CALL PGM(QCMDEXC) PARM(&CHGLIBL 2800) /* Salta a chiusura. */ GOTO CMDLBL(RCLRSC) /* Controlla se in ogni lista librerie testata esiste la libreria utente. */ ENDDO /* Reindirizza il file ambienti. */ OVRDBF FILE(WAMBANA) TOFILE(&LIBAMB/WAMBANA) + LVLCHK(*NO) /* Legge il record ambiente corrispondente alla chiave ricevuta. */ CALL PGM(JNETLIBL1) PARM(&KEYAMB &JOBD &JOBDL) /* Se non ha trovato la chiave cercata. */ IF COND(&JOBD *EQ *NONE) THEN(DO) /* Segnala. */ SNDPGMMSG MSG('Chiave' *BCAT &KEYAMB *BCAT 'non + trovata nel file ambienti WAMBANA della + libreria' *BCAT &LIBAMB) /* Abbandona. */ GOTO CMDLBL(CPF0001) /* Se non ha trovato la chiave cercata. */ ENDDO /* Se richiesto elenco librerie utente. */ IF COND(&LIBUSR1 *NE *NONE) THEN(DO) /* Percorre la lista estraendo tutte le librerie utente da aggiungere. */ DOFOR VAR(&IX) FROM(1) TO(5) IF COND(&IX > &LIBUSR§) THEN(LEAVE) CHGVAR VAR(&ID) VALUE((&IX - 1) * 10 +3) CHGVAR VAR(&LIBUSR) VALUE(%SST(&LIBUSRL &ID 10)) /* Controlla l'esistenza della libreria utente. */ CHKOBJ OBJ(&LIBUSR) OBJTYPE(*LIB) /* Se non esiste la libreria utente. */ MONMSG MSGID(CPF0000) EXEC(DO) /* Segnala. */ SNDPGMMSG MSG('Libreria utente' *BCAT &LIBUSR *BCAT + 'non esiste') /* Abbandona. */ GOTO CMDLBL(CPF0001) /* Se non esiste la libreria utente. */ ENDDO /* Percorre la lista estraendo tutte le librerie utente da aggiungere. */ ENDDO /* Se richiesto elenco librerie utente. */ ENDDO /* Sostituisce la lista librerie. */ JLIBL JOBD(&JOBDL/&JOBD) /* Se richiesta libreria utente. */ IF COND(&LIBUSR *NE *NONE) THEN(DO) /* Percorre la lista a rovescio. */ DOFOR VAR(&IX) FROM(1) TO(5) IF COND(&IX > &LIBUSR§) THEN(LEAVE) CHGVAR VAR(&ID) VALUE((&LIBUSR§ - &IX) * 10 +3) CHGVAR VAR(&LIBUSR) VALUE(%SST(&LIBUSRL &ID 10)) /* Aggiunge la libreria utente alla lista dopo la libreria temporanea. */ RMVLIBLE LIB(&LIBUSR) MONMSG MSGID(CPF0000 MCH0000) ADDLIBLE LIB(&LIBUSR) POSITION(*AFTER QTEMP) MONMSG MSGID(CPF0000 MCH0000) /* Percorre la lista a rovescio. */ ENDDO /* Se richiesta libreria utente. */ ENDDO /* Manda messaggio di felice esecuzione. */ SNDPGMMSG MSG('Lista librerie OK') MSGTYPE(*COMP) /* Label di esecuzione delle attività finali. */ RCLRSC: /* Riacquisisce le risorse. */ RCLRSC MONMSG MSGID(CPF0000 MCH0000) /* Ripristina i parametri di log del job corrente. */ if (1=2) do CHGJOB LOG(&LOGLVL &LOGSEV &LOGTYPE) + LOGCLPGM(&LOGCLPGM) enddo /* Se richiesto, rilascia il CPF0001. */ IF COND(&CPF0001) THEN(DO) SNDPGMMSG MSGID(CPF0001) MSGF(QCPFMSG) + MSGDTA(JNETLIBL) MSGTYPE(*ESCAPE) MONMSG MSGID(CPF0000 MCH0000) ENDDO /* Ritorna. */ RETURN /* Label di errore. */ ERRORE: /* Restituisce i messaggi al chiamante, */ /* trasformando eventuali escape in diagnostici. */ JRSNMSG MONMSG MSGID(CPF0000 MCH0000) /* Label di prenotazione del CPF0001. */ CPF0001: /* Prenota il CPF0001. */ CHGVAR VAR(&CPF0001) VALUE('1') MONMSG MSGID(CPF0000 MCH0000) /* Salta alle attività finali. */ GOTO CMDLBL(RCLRSC) ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JNETLIBLW) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* UF library list. WhereisCmd */ /* Claudio Neroni 17/03/2015 Creato. */ CMD PROMPT('UF library list. Whereis') PARM KWD(LIBUSR) TYPE(*NAME) LEN(10) MIN(1) + PROMPT('Libreria Where Is') PARM KWD(OUTFILE) TYPE(OUTFILE) PROMPT('Output + File') OUTFILE: QUAL TYPE(*NAME) DFT(JNETLIBLX) QUAL TYPE(*NAME) DFT(QTEMP) MIN(0) PROMPT('in + library') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JNETLIBLWC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* UF library list. WhereisCpp */ /* Claudio Neroni 17/03/2015 Creato. */ /* Elenca nell'output file gli ambienti che contengono */ /* la libreria cercata. */ /* Riceve i parametri. */ PGM PARM(&LIBUSR &OUTFILEQ) /* Riceve Libreria Utente da cercare negli ambienti. */ DCL VAR(&LIBUSR) TYPE(*CHAR) LEN(10) /* Riceve Nome qualificato del file di emissione. */ DCL VAR(&OUTFILEQ) TYPE(*CHAR) LEN(20) /* File di emissione. */ DCL VAR(&OUTFILE) TYPE(*CHAR) LEN(10) /* Libreria del File di emissione. */ DCL VAR(&OUTLIB) TYPE(*CHAR) LEN(10) /* Contatore righe emesse. */ DCL VAR(&CNT) TYPE(*DEC) LEN(5 0) /* Prenotazione del CPF0001. */ DCL VAR(&CPF0001) TYPE(*LGL) /* Elenco dei file ambienti. */ DCLF FILE(QADSPOBJ) /* Intercetta tutto saltando a fine. */ MONMSG MSGID(CPF0000 MCH0000 CEE0000) EXEC(GOTO + CMDLBL(FINE)) /* Estrae parametri. */ CHGVAR VAR(&OUTFILE) VALUE(%SST(&OUTFILEQ 1 10)) CHGVAR VAR(&OUTLIB) VALUE(%SST(&OUTFILEQ 11 10)) /* Controlla l'esistenza della libreria utente. */ CHKOBJ OBJ(&LIBUSR) OBJTYPE(*LIB) /* Se non esiste la libreria utente. */ MONMSG MSGID(CPF0000) EXEC(DO) /* Segnala. */ SNDPGMMSG MSG('Libreria utente' *BCAT &LIBUSR *BCAT + 'non esiste. L''algoritmo di ricerca ne + richiede l''esistenza.') /* Abbandona. */ GOTO CMDLBL(ULTIMO) /* Se non esiste la libreria utente. */ ENDDO /* Crea il file di emissione. */ JCPYCLR FROMFILE(JNETLIBLX) TOFILE(&OUTLIB/&OUTFILE) /* Ridirige la scrittura sul file di emissione. */ OVRDBF FILE(JNETLIBLX) TOFILE(&OUTLIB/&OUTFILE) /* Avanzamento. */ SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('Elenca + le librerie contenenti WAMBANA') + TOPGMQ(*EXT) MSGTYPE(*STATUS) /* Genera l'elenco dei file ambienti. */ DSPOBJD OBJ(*ALL/WAMBANA) OBJTYPE(*FILE) + OUTPUT(*OUTFILE) OUTFILE(QTEMP/JNETLIBLWF) /* Se non trova file, segnala e salta a fine. */ MONMSG MSGID(CPF0000) EXEC(DO) SNDPGMMSG MSG('Non esistono file WAMBANA sul sistema') GOTO CMDLBL(FINE) ENDDO /* Pulisce l'elenco di emissione. */ /*********** CLRPFM FILE(JNETLIBLX) /**/ /* Reindirizza l'elenco dei file ambienti. */ OVRDBF FILE(QADSPOBJ) TOFILE(QTEMP/JNETLIBLWF) /* Cicla. */ DOWHILE COND('1') /* Legge dall'elenco dei file ambienti. */ RCVF /* Se non ce ne sono altri, abbandona. */ MONMSG MSGID(CPF0864) EXEC(LEAVE) /* Avanzamento. */ SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&ODLBNM) + TOPGMQ(*EXT) MSGTYPE(*STATUS) /* Esamina una libreria ambienti e scarica nel file di emissione. */ JNETLIBL LIBR(&ODLBNM) AMBI(*WHEREIS) LIBUSR(&LIBUSR) + OUT(*FILE) OUTFILE(&OUTLIB/&OUTFILE) /* Conta le librerie esaminate. */ CHGVAR VAR(&CNT) VALUE(&CNT +1) /* Cicla. */ ENDDO /* Fine. */ FINE: /* Chiude scrittura outfile. */ RCLRSC /* Annuncia l'emissione. */ SNDPGMMSG MSG('Esamina il file di emissione con:') MONMSG MSGID(CPF0000 MCH0000) JRQS CMD(RUNQRY QRY(NERONI2/JNETLIBLQ) + QRYFILE((&OUTLIB/&OUTFILE)) RCDSLT(*YES)) MONMSG MSGID(CPF0000 MCH0000) /* Se non ha emesso righe, segnala elenco vuoto. */ IF COND(&CNT *EQ 0) THEN(DO) SNDPGMMSG MSG('Non esistono ambienti contenenti la + libreria' *BCAT &LIBUSR) MONMSG MSGID(CPF0000 MCH0000) ENDDO RETURN /* Ultimo. */ ULTIMO: RCLRSC ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JNETLIBLX) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * UF library list. WhereisOutfile * Claudio Neroni 17-03-2015 Creato. A R WIOF A TEXT('UF library list. + A WhereisOutfile') A LIBUSR 10 A COLHDG('Libreria' + A 'whereis') A LIBAMB 10 A COLHDG('Libreria' + A 'ambienti') A WACOD 10 A COLHDG('Codice' + A 'ambiente') A ERRORE 2 A COLHDG('Flag whereis' + A 'blank/ER/IH') A WAJOBDL 10 A COLHDG('Job desc' + A 'library') A WAJOBD 10 A COLHDG('Job' + A 'description') A WADESC 70 A COLHDG('Descrizione' + A 'ambiente') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JNETLIBL1) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * 06-02-2014 Claudio Neroni. Creato * Recupera la job description e la sua libreria * dal record ambiente. *------------------------------------------------------------------------- * Ambienti. Fwambana if e k disk *------------------------------------------------------------------------- * Definisce parametri. D ppwacod s like(wacod ) D ppwajobd s like(wajobd ) D ppwajobdl s like(wajobdl) *------------------------------------------------------------------------- * Scambia parametri. C *entry plist * Riceve Ambiente. C parm ppwacod I Ambiente * Restituisce Job description dell'Ambiente. C parm ppwajobd O JobDesc * Restituisce Libreria della Job description dell'Ambiente. C parm ppwajobdl O JobDescLib * Assume ricerca fallita. C eval ppwajobd = '*NONE' C clear ppwajobdl * Cerca il record ambiente. C ppwacod chain wambana * Se trova, restituisce Job description e Libreria. C if %found C eval ppwajobd = wajobd C eval ppwajobdl = wajobdl C endif * Predispone chiusura. C seton lr *------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JNETLIBL2) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* UF library list. Lista Librerie Ambienti */ /* Claudio Neroni 20/10/2014 Creato. */ /* Elenca tutte le librerie che contengono il file ambienti WAMBANA. */ /* Riceve i parametri. */ PGM PARM(&OUT) /* Riceve Output *RDI=RDI info *RDICMD=RDI comandi *QCMD=Video comandi */ DCL VAR(&OUT) TYPE(*CHAR) LEN(10) /* Testo libreria. */ DCL VAR(&TEXT) TYPE(*CHAR) LEN(50) /* Contatore righe emesse. */ DCL VAR(&CNT) TYPE(*DEC) LEN(5 0) /* Messaggio recuperato. */ DCL VAR(&RTVMSG) TYPE(*CHAR) LEN(100) /* Elenco dei file ambienti. */ DCLF FILE(QADSPOBJ) /* Genera l'elenco dei file ambienti. */ DSPOBJD OBJ(*ALL/WAMBANA) OBJTYPE(*FILE) + OUTPUT(*OUTFILE) OUTFILE(QTEMP/JNETLIBL2) /* Se non trova file, salta a fine. */ MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(FINE)) /* Rimuove i messaggi dal log del programma corrente. */ DOWHILE COND('1') RCVMSG PGMQ(*SAME) MSGTYPE(*LAST) MSG(&RTVMSG) IF COND(&RTVMSG *EQ ' ') THEN(LEAVE) ENDDO /* Rimuove i messaggi dal log del programma chiamante. */ DOWHILE COND('1') RCVMSG PGMQ(*PRV) MSGTYPE(*LAST) MSG(&RTVMSG) IF COND(&RTVMSG *EQ ' ') THEN(LEAVE) /*********** IF COND(%SST(&RTVMSG 1 8) *EQ JNETLIBL) + THEN(LEAVE) /**/ ENDDO /* Reindirizza l'elenco dei file ambienti. */ OVRDBF FILE(QADSPOBJ) TOFILE(QTEMP/JNETLIBL2) /* Cicla. */ DOWHILE COND('1') /* Legge dall'elenco dei file ambienti. */ RCVF /* Se non ce ne sono altri, abbandona. */ MONMSG MSGID(CPF0864) EXEC(LEAVE) /* Recupera il testo della libreria. */ RTVLIBD LIB(&ODLBNM) TEXT(&TEXT) /* Se il testo manca, assume "...". */ IF COND(&TEXT *EQ ' ') THEN(CHGVAR VAR(&TEXT) + VALUE('...')) /* Se richiesto output RDI comando. */ IF COND(&OUT *EQ *RDICMD) THEN(DO) /* Logga nome e testo della libreria come comando. */ SNDPGMMSG MSGID(JNL3000) MSGF(JNETLIBL) MSGDTA(&ODLBNM + *CAT &TEXT) TOPGMQ(*PRV (JNETLIBLC)) /* Se richiesto output RDI comando. */ ENDDO /* Se richiesto output RDI o QCMD. */ IF COND(&OUT *EQ *RDI *OR &OUT *EQ *QCMD) THEN(DO) /* Logga nome e testo della libreria. */ SNDPGMMSG MSG(&ODLBNM *CAT ' ' *CAT &TEXT) TOPGMQ(*PRV + (JNETLIBLC)) /* Se richiesto output RDI o QCMD. */ ENDDO /* Conta le righe emesse. */ CHGVAR VAR(&CNT) VALUE(&CNT +1) /* Cicla. */ ENDDO /* Rimuove il messaggio di fine file. */ RCVMSG MSGTYPE(*EXCP) /* Fine. */ FINE: /* Se non ha emesso righe, segnala elenco vuoto. */ IF COND(&CNT *EQ 0) THEN(SNDPGMMSG MSG('Non + esistono file ambienti WAMBANA + utilizzabili.') TOPGMQ(*PRV (JNETLIBLC))) ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JNETLIBL3) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * 17-03-2015 Claudio Neroni. Creato * Scrive outfile di whereis. * Scrive il record ambiente ricevuto nei parametri * nel file di comodo JNETLIBLW. * CALL PGM(JNETLIBL3) PARM(&LIBUSR &LIBAMB &WACOD + * &ERRORE &WAJOBDL &WAJOBD &WADESC) *------------------------------------------------------------------------- * UF library list. WhereisOutfile Fjnetliblx if a e disk *------------------------------------------------------------------------- * Scambia parametri. C *entry plist * Riceve Libreria Whereis. C parm libusr I Lib WhereIs * Riceve Libreria Ambienti. C parm libamb I Lib Ambienti * Riceve Codice Ambiente. C parm wacod I Cod Ambiente * Riceve Flag blank/ER/IH. C parm errore I Flag IsHere * Riceve Libreria della Job description dell'Ambiente. C parm wajobdl I JobDescLib * Riceve Job description dell'Ambiente. C parm wajobd I JobDesc * Riceve Descrizione dell'Ambiente. C parm wadesc I Desc Ambiente * Scrive il record ambiente. C write wiof * Ritorna senza chiudere. C return *------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(WAMBANA) FILETYPE(*SRC) ENDCHAR('//ENDSRC') UNIQUE R WAMANR TEXT('AMBIENTI') USED‘ WACOD 10A TEXT('CODICE LIBRERIE') USED‘ WADESC 70A TEXT('DESCRIZIONE COMPLETA') WADESB 50A TEXT('DESCRIZIONE BREVE') WADISAB 1A TEXT('FLAG DISABILITATO') WADTIN 8P 0 TEXT('DATA INIZIO VALIDITA') WADTFI 8P 0 TEXT('DATA FINE VALIDITA') WAGRUP 3A TEXT('GRUPPO ABBINATO') USED‘ WAJOBD 10A TEXT('JOBD SOSTITUTIVA') USED‘ WAJOBDL 10A TEXT('LIBRERIA JOBD SOSTIT.') WALIBMN 10A TEXT('LIBRERIA DI DESTIN.X WMENU') WAFILMN 10A TEXT('FILE WMENU PERONALIZZATO') WAFILAZ 10A TEXT('FILE WAZIONI PERONALIZZATO') WAINQUI 1A TEXT('FLAG SOLO INQUIRY') WAPRO01 10A TEXT('PROCEDEDURA 01') WAPRO02 10A TEXT('PROCEDEDURA 02') WAPRO03 10A TEXT('PROCEDEDURA 03') WAPRO04 10A TEXT('PROCEDEDURA 04') WAPRO05 10A TEXT('PROCEDEDURA 05') WAPRO06 10A TEXT('PROCEDEDURA 06') WAPRO07 10A TEXT('PROCEDEDURA 07') WAPRO08 10A TEXT('PROCEDEDURA 08') WAPRO09 10A TEXT('PROCEDEDURA 09') WAPRO10 10A TEXT('PROCEDEDURA 10') WAPRO11 10A TEXT('PROCEDEDURA 11') WAPRO12 10A TEXT('PROCEDEDURA 12') WAPRO13 10A TEXT('PROCEDEDURA 13') WAPRO14 10A TEXT('PROCEDEDURA 14') WAPRO15 10A TEXT('PROCEDEDURA 15') WACOLOR 6A TEXT('COLORE') WATBCOL 10A TEXT('SFONDO TOP BANNER') WAFILLE 39A TEXT('FILLER') ***************** WAPATH 39A TEXT('INDIRIZZO IFS') K WACOD //ENDSRC //ENDBCHJOB