//BCHJOB JOB(JBRKUSR2) 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-02-13 19:22 */ /* To File : "JBRKUSR2" */ /* To Library : "NERONI2" */ /* To Text : "Break User 2. 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 "JBRKUSR2.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:\JBRKUSR2.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JBRKUSR2.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(JBRKUSR2) 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/JBRKUSR2" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JBRKUSR2) MBR(JBRKUSR2.) 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/JBRKUSR2) CRTSRCPF FILE(NERONI2/JBRKUSR2) RCDLEN(112) + TEXT('Break User 2. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JBRKUSR2) TOFILE(NERONI2/JBRKUSR2) + TOMBR(JBRKUSR2) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JBRKUSR2) MBR(JBRKUSR2) + SRCTYPE(CMD) + TEXT('Break User 2. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JBRKUSR2.) TOFILE(NERONI2/JBRKUSR2) + TOMBR(JBRKUSR2.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JBRKUSR2) MBR(JBRKUSR2.) + SRCTYPE(CL) + TEXT('Break User 2. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JBRKUSR2C) TOFILE(NERONI2/JBRKUSR2) + TOMBR(JBRKUSR2C) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JBRKUSR2) MBR(JBRKUSR2C) + SRCTYPE(CLLE) + TEXT('Break User 2. Cpp') /*---------------------------------------------------------------------*/ //DATA FILE(JBRKUSR2) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* ===================================================== */ /* = FROM "SEND BREAK MESSAGES TO USERS," NEWS/400, = */ /* = = */ /* = COPYRIGHT (C) 1998 DUKE COMMINUCATIONS INTER. = */ /* = ALL RIGHTS RESERVED = */ /* = = */ /* = COMMAND....... SNDBRKMSGU = */ /* = CPP........... SNDBRKMSGC = */ /* = VCP........... SNDBRKMSGV = */ /* = DESCRIPTION... SEND BREAK MESSAGE TO USER = */ /* ===================================================== */ CMD PROMPT('INVIO MESSAGGIO BREAK USER') PARM KWD(MSG) TYPE(*CHAR) LEN(494) VARY(*YES + *INT4) PROMPT('MESSAGGIO TESTO, O') PARM KWD(MSGID) TYPE(*NAME) LEN(7) FULL(*YES) + PROMPT('IDENTIF. MESSAGGIO') PARM KWD(MSGF) TYPE(QMSGF) PROMPT('FILE MESSAGGI') PARM KWD(MSGDTA) TYPE(*CHAR) LEN(494) DFT(*NONE) + SPCVAL((*NONE ' ')) PROMPT('MESSAGE DATA') PARM KWD(TOUSR) TYPE(*NAME) LEN(10) + DFT(*REQUESTER) SPCVAL((*ALL) (*SYSOPR) + (*ALLACT) (*REQUESTER)) PROMPT('ALL'' + UTENTE') PARM KWD(MSGTYPE) TYPE(*CHAR) LEN(5) RSTD(*YES) + DFT(*INFO) VALUES(*INFO *INQ) + PROMPT('TIPO MESSAGGIO') PARM KWD(RPYMSGQ) TYPE(QRPYMSGQ) PROMPT('CODA + MESSAGGI PER RISPOSTA') QMSGF: QUAL TYPE(*NAME) LEN(10) MIN(1) QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) + SPCVAL((*LIBL) (*CURLIB)) PROMPT('LIBRERIA') QRPYMSGQ: QUAL TYPE(*NAME) LEN(10) DFT(QSYSOPR) QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) + SPCVAL((*LIBL) (*CURLIB)) PROMPT('LIBRERIA') DEP CTL(&MSG *EQ ' ') PARM((MSGID)) MSGID(CPD2536) DEP CTL(&MSG *NE ' ') PARM((MSGID) (MSGF) + (MSGDTA)) NBRTRUE(*NE 1) MSGID(CPD2443) DEP CTL(&MSG *NE ' ') PARM((MSGID) (MSGF) + (MSGDTA)) NBRTRUE(*NE 2) MSGID(CPD2443) DEP CTL(&MSG *NE ' ') PARM((MSGID) (MSGF) + (MSGDTA)) NBRTRUE(*NE 3) MSGID(CPD2443) DEP CTL(&MSG *NE ' ') PARM((MSGID)) NBRTRUE(*NE + 1) MSGID(CPD2536) DEP CTL(&MSGID *NE ' ') PARM((MSGF)) + NBRTRUE(*EQ 1) MSGID(CPD2441) //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JBRKUSR2.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JBRKUSR2.) JOBD(QBATCH) OUTQ(QPRINTS) ENDSEV(60) + LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* COPYRIGHT (C) 1998 DUKE COMMUNICATIONS INTER. */ /* JBRKUSR2 */ /* Break User 1. */ /* Prerequisiti: nessuno */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella gli oggetti preesistenti. */ DLTCMD CMD(NERONI2/JBRKUSR2) DLTPGM PGM(NERONI2/JBRKUSR2C) /* Crea il comando. */ CRTCMD CMD(NERONI2/JBRKUSR2) PGM(NERONI2/JBRKUSR2C) + SRCFILE(JBRKUSR2) PRDLIB(NERONI2) /* Crea il command processing program. */ CRTBNDCL PGM(NERONI2/JBRKUSR2C) SRCFILE(JBRKUSR2) DBGVIEW(*ALL) //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JBRKUSR2C) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* ====================================================================*/ /* = FROM "SEND BREAK MESSAGES TO USERS," NEWS/400, NOVEMBER 1998. */ /* = */ /* = COPYRIGHT (C) 1998 DUKE COMMUNICATIONS INTERNATIONAL, */ /* = ALL RIGHTS RESERVED */ /* = */ /* = PROGRAM....... SNDBRKMSGC */ /* = DESCRIPTION... COMMAND PROCESSING PROGRAM FOR SNDBRKMSGU */ /* ====================================================================*/ PGM PARM(&MSG &MSGID &MSGF &MSGDTA &TOUSR + &MSGTYPE &RPYMSGQ) /* DECLARATIONS */ DCL VAR(&MSG) TYPE(*CHAR) LEN(498) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&MSGF) TYPE(*CHAR) LEN(20) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(494) DCL VAR(&TOUSR) TYPE(*CHAR) LEN(10) DCL VAR(&MSGTYPE) TYPE(*CHAR) LEN(5) DCL VAR(&RPYMSGQ) TYPE(*CHAR) LEN(20) DCL VAR(&KEYVAR) TYPE(*CHAR) LEN(4) DCL VAR(&MSGTOSND) TYPE(*CHAR) LEN(494) DCL VAR(&MSGLENA) TYPE(*CHAR) LEN(4) DCL VAR(&MSGTYPEA) TYPE(*CHAR) LEN(10) DCL VAR(&DELIVERY) TYPE(*CHAR) LEN(10) + VALUE('*BREAK') DCL VAR(&NBRUSERS) TYPE(*CHAR) LEN(4) + VALUE(X'00000001') DCL VAR(&NBRMSGSSNT) TYPE(*CHAR) LEN(4) DCL VAR(&RQSFNC) TYPE(*CHAR) LEN(4) DCL VAR(&APIERR) TYPE(*CHAR) LEN(16) + VALUE(X'00000000000000004040404040404040') DCL VAR(&USESNDDSP) TYPE(*CHAR) LEN(1) VALUE('N') DCL VAR(&SNDTOTYP) TYPE(*CHAR) LEN(4) VALUE('*USR') DCL VAR(&MSGFNM) TYPE(*CHAR) LEN(10) DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) DCL VAR(&$MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&$MSGF) TYPE(*CHAR) LEN(10) DCL VAR(&$MSGFLIB) TYPE(*CHAR) LEN(10) DCL VAR(&$MSGDTA) TYPE(*CHAR) LEN(200) /* GLOBAL MONMSG FOR ERROR TRAPPING */ MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO CMDLBL(ERROR)) /* PARSE MESSAGE INTO LENGTH AND MESSAGE */ CHGVAR VAR(&MSGLENA) VALUE(%SST(&MSG 1 4)) CHGVAR VAR(&MSGTOSND) VALUE(%SST(&MSG 5 494)) /* CHANGE MESSAGE TYPE TO LENGTH REQUIRED BY QEZSNDMG */ CHGVAR VAR(&MSGTYPEA) VALUE(&MSGTYPE) /* IF TOUSR PARAMETER IS SPECIAL VALUE *REQUESTER RETRIR */ IF COND(&TOUSR *EQ '*REQUESTER') THEN(RTVJOBA + USER(&TOUSR)) /* IF MSGID PARAMECIFIED RETRIEVE MESSAGE AND SET LENGTH */ IF COND(&MSGID *NE ' ') THEN(DO) CHGVAR VAR(&MSGFNM) VALUE(%SST(&MSGF 1 10)) CHGVAR VAR(&MSGFLIB) VALUE(%SST(&MSGF 11 10)) CHGVAR VAR(&MSGFLIB) VALUE(%SST(&MSGF 11 10)) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGFNM) + MSGDTA(&MSGDTA) TOPGMQ(*SAME) KEYVAR(&KEYVAR) RCVMSG MSGKEY(&KEYVAR) MSG(&MSGTOSND) CHGVAR VAR(&MSGLENA) VALUE(X'000001EE') ENDDO /* SEND THE MESSAGE */ CALL PGM(QEZSNDMG) PARM(&MSGTYPEA &DELIVERY + &MSGTOSND &MSGLENA &TOUSR &NBRUSERS + &NBRMSGSSNT &RQSFNC &APIERR &USESNDDSP + &RPYMSGQ &SNDTOTYP) RETURN /* ERROR-HANDLING ROUTINE */ ERROR: RCVMSG MSGTYPE(*EXCP) MSGDTA(&$MSGDTA) + MSGID(&$MSGID) MSGF(&$MSGF) + MSGFLIB(&$MSGFLIB) MONMSG MSGID(CPF0000 MCH0000) SNDPGMMSG MSGID(&$MSGID) MSGF(&$MSGFLIB/&$MSGF) + MSGDTA(&$MSGDTA) MSGTYPE(*ESCAPE) MONMSG MSGID(CPF0000 MCH0000) /* END OF PROGRAM */ ENDPGM //ENDSRC //ENDBCHJOB