//BCHJOB JOB(JCHAPAK) JOBD(QBATCH) OUTQ(QPRINT) ENDSEV(60) + LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Open source scaricabile da www.neroni.it */ /* SE L'USO DELLA JOB DESCRIPTION "QBATCH" TI E' IMPEDITO, */ /* UTILIZZANE UNA DIVERSA. */ /* From System: "S65D69DA" */ /* From Library: "NERONI2" */ /* Unload Time: 2014-02-05 13:21 */ /* To File : "JCHAPAK" */ /* To Library : "NERONI2" */ /* To Text : "From Character To Packed. 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 "JCHAPAK.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:\JCHAPAK.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JCHAPAK.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(JCHAPAK) 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/JCHAPAK" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JCHAPAK) MBR(JCHAPAK.) 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/JCHAPAK) CRTSRCPF FILE(NERONI2/JCHAPAK) RCDLEN(112) + TEXT('From Character To Packed. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHAPAK) TOFILE(NERONI2/JCHAPAK) + TOMBR(JCHAPAK) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHAPAK) MBR(JCHAPAK) + SRCTYPE(CMD) + TEXT('From Character To Packed. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHAPAK.) TOFILE(NERONI2/JCHAPAK) + TOMBR(JCHAPAK.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHAPAK) MBR(JCHAPAK.) + SRCTYPE(CL) + TEXT('From Character To Packed. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHAPAKC) TOFILE(NERONI2/JCHAPAK) + TOMBR(JCHAPAKC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHAPAK) MBR(JCHAPAKC) + SRCTYPE(RPGLE) + TEXT('From Character To Packed. Cpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHAPAKI) TOFILE(NERONI2/JCHAPAK) + TOMBR(JCHAPAKI) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHAPAK) MBR(JCHAPAKI) + SRCTYPE(CMD) + TEXT('From Character To Packed. CmdInter') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHAPAKIC) TOFILE(NERONI2/JCHAPAK) + TOMBR(JCHAPAKIC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHAPAK) MBR(JCHAPAKIC) + SRCTYPE(CLLE) + TEXT('From Character To Packed. CppInter') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHAPAKSAM) TOFILE(NERONI2/JCHAPAK) + TOMBR(JCHAPAKSAM) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHAPAK) MBR(JCHAPAKSAM) + SRCTYPE(RPGLE) + TEXT('From Character To Packed. Sample') /*---------------------------------------------------------------------*/ //DATA FILE(JCHAPAK) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* From Character To Packed. Cmd */ /* Claudio Neroni 16-12-2008 Creato. */ CMD PROMPT('From Character To Packed') PARM KWD(FROMCHAR) TYPE(*CHAR) LEN(8) MIN(1) + PROMPT('From Character') PARM KWD(DGTNBR) TYPE(*DEC) LEN(3 0) RANGE(1 15) + MIN(1) PROMPT('Digits Number') PARM KWD(TOPACKED) TYPE(*DEC) LEN(15 0) + RTNVAL(*YES) MIN(1) PROMPT('To Packed (15,0)') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHAPAK.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JCHAPAK.) JOBD(QBATCH) OUTQ(QPRINTS) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Claudio Neroni 16-12-2008 Creato. */ /* JCHAPAK */ /* From Character To Packed. */ /* Prerequisiti: nessuno */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella gli oggetti preesistenti. */ DLTCMD CMD(NERONI2/JCHAPAK) DLTCMD CMD(NERONI2/JCHAPAKI) DLTPGM PGM(NERONI2/JCHAPAKC) DLTPGM PGM(NERONI2/JCHAPAKIC) DLTPGM PGM(NERONI2/JCHAPAKSAM) /* Crea gli oggetti. */ CRTBNDRPG PGM(NERONI2/JCHAPAKC) SRCFILE(JCHAPAK) DBGVIEW(*ALL) CRTCMD CMD(NERONI2/JCHAPAK) PGM(JCHAPAKC) SRCFILE(JCHAPAK) + ALLOW(*BPGM *IPGM *BMOD *IMOD) PRDLIB(NERONI2) CRTBNDCL PGM(NERONI2/JCHAPAKIC) SRCFILE(JCHAPAK) DBGVIEW(*ALL) CRTCMD CMD(NERONI2/JCHAPAKI) PGM(JCHAPAKIC) SRCFILE(JCHAPAK) + ALLOW(*ALL) PRDLIB(NERONI2) CRTBNDRPG PGM(NERONI2/JCHAPAKSAM) SRCFILE(JCHAPAK) DBGVIEW(*ALL) //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHAPAKC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Conversion. PackCharToPackNbr * Claudio Neroni 21/10/2008 Creato. * Trasforma un campo carattere di lunghezza variabile da 1 a 8, * contenente un impaccato da 1 a 15 cifre allineato a sinistra, * in un campo numerico. *--------------------------------------------------------------------- * Fa coincidere un impaccato della lunghezza massima * con un alfanumerico. D ds D pak 15p 0 D paka 1 8 * Definisce indici di comodo. D byt s 3 0 D beg s 3 0 *--------------------------------------------------------------------- * Scambia parametri. C *entry plist * Riceve i dati impaccati allineati a sinistra in un alfanumerico. C parm inp 08 * Riceve la lunghezza in cifre dei dati impaccati. C parm len 3 0 * Restituisce il numero contenuto nei dati. C parm out 15 0 * Pulisce i parametri di ritorno. C clear out * Pulisce l'impaccato intermedio, coincidente con un alfa. C clear pak * Calcola la lunghezza dei dati in byte. C eval byt=(len+2)/2 * Calcola la partenza dei dati nell'alfa intermedio. C eval beg=08+1-byt * Trascrive i dati dall'input all'alfa intermedio. C eval %subst(paka:beg:byt)=%subst(inp:1:byt) * Trascrive l'impaccato intermedio nell'output. C z-add pak out * Ritorna. C seton lr *--------------------------------------------------------------------- * Intercetta errore nei dati decimali. C *pssr begsr C z-add *hival out C return C endsr *--------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHAPAKI) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* From Character To Packed. CmdInter */ /* Claudio Neroni 14-02-2014 Creato. */ CMD PROMPT('From Character To Packed Inter') PARM KWD(FROMCHAR) TYPE(*CHAR) LEN(8) MIN(1) + PROMPT('From Character') PARM KWD(DGTNBR) TYPE(*DEC) LEN(3 0) RANGE(1 15) + MIN(1) PROMPT('Digits Number') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHAPAKIC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') PGM PARM(&FROMCHAR &DGTNBR) DCL VAR(&FROMCHAR) TYPE(*CHAR) LEN(8) DCL VAR(&DGTNBR) TYPE(*DEC) LEN(3 0) DCL VAR(&TOPACKED) TYPE(*DEC) LEN(15 0) DCL VAR(&TOPACKEDC) TYPE(*CHAR) LEN(16) JCHAPAK FROMCHAR(&FROMCHAR) DGTNBR(&DGTNBR) + TOPACKED(&TOPACKED) CHGVAR VAR(&TOPACKEDC) VALUE(&TOPACKED) SNDPGMMSG MSG('Interpreta campo carattere come + numerico impaccato' *BCAT &TOPACKEDC) ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHAPAKSAM) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Definisce campoalfa e camponum D campoalfa s 5a D camponum s 9p 0 * In un campo alfa lungo da 1 a 8 (qui 5) scrive un valore * da interpretare come numerico di 1 a 15 cifre con segno (qui 9). C eval campoalfa = x'123456789f' *------------------------------------------------------------------------- * Trasforma un campo carattere di lunghezza variabile da 1 a 8, * contenente un impaccato da 1 a 15 cifre allineato a sinistra, * in un campo numerico. C call 'JCHAPAKC' * Riceve i dati impaccati allineati a sinistra in un alfanumerico. C parm campoalfa jchapakinp 8 * Riceve la lunghezza in cifre dei dati impaccati. C parm 9 jchapaklen 3 0 * Restituisce il numero contenuto nei dati. C camponum parm jchapakout 15 0 *------------------------------------------------------------------------- C seton lr //ENDSRC //ENDBCHJOB