//BCHJOB JOB(JDAT) 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-07-16 10:00 */ /* To File : "JDAT" */ /* To Library : "NERONI2" */ /* To Text : "Date calc. 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 "JDAT.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:\JDAT.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JDAT.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(JDAT) 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/JDAT" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JDAT) MBR(JDAT.) 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/JDAT) CRTSRCPF FILE(NERONI2/JDAT) RCDLEN(112) + TEXT('Date calc. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JDATWD) TOFILE(NERONI2/JDAT) + TOMBR(JDATWD) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JDAT) MBR(JDATWD) + SRCTYPE(RPGLE) + TEXT('Date calc. Week day.') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JDATWDK) TOFILE(NERONI2/JDAT) + TOMBR(JDATWDK) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JDAT) MBR(JDATWDK) + SRCTYPE(RPGLE) + TEXT('Date calc. Week day. Sample call') /*---------------------------------------------------------------------*/ //DATA FILE(JDATWD) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Date calc. Week day. * Claudio Neroni 15-07-2015 Creato. * Calcola il giorno della settimana. *--------------------------------------------------------------------------------------------- * Data di riferimento. D rif s d inz(d'0001-01-01') * Data di comodo. D dat s d *--------------------------------------------------------------------------------------------- * Scambia parametri. C *entry plist * Riceve data numerica CCYYMMDD. C parm ppdat 8 0 I Date CCYYMMDD * Ritorna giorno della settimana 1=dom, 2=lun, ..., 7=sab, 8=err. C parm wd ppwd 1 0 O Week day (1=dom... * Calcola il giorno della settimana. C exsr srwd * Ritorna senza terminare. C return *--------------------------------------------------------------------------------------------- * Calcola il giorno della settimana. C srwd begsr * Pulisce il valore di ritorno C clear wd 1 0 * Pulisce la distanza in gioni tra la data richiesta e la data di riferimento. C clear dif 15 0 * Trascrive la data numerica nella data in formato data. C eval dat = %date(ppdat:*iso) * Trova la distanza in giorni. C eval dif = %diff(dat:rif:*days) * Se la distanza è negativa, ritorna errore e abbandona. C if dif < *zero C eval wd = 8 C leavesr C endif * Trova il resto della divisione della distanza per 7 e aggiunge un correttivo. C eval wd = %rem(dif:7) + 2 * Normalizza il risultato tra 1 e 7. C if wd > 7 C eval wd = wd - 7 C endif C endsr *--------------------------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JDATWDK) FILETYPE(*SRC) ENDCHAR('//ENDSRC') D des s 3 dim(8) ctdata perrcd(7) C *entry plist C parm ppdat 8 0 I Date CCYYMMDD C call 'JDATWD' C parm ppdat 8 0 I Date CCYYMMDD C parm ppwd 1 0 O Week day (1=dom... C clear dsp 50 C eval dsp='Date:'+%char(ppdat)+ C ' WeekDay:'+des(ppwd) C dsply dsp C seton lr ** domlunmarmergiovensab??? //ENDSRC //ENDBCHJOB