//BCHJOB JOB(JSMP) JOBD(QBATCH) OUTQ(QPRINT) ENDSEV(60) + LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Open source scaricabile da www.neroni.it di Claudio Neroni */ /* SE L'USO DELLA JOB DESCRIPTION "QBATCH" TI E' IMPEDITO, */ /* UTILIZZANE UNA DIVERSA. */ /* From System: "PUB1" */ /* From Library: "NERONI2" */ /* Unload Time: 2009-03-07 19:56 */ /* To File : "JSMP" */ /* To Library : "NERONI2" */ /* To Text : "Sample. 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 "JSMP.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:\JSMP.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JSMP.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(JSMP) 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/JSMP" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JSMP) MBR(JSMP.) 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/JSMP) CRTSRCPF FILE(NERONI2/JSMP) RCDLEN(112) + TEXT('Sample. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JSMPC) TOFILE(NERONI2/JSMP) + TOMBR(JSMPC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JSMP) MBR(JSMPC) + SRCTYPE(CLLE) + TEXT('Sample. DspAnag Cl') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JSMPL) TOFILE(NERONI2/JSMP) + TOMBR(JSMPL) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JSMP) MBR(JSMPL) + SRCTYPE(CBLLE) + TEXT('Sample. DspAnag Cbl') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JSMPR) TOFILE(NERONI2/JSMP) + TOMBR(JSMPR) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JSMP) MBR(JSMPR) + SRCTYPE(RPGLE) + TEXT('Sample. DspAnag Rpg') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JSMPW) TOFILE(NERONI2/JSMP) + TOMBR(JSMPW) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JSMP) MBR(JSMPW) + SRCTYPE(DSPF) + TEXT('Sample. DspAnag') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JSMP1) TOFILE(NERONI2/JSMP) + TOMBR(JSMP1) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JSMP) MBR(JSMP1) + SRCTYPE(PF) + TEXT('Sample. Anag') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JSMP1L) TOFILE(NERONI2/JSMP) + TOMBR(JSMP1L) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JSMP) MBR(JSMP1L) + SRCTYPE(LF) + TEXT('Sample. Anag') /*---------------------------------------------------------------------*/ //DATA FILE(JSMPC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') PGM DCLF FILE(JSMP1) OPNID(F) DCLF FILE(JSMPW) OPNID(W) DOUNTIL COND(1 = 2) RCVF OPNID(F) MONMSG MSGID(CPF0000) EXEC(LEAVE) CHGVAR VAR(&W_A1ANNU ) VALUE(&F_A1ANNU ) CHGVAR VAR(&W_A1CDFI ) VALUE(&F_A1CDFI ) CHGVAR VAR(&W_A1COGN ) VALUE(&F_A1COGN ) CHGVAR VAR(&W_A1CAPX ) VALUE(&F_A1CAPX ) CHGVAR VAR(&W_A1NOME ) VALUE(&F_A1NOME ) CHGVAR VAR(&W_A1DTNA ) VALUE(&F_A1DTNA ) SNDRCVF OPNID(W) IF COND(&W_IN01 = '1') THEN(LEAVE) ENDDO ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JSMPL) FILETYPE(*SRC) ENDCHAR('//ENDSRC') PROCESS DATETIME. IDENTIFICATION DIVISION. PROGRAM-ID. JSMPL. AUTHOR. CLAUDIO NERONI. *---------------------------------------------------------------- ENVIRONMENT DIVISION. *--------------------- CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-AS400. OBJECT-COMPUTER. IBM-AS400. SPECIAL-NAMES. DECIMAL-POINT IS COMMA. *--------------------- INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FISICO ASSIGN DATABASE-JSMP1 ORGANIZATION SEQUENTIAL ACCESS SEQUENTIAL. SELECT VIDEO ASSIGN WORKSTATION-JSMPW-SI ORGANIZATION TRANSACTION. *---------------------------------------------------------------- DATA DIVISION. *--------------------- FILE SECTION. FD FISICO. 01 RECORD-FISICO. COPY DDS-ALL-FORMAT OF JSMP1. FD VIDEO. 01 RECORD-VIDEO. COPY DDS-ALL-FORMAT OF JSMPW. *--------------------- WORKING-STORAGE SECTION. 01 INDICATORI. 05 INDICATORE OCCURS 99 PIC 1 INDICATOR 1. 77 ACCESO PIC 1 VALUE B"1". *---------------------------------------------------------------- PROCEDURE DIVISION. FLUSSO-PRINCIPALE. OPEN INPUT FISICO. OPEN I-O VIDEO. LEGGE-PROSSIMO-RECORD. READ FISICO NEXT END GO FINE. PERFORM MUOVE-DA-FISICO-A-W1. WRITE RECORD-VIDEO FORMAT "W1" INDICATOR INDICATORI. READ VIDEO FORMAT "W1" INDICATOR INDICATORI. IF INDICATORE (01) = ACCESO GO FINE. GO LEGGE-PROSSIMO-RECORD. *--------------------- * Chiude i file e ritorna. FINE. CLOSE fisico. CLOSE VIDEO. STOP RUN. *--------------------- * Routine. MUOVE-DA-FISICO-A-W1. MOVE A1ANNU OF RECORD-FISICO TO A1ANNU OF W1-O. MOVE A1CDFI OF RECORD-FISICO TO A1CDFI OF W1-O. MOVE A1COGN OF RECORD-FISICO TO A1COGN OF W1-O. MOVE A1CAPX OF RECORD-FISICO TO A1CAPX OF W1-O. MOVE A1NOME OF RECORD-FISICO TO A1NOME OF W1-O. MOVE A1DTNA OF RECORD-FISICO TO A1DTNA OF W1-O. *---------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JSMPR) FILETYPE(*SRC) ENDCHAR('//ENDSRC') FJSMP1 if e disk FJSMPw cf e workstn C do *hival C read JSMP1 C if %eof C leave C endif C exfmt w1 C if *in01 C leave C endif C enddo C eval *inlr = *on //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JSMPW) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A DSPSIZ(24 80 *DS3) A INDARA A R W1 A CA01(01) A 1 35'Anagrafica' A DSPATR(HI) A DSPATR(UL) A 3 23'Annulamento:' A A1ANNU R O 3 39REFFLD(A1ANNU JSMP1) A 4 23'Codice fiscale:' A A1CDFI R O 4 39REFFLD(A1CDFI JSMP1) A 5 23'Cognome:' A A1COGN R O 5 39REFFLD(A1COGN JSMP1) A 6 23'Cap:' A A1CAPX R O 6 39REFFLD(A1CAPX JSMP1) A 7 23'Nome:' A A1NOME R O 7 39REFFLD(A1NOME JSMP1) A 8 23'Data nascita:' A A1DTNA R O 8 39REFFLD(A1DTNA JSMP1) A DATFMT(*EUR) A 23 2'F1=Fine' //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JSMP1) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R JSMP1R TEXT('Anagrafico') A A1ANNU 1 COLHDG('Annullamento') A VALUES(' ' 'A') A A1CDFI 16 COLHDG('Codice' 'fiscale') A A1COGN 15 COLHDG('Cognome') A A1CAPX 5 0 COLHDG('Cap') A EDTCDE(L) A A1NOME 20 COLHDG('Nome') A A1DTNA L COLHDG('Data' 'nascita') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JSMP1L) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A UNIQUE A R JSMP1R PFILE(JSMP1) A K A1CDFI A O A1ANNU COMP(EQ 'A') //ENDSRC //ENDBCHJOB