//BCHJOB JOB(JRANDOM) 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: "IUBICSVI" */ /* From Library: "UTI" */ /* Unload Time: 2008-11-12 16:44 */ /* To File : "JRANDOM" */ /* To Library : "NERONI2" */ /* To Text : "Random generator. 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 "JRANDOM.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:\JRANDOM.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JRANDOM.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(JRANDOM) 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/JRANDOM" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JRANDOM) MBR(JRANDOM.) 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/JRANDOM) CRTSRCPF FILE(NERONI2/JRANDOM) RCDLEN(112) + TEXT('Random generator. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JRANDOM.) TOFILE(NERONI2/JRANDOM) + TOMBR(JRANDOM.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JRANDOM) MBR(JRANDOM.) + SRCTYPE(CL) + TEXT('Random generator. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JRANDOMA) TOFILE(NERONI2/JRANDOM) + TOMBR(JRANDOMA) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JRANDOM) MBR(JRANDOMA) + SRCTYPE(RPGLE) + TEXT('Random generator. CallApi') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JRANDOMF) TOFILE(NERONI2/JRANDOM) + TOMBR(JRANDOMF) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JRANDOM) MBR(JRANDOMF) + SRCTYPE(PF) + TEXT('Random generator. Outfile') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JRANDOMT) TOFILE(NERONI2/JRANDOM) + TOMBR(JRANDOMT) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JRANDOM) MBR(JRANDOMT) + SRCTYPE(RPGLE) + TEXT('Random generator. Loop') /*---------------------------------------------------------------------*/ //DATA FILE(JRANDOM.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JRANDOM.) JOBD(QBATCH) OUTQ(QPRINTS) ENDSEV(60) LOG(4 + 00 *SECLVL) MSGQ(*USRPRF) /* Claudio Neroni 11/11/2008 Creato. */ /* JRANDOM */ /* Random generator. */ /* Prerequisiti: nessuno */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella gli oggetti preesistenti. */ DLTPGM PGM(NERONI2/JRANDOMA) DLTPGM PGM(NERONI2/JRANDOMT) DLTF FILE(NERONI2/JRANDOMF) /* Crea gli oggetti. */ CRTPF FILE(NERONI2/JRANDOMF) SRCFILE(JRANDOM) SIZE(*NOMAX) CRTBNDRPG PGM(NERONI2/JRANDOMA) SRCFILE(JRANDOM) DFTACTGRP(*NO) + DBGVIEW(*ALL) CRTBNDRPG PGM(NERONI2/JRANDOMT) SRCFILE(JRANDOM) DBGVIEW(*ALL) //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JRANDOMA) FILETYPE(*SRC) ENDCHAR('//ENDSRC') D seed s 4b 0 D random_f s 8f D random_s s 13p 0 D quoziente s 13p 0 D fc s 12a D max s 3p 0 D out s 3p 0 D out4 s 4p 0 D cnt s 4b 0 D dd s 1a C *entry plist C parm max I Massimo C parm out O Output random C if max=*zero C seton lr C return C endif C callb 'CEERAN0' C parm seed U Initial C parm random_f O Random number C parm fc O Feedback C eval random_s=random_f*10**13 C move random_s out C out div max quoziente C mvr out C add 1 out C add out seed C add 1 cnt C add cnt seed C return //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JRANDOMF) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R JRANDOMR A TEXT('Numeri casuali') A RUN 5 0 A COLHDG('Run') A MAX 3 0 A COLHDG('Massimo') A OUT 3 0 A COLHDG('Random' 'output') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JRANDOMT) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Chiamare il presente pgm come segue. * * Genera un numero tra 1 e 193 prendendo il tentativo 6789. * CALL PGM(JRANDOMT) PARM(X'193F' X'000006789F') * Genera un numero tra 1 e 888 prendendo il tentativo 99999. * CALL PGM(JRANDOMT) PARM(X'888F' X'000099999F') * * Leggere il risultato nell'ultimo record del file JRANDOMF * Fjrandomf if a e disk C *entry plist C parm ppmax 3 0 I Massimo C parm volte 9 0 I Volte C *hival setgt jrandomr C readp jrandomr C add 1 run C do volte C call 'JRANDOMA' C parm ppmax C parm out C z-add ppmax max C enddo C write jrandomr C call 'JRANDOMA' C parm *ZERO max C parm out C seton lr //ENDSRC //ENDBCHJOB