//BCHJOB JOB(JREDKEY) 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: 2014-03-27 16:27 */ /* To File : "JREDKEY" */ /* To Library : "NERONI2" */ /* To Text : "Reduces keys. 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 "JREDKEY.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:\JREDKEY.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JREDKEY.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(JREDKEY) 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/JREDKEY" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JREDKEY) MBR(JREDKEY.) 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/JREDKEY) CRTSRCPF FILE(NERONI2/JREDKEY) RCDLEN(112) + TEXT('Reduces keys. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY) + SRCTYPE(CMD) + TEXT('Reduces keys. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY.) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY.) + SRCTYPE(CL) + TEXT('Reduces keys. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEYC) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEYC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEYC) + SRCTYPE(CLLE) + TEXT('Reduces keys. Cpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEYH) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEYH) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEYH) + SRCTYPE(RPGLE) + TEXT('Reduces keys. Horizontalizes accpth') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEYK) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEYK) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEYK) + SRCTYPE(RPGLE) + TEXT('Reduces keys. Horizontalizes select') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEYL) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEYL) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEYL) + SRCTYPE(RPGLE) + TEXT('Reduces keys. Completes HorizAccpth') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEYM) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEYM) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEYM) + SRCTYPE(RPGLE) + TEXT('Reduces keys. Partializes objd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEYP) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEYP) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEYP) + SRCTYPE(PNLGRP) + TEXT('Reduces keys. Help') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEYR) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEYR) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEYR) + SRCTYPE(RPGLE) + TEXT('Reduces keys. Recognizes redundancies') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEYS) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEYS) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEYS) + SRCTYPE(RPGLE) + TEXT('Reduces keys. Propagates print flag') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEYTA) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEYTA) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEYTA) + SRCTYPE(RPGLE) + TEXT('Reduces keys. Print Format Simple') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEYTB) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEYTB) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEYTB) + SRCTYPE(RPGLE) + TEXT('Reduces keys. Print Format Complex') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY0) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY0) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY0) + SRCTYPE(PF) + TEXT('Reduces keys. Wrk0 Rcdfmt') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY1) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY1) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY1) + SRCTYPE(PF) + TEXT('Reduces keys. Wrk1 VertiAccpth') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY2) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY2) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY2) + SRCTYPE(PF) + TEXT('Reduces keys. Wrk2 HorizAccpth') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY21) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY21) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY21) + SRCTYPE(LF) + TEXT('Reduces keys. Wrk2 HorizAccpth') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY3) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY3) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY3) + SRCTYPE(PF) + TEXT('Reduces keys. Wrk3 VertiSelect') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY4) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY4) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY4) + SRCTYPE(PF) + TEXT('Reduces keys. Wrk4 HorizSelect') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY4D) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY4D) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY4D) + SRCTYPE(PF) + TEXT('Reduces keys. Wrk4 DataStructure') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY5) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY5) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY5) + SRCTYPE(PF) + TEXT('Reduces keys. Wrk5 Objd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY6) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY6) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY6) + SRCTYPE(PF) + TEXT('Reduces keys. Wrk6 Objd PF&LF') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY7) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY7) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY7) + SRCTYPE(PF) + TEXT('Reduces keys. Wrk6 Objd PGM') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDKEY8) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDKEY8) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDKEY8) + SRCTYPE(PF) + TEXT('Reduces keys. Wrk8 PgmRef') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTST.) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTST.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTST.) + SRCTYPE(CL) + TEXT('Reduces keys. DbTest. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTXJ) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTXJ) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTXJ) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest X Join') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTXM) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTXM) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTXM) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest X Mult') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTX1) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTX1) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTX1) + SRCTYPE(PF) + TEXT('Reduces keys. DbTest X Phy1') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTX1K) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTX1K) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTX1K) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest X Lgl1(MultTroncato)') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTX1L) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTX1L) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTX1L) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest X Lgl1') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTX2) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTX2) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTX2) + SRCTYPE(PF) + TEXT('Reduces keys. DbTest X Phy2') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTX2L) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTX2L) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTX2L) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest X Lgl2') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTX3) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTX3) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTX3) + SRCTYPE(PF) + TEXT('Reduces keys. DbTest X Phy3') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTX4) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTX4) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTX4) + SRCTYPE(PF) + TEXT('Reduces keys. DbTest X Phy4') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTYM) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTYM) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTYM) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest Y Mult1') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTYN) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTYN) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTYN) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest Y Mult2') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTYP) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTYP) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTYP) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest Y Mult3') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTY1) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTY1) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTY1) + SRCTYPE(PF) + TEXT('Reduces keys. DbTest Y Phy1') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTY1K) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTY1K) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTY1K) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest Y Lgl11') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTY1L) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTY1L) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTY1L) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest Y Lgl12') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTY1S) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTY1S) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTY1S) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest Y Lgl11Sel') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTY2) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTY2) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTY2) + SRCTYPE(PF) + TEXT('Reduces keys. DbTest Y Phy2') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTY2K) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTY2K) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTY2K) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest Y Lgl21') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTY2L) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTY2L) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTY2L) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest Y Lgl22') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTZ1) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTZ1) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTZ1) + SRCTYPE(PF) + TEXT('Reduces keys. DbTest Z 40') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JREDTSTZ1L) TOFILE(NERONI2/JREDKEY) + TOMBR(JREDTSTZ1L) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JREDKEY) MBR(JREDTSTZ1L) + SRCTYPE(LF) + TEXT('Reduces keys. DbTest Z 40') /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Reduces keys. Cmd */ /* Claudio Neroni 15-04-2008 Creato. */ /* */ CMD PROMPT('Reduces Keys Analysis') PARM KWD(LIBL) TYPE(*NAME) LEN(10) DFT(*USRLIBL) + SPCVAL((*LIBL) (*USRLIBL) (*ALLUSR) + (*ALL)) PROMPT('Library or Library list') PARM KWD(FORMAT) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*COMPLEX) VALUES(*SIMPLE *COMPLEX) + PROMPT('Print format') PARM KWD(EXPFILE) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*FLGPHY) VALUES(*ALL *FLGPHY *FLGKEY) + PROMPT('Expand files') PARM KWD(EXPB) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*NO) VALUES(*NO *YES) PMTCTL(COMPLEX) + PROMPT('Expand keys flagged blank') PARM KWD(EXP1) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*YES) VALUES(*NO *YES) + PMTCTL(COMPLEX) PROMPT('Expand keys + flagged 1=FirstDup') PARM KWD(EXPD) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*YES) VALUES(*NO *YES) + PMTCTL(COMPLEX) PROMPT('Expand keys + flagged D=DupKy') PARM KWD(EXPS) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*YES) VALUES(*NO *YES) + PMTCTL(COMPLEX) PROMPT('Expand keys + flagged S=SubsetKy') COMPLEX: PMTCTL CTL(FORMAT) COND((*EQ *COMPLEX)) NBRTRUE(*EQ 1) //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JREDKEY.) JOBD(NERONI2/NERONI2) OUTQ(QPRINTS) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Claudio Neroni 12/03/2014 Creato. */ /* JREDKEY */ /* Reduces keys. */ /* Prerequisiti: JCPYCLR */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella le strutture dati preesistenti. */ DLTF FILE(NERONI2/JREDKEY4D) /* Cancella i logici preesistenti. */ DLTF FILE(NERONI2/JREDKEY21) /* Cancella i fisici preesistenti. */ DLTF FILE(NERONI2/JREDKEY0) DLTF FILE(NERONI2/JREDKEY1) DLTF FILE(NERONI2/JREDKEY2) DLTF FILE(NERONI2/JREDKEY3) DLTF FILE(NERONI2/JREDKEY4) DLTF FILE(NERONI2/JREDKEY5) DLTF FILE(NERONI2/JREDKEY6) DLTF FILE(NERONI2/JREDKEY7) DLTF FILE(NERONI2/JREDKEY8) /* Cancella i programmi preesistenti. */ DLTPGM PGM(NERONI2/JREDKEYC) DLTPGM PGM(NERONI2/JREDKEYH) DLTPGM PGM(NERONI2/JREDKEYK) DLTPGM PGM(NERONI2/JREDKEYL) DLTPGM PGM(NERONI2/JREDKEYM) DLTPGM PGM(NERONI2/JREDKEYR) DLTPGM PGM(NERONI2/JREDKEYS) DLTPGM PGM(NERONI2/JREDKEYTA) DLTPGM PGM(NERONI2/JREDKEYTB) DLTPGM PGM(NERONI2/JREDKEYTC) /* Cancella i comandi preesistenti. */ DLTCMD CMD(NERONI2/JREDKEY) /* Crea le strutture dati. */ CRTPF FILE(NERONI2/JREDKEY4D) SRCFILE(JREDKEY) MBR(*NONE) + LVLCHK(*YES) /* Crea i file fisici. */ CRTPF FILE(NERONI2/JREDKEY0) SRCFILE(JREDKEY) SIZE(*NOMAX) + LVLCHK(*YES) CRTPF FILE(NERONI2/JREDKEY1) SRCFILE(JREDKEY) SIZE(*NOMAX) + LVLCHK(*YES) CRTPF FILE(NERONI2/JREDKEY2) SRCFILE(JREDKEY) SIZE(*NOMAX) + LVLCHK(*YES) CRTPF FILE(NERONI2/JREDKEY3) SRCFILE(JREDKEY) SIZE(*NOMAX) + LVLCHK(*YES) CRTPF FILE(NERONI2/JREDKEY4) SRCFILE(JREDKEY) SIZE(*NOMAX) + LVLCHK(*YES) CRTPF FILE(NERONI2/JREDKEY5) SRCFILE(JREDKEY) SIZE(*NOMAX) + LVLCHK(*YES) CRTPF FILE(NERONI2/JREDKEY6) SRCFILE(JREDKEY) SIZE(*NOMAX) + LVLCHK(*YES) CRTPF FILE(NERONI2/JREDKEY7) SRCFILE(JREDKEY) SIZE(*NOMAX) + LVLCHK(*YES) CRTPF FILE(NERONI2/JREDKEY8) SRCFILE(JREDKEY) SIZE(*NOMAX) + LVLCHK(*YES) /* Crea i file logici. */ CRTLF FILE(NERONI2/JREDKEY21) SRCFILE(JREDKEY) LVLCHK(*YES) /* Crea i programmi. */ CRTBNDRPG PGM(NERONI2/JREDKEYH) SRCFILE(JREDKEY) DBGVIEW(*LIST) CRTBNDRPG PGM(NERONI2/JREDKEYK) SRCFILE(JREDKEY) DBGVIEW(*LIST) CRTBNDRPG PGM(NERONI2/JREDKEYL) SRCFILE(JREDKEY) DBGVIEW(*LIST) CRTBNDRPG PGM(NERONI2/JREDKEYM) SRCFILE(JREDKEY) DBGVIEW(*LIST) CRTBNDRPG PGM(NERONI2/JREDKEYR) SRCFILE(JREDKEY) DBGVIEW(*LIST) CRTBNDRPG PGM(NERONI2/JREDKEYS) SRCFILE(JREDKEY) DBGVIEW(*LIST) CRTBNDRPG PGM(NERONI2/JREDKEYTA) SRCFILE(JREDKEY) DBGVIEW(*LIST) CRTBNDRPG PGM(NERONI2/JREDKEYTB) SRCFILE(JREDKEY) DBGVIEW(*LIST) CRTBNDCL PGM(NERONI2/JREDKEYC) SRCFILE(JREDKEY) DBGVIEW(*LIST) /* Crea i testi d'aiuto. */ CRTPNLGRP PNLGRP(NERONI2/JREDKEYP) SRCFILE(JREDKEY) /* Crea i comandi. */ CRTCMD CMD(NERONI2/JREDKEY) PGM(JREDKEYC) SRCFILE(JREDKEY) + HLPPNLGRP(JREDKEYP) HLPID(CMD) PRDLIB(NERONI2) //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEYC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Reduces keys. Cpp */ /* Claudio Neroni 12-03-2014 Creato. */ /* Individua le anomalie del database allo scopo di ridurre */ /* le chiavi sovrabbondanti. */ /* */ PGM PARM(&LIBL &FORMAT &EXPFILE &EXPB &EXP1 + &EXPD &EXPS) /* Riceve la Libreria o la Lista librerie. */ DCL VAR(&LIBL) TYPE(*CHAR) LEN(10) /* Riceve il formato di stampa. */ DCL VAR(&FORMAT) TYPE(*CHAR) LEN(10) /* Riceve richiesta di espansione dei file. */ DCL VAR(&EXPFILE) TYPE(*CHAR) LEN(10) /* Riceve richiesta di espansione delle chiavi fleggate */ /* blank. */ DCL VAR(&EXPB) TYPE(*CHAR) LEN(10) /* Riceve richiesta di espansione delle chiavi fleggate */ /* 1=PrimoDuplicato. */ DCL VAR(&EXP1) TYPE(*CHAR) LEN(10) /* Riceve richiesta di espansione delle chiavi fleggate */ /* D=Duplicato. */ DCL VAR(&EXPD) TYPE(*CHAR) LEN(10) /* Riceve richiesta di espansione delle chiavi fleggate */ /* S=Sottoinsieme. */ DCL VAR(&EXPS) TYPE(*CHAR) LEN(10) /* Nome sistema. */ DCL VAR(&SYSNAME) TYPE(*CHAR) LEN(8) /* Tipo lavoro. */ DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) /* Lista librerie. */ DCL VAR(&USRLIBL) TYPE(*CHAR) LEN(2750) /* Prenotazione del CPF0001. */ DCL VAR(&CPF0001) TYPE(*LGL) /* Intercetta gli errori. */ MONMSG MSGID(CPF0000 MCH0000 CEE0000) EXEC(GOTO + CMDLBL(ERRORE)) /* Recupera Nome sistema. */ RTVNETA SYSNAME(&SYSNAME) /* Recupera Tipo lavoro 0=Batch 1=Interactive. */ RTVJOBA TYPE(&TYPE) /* Recupera la lista librerie. */ RTVJOBA USRLIBL(&USRLIBL) /* Cancella i logici temporanei con tutti i nomi possibili. */ DLTF FILE(QTEMP/JREDKEY21) MONMSG MSGID(CPF0000 MCH0000) DLTF FILE(QTEMP/JREDKEY21T) MONMSG MSGID(CPF0000 MCH0000) /* Cancella i fisici temporanei con tutti i nomi possibili. */ DLTF FILE(QTEMP/JREDKEY0T) MONMSG MSGID(CPF0000 MCH0000) DLTF FILE(QTEMP/JREDKEY1T) MONMSG MSGID(CPF0000 MCH0000) DLTF FILE(QTEMP/JREDKEY2) MONMSG MSGID(CPF0000 MCH0000) DLTF FILE(QTEMP/JREDKEY2T) MONMSG MSGID(CPF0000 MCH0000) DLTF FILE(QTEMP/JREDKEY3T) MONMSG MSGID(CPF0000 MCH0000) DLTF FILE(QTEMP/JREDKEY4T) MONMSG MSGID(CPF0000 MCH0000) DLTF FILE(QTEMP/JREDKEY5T) MONMSG MSGID(CPF0000 MCH0000) DLTF FILE(QTEMP/JREDKEY6T) MONMSG MSGID(CPF0000 MCH0000) DLTF FILE(QTEMP/JREDKEY7T) MONMSG MSGID(CPF0000 MCH0000) DLTF FILE(QTEMP/JREDKEY8T) MONMSG MSGID(CPF0000 MCH0000) /* Crea i fisici temporanei. */ JCPYCLR FROMFILE(JREDKEY0) TOFILE(JREDKEY0T) JCPYCLR FROMFILE(JREDKEY1) TOFILE(JREDKEY1T) JCPYCLR FROMFILE(JREDKEY2) TOFILE(JREDKEY2) JCPYCLR FROMFILE(JREDKEY3) TOFILE(JREDKEY3T) JCPYCLR FROMFILE(JREDKEY4) TOFILE(JREDKEY4T) JCPYCLR FROMFILE(JREDKEY5) TOFILE(JREDKEY5T) JCPYCLR FROMFILE(JREDKEY6) TOFILE(JREDKEY6T) JCPYCLR FROMFILE(JREDKEY7) TOFILE(JREDKEY7T) JCPYCLR FROMFILE(JREDKEY8) TOFILE(JREDKEY8T) /* Crea i logici temporanei. */ CRTDUPOBJ OBJ(JREDKEY21) FROMLIB(*LIBL) OBJTYPE(*FILE) + TOLIB(QTEMP) NEWOBJ(JREDKEY21T) RNMOBJ OBJ(QTEMP/JREDKEY2) OBJTYPE(*FILE) + NEWOBJ(JREDKEY2T) /* Estrae informazioni sui formati dai file fisici. */ SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('Estrae + informazioni sui formati dai file + fisici') TOPGMQ(*EXT) MSGTYPE(*STATUS) DSPFD FILE(&LIBL/*ALL) TYPE(*RCDFMT) + OUTPUT(*OUTFILE) FILEATR(*PF) + OUTFILE(QTEMP/JREDKEY0T) MONMSG MSGID(CPF0000 MCH0000) /* Estrae informazioni sulle chiavi dei file. */ SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('Estrae + informazioni sulle chiavi dei file') + TOPGMQ(*EXT) MSGTYPE(*STATUS) DSPFD FILE(&LIBL/*ALL) TYPE(*ACCPTH) + OUTPUT(*OUTFILE) OUTFILE(QTEMP/JREDKEY1T) MONMSG MSGID(CPF0000 MCH0000) /* Estrae informazioni sulle select dei file. */ SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('Estrae + informazioni sulle select dei file') + TOPGMQ(*EXT) MSGTYPE(*STATUS) DSPFD FILE(&LIBL/*ALL) TYPE(*SELECT) + OUTPUT(*OUTFILE) OUTFILE(QTEMP/JREDKEY3T) MONMSG MSGID(CPF0000 MCH0000) /* Se prevista la stampa che le usa, */ /* estrae informazioni sugli oggetti. */ IF COND(&FORMAT *EQ *COMPLEX) THEN(DO) SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('Estrae + informazioni sugli oggetti') TOPGMQ(*EXT) + MSGTYPE(*STATUS) DSPOBJD OBJ(&LIBL/*ALL) OBJTYPE(*FILE *PGM *QRYDFN + *QMQRY *MODULE *SRVPGM *SQLPKG) + OUTPUT(*OUTFILE) OUTFILE(QTEMP/JREDKEY5T) MONMSG MSGID(CPF0000 MCH0000) ENDDO /* Se richiesto e se prevista la stampa che le usa, */ /* estrae informazioni sui programmi. */ IF COND(((&EXPB *EQ *YES) *OR (&EXP1 *EQ *YES) + *OR (&EXPD *EQ *YES) *OR (&EXPS *EQ + *YES)) *AND (&FORMAT *EQ *COMPLEX)) THEN(DO) SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('Estrae + informazioni sui programmi') TOPGMQ(*EXT) + MSGTYPE(*STATUS) DSPPGMREF PGM(&LIBL/*ALL) OUTPUT(*OUTFILE) + OBJTYPE(*ALL) OUTFILE(QTEMP/JREDKEY8T) MONMSG MSGID(CPF0000 MCH0000) ENDDO /* Messaggia. */ SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('Elabora + le informazioni raccolte.') TOPGMQ(*EXT) + MSGTYPE(*STATUS) /* Reindirizza l'attivitā sui file temporanei. */ OVRDBF FILE(JREDKEY0) TOFILE(QTEMP/JREDKEY0T) OVRDBF FILE(JREDKEY1) TOFILE(QTEMP/JREDKEY1T) + SHARE(*YES) OVRDBF FILE(JREDKEY2) TOFILE(QTEMP/JREDKEY2T) OVRDBF FILE(JREDKEY21) TOFILE(QTEMP/JREDKEY21T) OVRDBF FILE(JREDKEY3) TOFILE(QTEMP/JREDKEY3T) OVRDBF FILE(JREDKEY4) TOFILE(QTEMP/JREDKEY4T) OVRDBF FILE(JREDKEY5) TOFILE(QTEMP/JREDKEY5T) OVRDBF FILE(JREDKEY6) TOFILE(QTEMP/JREDKEY6T) OVRDBF FILE(JREDKEY7) TOFILE(QTEMP/JREDKEY7T) OVRDBF FILE(JREDKEY8) TOFILE(QTEMP/JREDKEY8T) /* Mette in ordine le informazioni sulle chiavi. */ /* Elimina dalle informazioni uno dei file temporanei che */ /* manderebbe in overflow il file orizzontale. */ OPNQRYF FILE((QTEMP/JREDKEY1T)) QRYSLT('(APKEYN *NE + 0) *and (APFILE *NE ''JREDKEY21'') *AND + (APFILE *NE ''JREDKEY21T'')') + KEYFLD((APBOL) (APBOF) (APLIB) (APFILE) + (APKEYN)) /* Mette le chiavi in orizzontale. */ CALL PGM(JREDKEYH) /* Chiude il file ordinato. */ CLOF OPNID(JREDKEY1T) /* Mette le select in orizzontale. */ CALL PGM(JREDKEYK) /* Sulle chiavi orizzontali trascrive il formato dei fisici. */ CALL PGM(JREDKEYL) /* Se prevista la stampa che lo richiede, */ /* trascrive le informazioni sugli oggetti. */ IF COND(&FORMAT *EQ *COMPLEX) THEN(DO) CALL PGM(JREDKEYM) ENDDO /* Analizza i dati e flegga i record dei file doppi */ /* e con chiavi sottoinsiemi di altri file. */ /* Valuta anche l'uguaglianza delle select. */ CALL PGM(JREDKEYR) /* Propaga il flag "da stampare". */ CALL PGM(JREDKEYS) /* Reindirizza la stampa. */ OVRPRTF FILE(QSYSPRT) PAGESIZE(*N 198) CPI(15) + USRDTA(&LIBL) SPLFNAME(JREDKEY) /* Stampa Format Simple. */ IF COND(&FORMAT *EQ *SIMPLE) THEN(DO) CALL PGM(JREDKEYTA) PARM(&LIBL &FORMAT &EXPFILE + &EXPB &EXP1 &EXPD &EXPS &SYSNAME) ENDDO /* Stampa Format Complex. */ IF COND(&FORMAT *EQ *COMPLEX) THEN(DO) CALL PGM(JREDKEYTB) PARM(&LIBL &FORMAT &EXPFILE + &EXPB &EXP1 &EXPD &EXPS &SYSNAME &USRLIBL) ENDDO /* Annulla i reindirizzamenti. */ DLTOVR FILE(*ALL) /* Se interattivo, visualizza la stampa. */ IF COND(&TYPE *EQ '1') THEN(DSPSPLF + FILE(JREDKEY) SPLNBR(*LAST)) /* Label di esecuzione delle attivitā finali. */ RCLRSC: /* Riacquisisce le risorse. */ RCLRSC MONMSG MSGID(CPF0000 MCH0000) /* Se richiesto, rilascia il CPF0001. */ IF COND(&CPF0001) THEN(DO) SNDPGMMSG MSGID(CPF0001) MSGF(QCPFMSG) MSGDTA(JREDKEY) + MSGTYPE(*ESCAPE) MONMSG MSGID(CPF0000 MCH0000) ENDDO /* Ritorna. */ RETURN /* Label di errore. */ ERRORE: /* Restituisce i messaggi al chiamante, */ /* trasformando eventuali escape in diagnostici. */ JRSNMSG MONMSG MSGID(CPF0000 MCH0000) /* Label di prenotazione del CPF0001. */ CPF0001: /* Prenota il CPF0001. */ CHGVAR VAR(&CPF0001) VALUE('1') MONMSG MSGID(CPF0000 MCH0000) /* Salta alle attivitā finali. */ GOTO CMDLBL(RCLRSC) ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEYH) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Reduces keys. Horizontalizes accpth * Claudio Neroni 12-03-2014 Creato. * Mette le chiavi in orizzontale per facilitare * il confronto tra le chiavi di file diversi. *------------------------------------------------------------------------- * Outfile *ACCPTH di display file description. Fjredkey1 ip ae disk * Chiavi orizzontali. Fjredkey2 o e disk *------------------------------------------------------------------------- * Chiavi orizzontali in schiera. D dskeys ds D apkeyf01 D apkeyf02 D apkeyf03 D apkeyf04 D apkeyf05 D apkeyf06 D apkeyf07 D apkeyf08 D apkeyf09 D apkeyf10 D apkeyf11 D apkeyf12 D apkeyf13 D apkeyf14 D apkeyf15 D apkeyf16 D apkeyf17 D apkeyf18 D apkeyf19 D apkeyf20 D apkeyf21 D apkeyf22 D apkeyf23 D apkeyf24 D apkeyf25 D apkeyf26 D apkeyf27 D apkeyf28 D apkeyf29 D apkeyf30 D apkeyf31 D apkeyf32 D apkeyf33 D apkeyf34 D apkeyf35 D apkeyf36 D apkeyf37 D apkeyf38 D apkeyf39 D apkeyf40 D keys 1 400 dim(40) *------------------------------------------------------------------------- * Controlla ordinamento e definisce gruppi di record in input. IQWHFDACP I apbol l4m4 I apbof l3m3 I aplib l2m2 I apfile l1m1 *------------------------------------------------------------------------- * A inizio gruppo di chiavi di un file. C l1 do * Pulisce le chiavi orizzontali. C l1 clear keys * A inizio gruppo di chiavi di un file. C l1 enddo *------------------------------------------------------------------------- * Ad ogni chiave. C do * Annota la chiave in schiera. C eval keys(apkeyn) = apkeyf * Ad ogni chiave. C enddo *------------------------------------------------------------------------- * A fine gruppo di chiavi di un file. Cl1 do * Sui fisici con chiave trascrive nomi di file e libreria. * I logici portano giā il nome del loro fisico. Cl1 if apbol = *blank and apbof = *blank Cl1 eval apbol = aplib Cl1 eval apbof = apfile Cl1 endif * Scrive il record con le chiavi in orizzontale. Cl1 write w2 * A fine gruppo di chiavi di un file. Cl1 enddo *------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEYK) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Reduces keys. Horizontalizes select * Claudio Neroni 12-03-2014 Creato. * Mette select in orizzontale. *------------------------------------------------------------------------- * Outfile *SELECT di display file description. Fjredkey3 ip e disk * Select orizzontali. Fjredkey4 o e disk *------------------------------------------------------------------------- * Riunione dei campi di select del singolo record verticale. D jredkey4d e ds * Select orizzontali in schiera. D sods ds D so01 D so02 D so03 D so04 D so05 D so06 D so07 D so08 D so09 D so10 D so11 D so12 D so13 D so14 D so15 D so16 D so17 D so18 D so19 D so20 D so21 D so22 D so23 D so24 D so25 D so26 D so27 D so28 D so29 D so30 D so31 D so32 D so33 D so34 D so35 D so36 D so37 D so38 D so39 D so40 D so41 D so42 D so43 D so44 D so45 D so46 D so47 D so48 D so49 D so50 D so 1 2850 dim(50) *------------------------------------------------------------------------- * Definisce gruppi di record in input. IQWHFDSO 01 I sofile l3 I solib l2 I sorfmt l1 *------------------------------------------------------------------------- * A inizio gruppo di select di un file. C l1 do * Pulisce il contatore delle select del file. C l1 clear cnt 3 0 * Pulisce le chiavi orizzontali. C l1 clear so * A inizio gruppo di select di un file. C l1 enddo *------------------------------------------------------------------------- * Ad ogni select. C do * Se il file č privo di select, abbandona C if sonrul = *zero C leave C endif * Incrementa il contatore delle select del file. C eval cnt += 1 * Annota la select in schiera. C eval so(cnt) = jredkey4d * Ad ogni select. C enddo *------------------------------------------------------------------------- * A fine gruppo di select di un file. Cl1 do * Se il file ha delle select, scrive il record orizzontale. Cl1 if cnt > *zero Cl1 write w4 Cl1 endif * A fine gruppo di select di un file. Cl1 enddo *------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEYL) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Reduces keys. Completes HorizAccpth * Claudio Neroni 21-03-2014 Creato. * Trascrive sulle chiavi orizzontali il formato record dei fisici. *------------------------------------------------------------------------- * Chiavi orizzontali. Fjredkey2 up e k disk * Record format dei fisici. Fjredkey0 if e k disk *------------------------------------------------------------------------- * Definisce chiave fisico, libreria fisico * per il record format con i campi del primario. C kkrf klist C kfld apbol C kfld apbof *------------------------------------------------------------------------- * Se corre record di file fisico. C if apfila = '*PHY' * Trascrive nomi da file a file fisico. C eval apbol = aplib C eval apbof = apfile * Cerca il record "formato record". C kkrf chain jredkey0 * Se trova, trascrive il nome del formato record. C if %found(jredkey0) C eval apbolf = rfname C endif * Ricalca il record. C except ricalca * Se corre record di file fisico. C endif *------------------------------------------------------------------------- * Completa dati sul record chiavi orizzontali relativi ai file fisici. * Trascrive libreria e file dai campi file ai campi file fisico. * Trascrive formato dal record "formato record". Ow2 e ricalca O apbol O apbof O apbolf *------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEYM) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Reduces keys. Partializes objd * Claudio Neroni 24-03-2014 Creato. * Parzializza il display object description a fisici e logici * e standardizza le date. *------------------------------------------------------------------------- * Object description. Fjredkey5 ip e disk * Object description parzializzato pf&lf. Fjredkey6 o e disk prefix(z) * Object description parzializzato pgm. Fjredkey7 o e disk prefix(y) *------------------------------------------------------------------------- * Data di comodo per conversione. D date s d D date7 s 7 *------------------------------------------------------------------------- * Elabora record di object description per pf&lf. C do B01 * Se non corre record di file fisico o logico, abbandona. C if odobat <> 'PF' and odobat <> 'LF' B02 C leave 02 C endif E02 * Trascrive campi in output. C eval zodlbnm = odlbnm 01 C eval zodobnm = odobnm 01 C eval zodobat = odobat 01 C eval zoducnt = oducnt 01 * Trasforma data creazione. C eval date7 = odccen + odcdat 01 C if date7 <> *blank B02 C *cmdy0 move date7 date 02 C move date zodcdat 02 C else X02 C clear zodcdat 02 C endif E02 * Trasforma data modifica. C eval date7 = odlcen + odldat 01 C if date7 <> *blank B02 C *cmdy0 move date7 date 02 C move date zodldat 02 C else X02 C clear zodldat 02 C endif E02 * Trasforma data aggiornamento. C eval date7 = oducen + odudat 01 C if date7 <> *blank B02 C *cmdy0 move date7 date 02 C move date zodudat 02 C else X02 C clear zodudat 02 C endif E02 * Scrive output. C write w6 01 * Elabora record di object description per pf&lf. C enddo E01 *------------------------------------------------------------------------- * Elabora record di object description per pgm. C do B01 * Se corre record file, abbandona. C if odobtp = '*FILE' C leave 02 C endif E02 * Trascrive campi in output. C eval yodlbnm = odlbnm 01 C eval yodobnm = odobnm 01 C eval yodobtp = odobtp 01 C eval yodobat = odobat 01 C eval yoducnt = oducnt 01 * Trasforma data creazione. C eval date7 = odccen + odcdat 01 C if date7 <> *blank B02 C *cmdy0 move date7 date 02 C move date yodcdat 02 C else X02 C clear yodcdat 02 C endif E02 * Trasforma data modifica. C eval date7 = odlcen + odldat 01 C if date7 <> *blank B02 C *cmdy0 move date7 date 02 C move date yodldat 02 C else X02 C clear yodldat 02 C endif E02 * Trasforma data aggiornamento. C eval date7 = oducen + odudat 01 C if date7 <> *blank B02 C *cmdy0 move date7 date 02 C move date yodudat 02 C else X02 C clear yodudat 02 C endif E02 * Scrive output. C write w7 01 * Elabora record di object description per pgm. C enddo E01 *------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEYP) FILETYPE(*SRC) ENDCHAR('//ENDSRC') :PNLGRP. .*--------------------------------------------------------------------- :HELP NAME=CMD. :H3.Comando JREDKEY :H2.Analisi per la riduzione delle chiavi :P.Esamina il database di un ambiente e stampa l'analisi delle chiavi ridondanti perche' uguali a quelle di altre viste o perche' sottoinsieme troncato di quelle di altre viste. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/libl'. :H3.Library or Library list (LIBL) - library :P.Nome della libreria in cui risiede il database. :P.Valori permessi: :PARML. :PT.:PK DEF.*USRLIBL:EPK. :PD.Il database e' tutto quello presente nella parte utente della lista librerie. :PT.nome-libreria :PD.Il database e' quello presente nella libreria richiesta. :PT.*LIBL :PD.Il database e' tutto quello presente in lista librerie. :PT.*ALLUSR :PD.Il database e' tutto quello presente in tutte le librerie utente. :PT.*ALL :PD.Il database e' tutto quello presente in tutte le librerie. :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/format'. :H3.Print format (FORMAT) :P.Formato della stampa ottenibile. :P.Valori permessi: :PARML. :PT.:PK DEF.*COMPLEX:EPK. :PD.La stampa e' nella forma piu' ampia e complessa e risente di tutte le scelte esercitate tramite i parametri del comando. In particolare il dettaglio della stampa e' composto da una prima riga contenente: :SL. :LI.Libreria e Nome del fisico portatore delle viste elencate subito dopo. :LI.Contatore progressivo dei fisici elencati. :LI. :ESL. Una seconda riga contenente: :SL. :LI.Contatore progressivo delle viste elencate. :LI.Libreria e Nome della vista portatrice delle chiavi. :LI.Date di Creazione, Modifica e UltimoUso della vista. :LI.Numero dei giorni d'uso. :LI.Formato record della vista. :LI.Flag di analisi della vista: 1=PrimoDeiDuplicati D=Duplicato S=SottoinsiemeTroncato. :LI.Elenco delle chiavi. :LI. :ESL. Una terza riga contenente: :SL. :LI.Nome e attributo del programma utente. :LI.Formato record usato dal programma. :LI.Tipologia d'uso: I=Input O=Output U=Update ?=UsoNonDefinito :LI.Numero dei giorni d'uso del programma. :LI.Testo descrittivo del programma utente. :LI. :ESL. La stampa delle terze righe e' condizionata dai parametri EXPB, EXP1, EXPD, EXPS che esaminano il flag di analisi visto sulla seconda riga. :PT.*SIMPLE :PD.La stampa e' nella forma piu' semplice e non risente delle opzioni esercitate tramite i parametri del comando EXPB, EXP1, EXPD, EXPS. In particolare il dettaglio della stampa e' costituito da una sola riga contenente i seguenti dati: :SL. :LI.Fisico-Logico-FlagDiAnalisi-ElencoChiavi :LI. :ESL. mentre mancano i dati statistici e la lista dei programmi utenti dei logici. :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/expfile'. :H3.Expand files (EXPFILE) :P.Espande l'elenco delle viste in funzione dell'analisi eseguita. :P.Valori permessi: :PARML. :PT.:PK DEF.*ALL:EPK. :PD.Sono elencate tutte le viste del database. :PT.*FLGPHY :PD.Sono elencate tutte le viste di file fisici che hanno almeno una vista fleggata. :PT.*FLGKEY :PD.Sono elencate tutte le viste fleggate. :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/expb'. :H3.Expand keys flagged blanks (EXPB) :P.Sceglie se elencare i programmi utenti delle viste con il flag di analisi in bianco. :P.Il parametro vale solo per la stampa con il formato *COMPLEX. :P.Valori permessi: :PARML. :PT.:PK DEF.*NO:EPK. :PD.Non elenca i programmi delle viste fleggate blank. :PT.*YES :PD.Elenca i programmi delle viste fleggate blank. :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/exp1'. :H3.Expand keys flagged 1=FirstDup (EXP1) :P.Sceglie se elencare i programmi utenti delle viste con il flag di analisi uguale a "1" che contrassegna la vista come primo dei doppioni nella definizione delle chiavi. :P.Il parametro vale solo per la stampa con il formato *COMPLEX. :P.Valori permessi: :PARML. :PT.:PK DEF.*YES:EPK. :PD.Elenca i programmi delle viste fleggate "1". :PT.*NO :PD.Non elenca i programmi delle viste fleggate "1". :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/expd'. :H3.Expand keys flagged D=DupKy (EXPD) :P.Sceglie se elencare i programmi utenti delle viste con il flag di analisi uguale a "D" che contrassegna la vista come doppione nella definizione delle chiavi. :P.Il parametro vale solo per la stampa con il formato *COMPLEX. :P.Valori permessi: :PARML. :PT.:PK DEF.*YES:EPK. :PD.Elenca i programmi delle viste fleggate "D". :PT.*NO :PD.Non elenca i programmi delle viste fleggate "D". :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/exps'. :H3.Expand keys flagged S=SubsetKy (EXPS) :P.Sceglie se elencare i programmi utenti delle viste con il flag di analisi uguale a "S" che contrassegna la vista come dotata di chiavi che sono il sottoinsieme troncato di quelle di un'altra vista. :P.Il parametro vale solo per la stampa con il formato *COMPLEX. :P.Valori permessi: :PARML. :PT.:PK DEF.*YES:EPK. :PD.Elenca i programmi delle viste fleggate "S". :PT.*NO :PD.Non elenca i programmi delle viste fleggate "S". :EPARML. :EHELP. .*--------------------------------------------------------------------- :EPNLGRP. //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEYR) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Reduces keys. Recognizes redundancies * Claudio Neroni 12-03-2014 Creato. * Annota sui record orizzontali un flag di sintesi dell'esame. * 1=PrimoDeiDoppi * D=Doppio * S=il file porta chiavi che sono il sottoinsieme troncato * di un altro file. "S" prevale sull'annotazione "1" * eventualmente giā presente sul record. *------------------------------------------------------------------------- * Per cercare record select orizzontale, * chiave presa da accpth file logico APFILE su select SOFILE * libreria APLIB SOLIB * formato APBOLF SORFMT *------------------------------------------------------------------------- * Chiavi orizzontali. Primario. Fjredkey2 ip e k disk * Chiavi orizzontali. Secondario. Fjredkey21 uf e k disk rename(w2:w21) prefix(x) * Select orizzontali. Fjredkey4 if e k disk *------------------------------------------------------------------------- * Chiavi del primario in schiera. D dskeys ds D apkeyf01 D apkeyf02 D apkeyf03 D apkeyf04 D apkeyf05 D apkeyf06 D apkeyf07 D apkeyf08 D apkeyf09 D apkeyf10 D apkeyf11 D apkeyf12 D apkeyf13 D apkeyf14 D apkeyf15 D apkeyf16 D apkeyf17 D apkeyf18 D apkeyf19 D apkeyf20 D apkeyf21 D apkeyf22 D apkeyf23 D apkeyf24 D apkeyf25 D apkeyf26 D apkeyf27 D apkeyf28 D apkeyf29 D apkeyf30 D apkeyf31 D apkeyf32 D apkeyf33 D apkeyf34 D apkeyf35 D apkeyf36 D apkeyf37 D apkeyf38 D apkeyf39 D apkeyf40 D keys 1 400 dim(40) * Chiavi del secondario in schiera. Dxdskeys ds D xapkeyf01 D xapkeyf02 D xapkeyf03 D xapkeyf04 D xapkeyf05 D xapkeyf06 D xapkeyf07 D xapkeyf08 D xapkeyf09 D xapkeyf10 D xapkeyf11 D xapkeyf12 D xapkeyf13 D xapkeyf14 D xapkeyf15 D xapkeyf16 D xapkeyf17 D xapkeyf18 D xapkeyf19 D xapkeyf20 D xapkeyf21 D xapkeyf22 D xapkeyf23 D xapkeyf24 D xapkeyf25 D xapkeyf26 D xapkeyf27 D xapkeyf28 D xapkeyf29 D xapkeyf30 D xapkeyf31 D xapkeyf32 D xapkeyf33 D xapkeyf34 D xapkeyf35 D xapkeyf36 D xapkeyf37 D xapkeyf38 D xapkeyf39 D xapkeyf40 D xkeys 1 400 dim(40) *------------------------------------------------------------------------- * Select in schiera. D sods ds D so01 D so02 D so03 D so04 D so05 D so06 D so07 D so08 D so09 D so10 D so11 D so12 D so13 D so14 D so15 D so16 D so17 D so18 D so19 D so20 D so21 D so22 D so23 D so24 D so25 D so26 D so27 D so28 D so29 D so30 D so31 D so32 D so33 D so34 D so35 D so36 D so37 D so38 D so39 D so40 D so41 D so42 D so43 D so44 D so45 D so46 D so47 D so48 D so49 D so50 D sods1 ds likeds(sods) D sods2 ds likeds(sods) *------------------------------------------------------------------------- * Definisce chiave fisico, libreria fisico * per il secondario con i campi del primario. C kkcorta klist C kfld apbol C kfld apbof * Definisce chiave fisico, libreria fisico, i 40 campi chiave * per il secondario con i campi del primario. C kkw21 klist C kfld apbol C kfld apbof C kfld apkeyf01 C kfld apkeyf02 C kfld apkeyf03 C kfld apkeyf04 C kfld apkeyf05 C kfld apkeyf06 C kfld apkeyf07 C kfld apkeyf08 C kfld apkeyf09 C kfld apkeyf10 C kfld apkeyf11 C kfld apkeyf12 C kfld apkeyf13 C kfld apkeyf14 C kfld apkeyf15 C kfld apkeyf16 C kfld apkeyf17 C kfld apkeyf18 C kfld apkeyf19 C kfld apkeyf20 C kfld apkeyf21 C kfld apkeyf22 C kfld apkeyf23 C kfld apkeyf24 C kfld apkeyf25 C kfld apkeyf26 C kfld apkeyf27 C kfld apkeyf28 C kfld apkeyf29 C kfld apkeyf30 C kfld apkeyf31 C kfld apkeyf32 C kfld apkeyf33 C kfld apkeyf34 C kfld apkeyf35 C kfld apkeyf36 C kfld apkeyf37 C kfld apkeyf38 C kfld apkeyf39 C kfld apkeyf40 * Definisce chiave libreria logico, file logico, formato * per il file select orizzontale con i campi del primario. C kksel1 klist C kfld aplib C kfld apfile C kfld apbolf * Definisce chiave libreria logico, file logico, formato * per il file select orizzontale con i campi del secondario. C kksel2 klist C kfld xaplib C kfld xapfile C kfld xapbolf *------------------------------------------------------------------------- * Contrassegna chiavi doppie. C do B01 C setoff 61 01 * Acquisisce l'eventuale select orizzontale corrispondente al primario. C clear sods1 01 C kksel1 chain w4 01 C if %found(jredkey4) B02 C eval sods1 = sods 02 C endif E02 * Legge i record dal secondario con la stessa chiave del primario. C kkw21 setll w21 01 C do *hival B02 C kkw21 reade w21 02 C if %eof(jredkey21) B03 C leave 03 C endif E03 * Acquisisce l'eventuale select orizzontale corrispondente al secodario. C clear sods2 02 C kksel2 chain w4 02 C if %found(jredkey4) B03 C eval sods2 = sods 03 C endif E03 * Se giā segnato 1=PrimoDeiDoppi o D=Doppio, ricicla. C if xsubset='1' or xsubset='D' B03 C iter 03 C endif E03 * Se la select orizzontale del secondario č diversa * dalla select orizzontale del primario, ricicla. C if sods2 <> sods1 B03 C iter 03 C endif E03 * Se il record secondario č diverso dal primario, segna doppione. C if xaplib<>aplib or xapfile<>apfile B03 C eval xsubset = 'D' 03 C seton 61 03 C endif E03 * Contrassegna il record del secondario. C except segna 02 * Legge i record dal secondario con la stessa chiave del primario. C enddo E02 * Se ha contrassegnato doppioni. * Cerca il record primario sul secondario * e lo contrassegna comme Primo dei doppioni. C if *in61 B02 * Legge i record dal secondario con la stessa chiave del primario. C kkw21 setll w21 02 C do *hival B03 C kkw21 reade w21 03 C if %eof(jredkey21) B04 C leave 04 C endif E04 * Se il record secondario č uguale al primario, segna Primo. C if xaplib=aplib and xapfile=apfile B04 C eval xsubset = '1' 04 C except segna 04 C leave 04 C endif E04 * Legge i record dal secondario con la stessa chiave del primario. C enddo E03 * Se ha contrassegnato doppioni. C endif E02 * Contrassegna chiavi doppie. C enddo E01 *------------------------------------------------------------------------- * Contrassegna chiavi sottoinsieme. C do B01 * Trova quante chiavi dal primario. C clear max1 3 0 01 C do 40 idx 3 0 B02 C if keys(idx)<>*blank B03 C eval max1=idx 03 C endif E03 C enddo E02 * Legge i record precedenti dal secondario. C kkw21 setll w21 01 C do *hival B02 C kkcorta readpe w21 02 C if %eof(jredkey21) B03 C leave 03 C endif E03 * Se giā segnato D=Doppio, ricicla. C if xsubset='D' B03 C iter 03 C endif E03 * Trova quante chiavi dal secondario. C clear max2 3 0 02 C do 40 idx 3 0 B03 C if xkeys(idx)<>*blank B04 C eval max2=idx 04 C endif E04 C enddo E03 * Acquisisce l'eventuale select orizzontale corrispondente al secodario. C clear sods2 02 C kksel2 chain w4 02 C if %found(jredkey4) B03 C eval sods2 = sods 03 C endif E03 * Se la select orizzontale del secondario č diversa * dalla select orizzontale del primario, ricicla. C if sods2 <> sods1 B03 C iter 03 C endif E03 * Se i campi chiave del record secondario * sono in numero inferiore a quelli del primario * e quelli presenti sono uguali a quelli del primario, * contrassegna il record del secondario. C max2 comp max1 51 51 02 C n51 do max2 idx B03 C xkeys(idx) comp keys(idx) 5151 03 C 51 leave 03 C enddo E03 C n51 eval xsubset = 'S' 02 C n51 except segna 02 * Legge i record precedenti dal secondario. C enddo E02 * Contrassegna chiavi sottoinsieme. C enddo E01 *------------------------------------------------------------------------- * Contrassegna record doppi e sottoinsiemi. Ow21 e segna O xsubset *------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEYS) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Reduces keys. Propagates print flag * Claudio Neroni 21-03-2014 Creato. * Propaga il flag di stampa. * Se un record va stampato, flegga per la stampa tutti i record * dello stesso file fisico. *------------------------------------------------------------------------- * Chiavi orizzontali. Primario. Fjredkey2 ip ae k disk * Chiavi orizzontali. Per update. Fjredkey21 uf e k disk rename(w2:w2x) prefix(x) *------------------------------------------------------------------------- * Controlla ordinamento e definisce gruppi di record in input. Iw2 I apbol l2m2 I apbof l1m1 *------------------------------------------------------------------------- * Ad inizio gruppo, assume non stampabile. C l1 setoff 60 *------------------------------------------------------------------------- * Se corre un record da stampare, * annota che il gruppo di cui fa parte č da stampare. C if subset <> *blank B01 C seton 60 01 C endif E01 *------------------------------------------------------------------------- * A fine gruppo file fisico con record da stampare. Cl1 if *in60 B01 * Definisce chiave fisico, libreria fisico per il file di update. Cl1 kkw2x klist 01 Cl1 kfld apbol 01 Cl1 kfld apbof 01 * Si posiziona ad inizio gruppo sulla vista per update. Cl1 kkw2x setll w2x 01 * Elabora i record del gruppo. Cl1 do *hival B02 * Legge un record del gruppo. Cl1 kkw2x reade w2x 02 * Se non trova, abbandona. Cl1 if %eof(jredkey21) B03 Cl1 leave 03 Cl1 endif E03 * Ricalca record stampabile. Cl1 eval xprint = '1' 02 Cl1 except ricalca 02 * Elabora i record del gruppo. Cl1 enddo E02 * A fine gruppo file fisico con record da stampare. Cl1 endif E01 *------------------------------------------------------------------------- * Propaga il flag "da stampare". Ow2x e ricalca O xprint *------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEYTA) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Reduces keys. Print Format Simple * Claudio Neroni 20-03-2014 Creato. * Stampa i risutati dell'analisi del database per ridurre * le chiavi ridondanti. * Versione semplice. *------------------------------------------------------------------------- H decedit('0,') datfmt(*dmy/) datedit(*dmy/) *------------------------------------------------------------------------- * Chiavi orizzontali. Fjredkey2 ip e k disk * Select orizzontali. Fjredkey4 if e k disk * Stampa. Fqsysprt o f 198 printer oflind(*inof) *------------------------------------------------------------------------- * Chiavi orizzontali in schiera. D keds ds D apkeyf01 D apkeyf02 D apkeyf03 D apkeyf04 D apkeyf05 D apkeyf06 D apkeyf07 D apkeyf08 D apkeyf09 D apkeyf10 D apkeyf11 D apkeyf12 D apkeyf13 D apkeyf14 D apkeyf15 D apkeyf16 D apkeyf17 D apkeyf18 D apkeyf19 D apkeyf20 D apkeyf21 D apkeyf22 D apkeyf23 D apkeyf24 D apkeyf25 D apkeyf26 D apkeyf27 D apkeyf28 D apkeyf29 D apkeyf30 D apkeyf31 D apkeyf32 D apkeyf33 D apkeyf34 D apkeyf35 D apkeyf36 D apkeyf37 D apkeyf38 D apkeyf39 D apkeyf40 D ke 1 400 dim(40) *------------------------------------------------------------------------- * Select orizzontali in schiera. D sods ds D so01 D so02 D so03 D so04 D so05 D so06 D so07 D so08 D so09 D so10 D so11 D so12 D so13 D so14 D so15 D so16 D so17 D so18 D so19 D so20 D so21 D so22 D so23 D so24 D so25 D so26 D so27 D so28 D so29 D so30 D so31 D so32 D so33 D so34 D so35 D so36 D so37 D so38 D so39 D so40 D so41 D so42 D so43 D so44 D so45 D so46 D so47 D so48 D so49 D so50 *------------------------------------------------------------------------- * Trattini. D tra s 198 inz(*all'-') *------------------------------------------------------------------------- * Elabora il singolo record. C do B01 * Se il record č da stampare, accetta. Altrimenti abbandona. C select B02 C when ppEXPFILE = '*ALL' X02 C when ppEXPFILE = '*FLGPHY' and print <> *blank X02 C when ppEXPFILE = '*FLGKEY' and subset <> *blank X02 C other X02 C leave 02 C endsl E02 * Acquisisce l'eventuale select orizzontale corrispondente al primario. C clear sods 01 C clear sodsflg 1 01 C kksel chain w4 01 C if %found(jredkey4) B02 C if sods <> *blank B03 C eval sodsflg = 'E' 03 C endif E03 C endif E02 * Se overflow, stampa l'intestazione delle pagine * successive alla prima. C if *inof B02 C except int1 02 C endif E02 * Numera la riga. C eval cnt +=1 01 * Se i campi virgolettabili sono eguali a quelli * della riga precedente, li virgoletta. C if apbol = apbolPREC and apbof = apbofPREC B02 C eval apbolEDIT = '"' 02 C eval apbofEDIT = '"' 02 C else X02 C eval apbolEDIT = apbol 02 C eval apbofEDIT = apbof 02 C endif E02 * Stampa la riga. C except outrow 01 * Salva i campi virgolettabili dell'ultima riga stampata. C eval apbolPREC = apbol 01 C eval apbofPREC = apbof 01 * Stampa chiavi numerose. C if ke(11) <> *blank B02 C except outrow2 02 C endif E02 C if ke(21) <> *blank B02 C except outrow3 02 C endif E02 C if ke(31) <> *blank B02 C except outrow4 02 C endif E02 * Elabora il singolo record. C enddo E01 *------------------------------------------------------------------------- * Fine stampa. Clr except eop *------------------------------------------------------------------------- * Inizializza. C *inzsr begsr * Scambia parametri. C *entry plist * Riceve lista librerie. C parm ppLIBL 10 * Riceve formato di stampa. C parm ppFORMAT 10 * Riceve richiesta di espansione dei file * (*ALL *FLGPHY *FLGKEY) C parm ppEXPFILE 10 * Riceve richiesta di espansione delle chiavi fleggate blank. * (*NO *YES) C parm ppEXPB 10 * Riceve richiesta di espansione delle chiavi fleggate 1=PrimoDuplicato * (*NO *YES) C parm ppEXP1 10 * Riceve richiesta di espansione delle chiavi fleggate D=Duplicato * (*NO *YES) C parm ppEXPD 10 * Riceve richiesta di espansione delle chiavi fleggate S=Sottoinsieme * (*NO *YES) C parm ppEXPS 10 * Riceve Nome del sistema. C parm ppsnam 8 * Compone immagine del comando ricevuto per intestare la stampa. C clear icmd 130 C eval icmd = 'JREDKEY LIBL(' + C %trim(ppLIBL) + C ') FORMAT(' + C %trim(ppFORMAT) + C ') EXPFILE(' + C %trim(ppEXPFILE) + C** ') EXPB(' + C** %trim(ppEXPB) + C** ') EXP1(' + C** %trim(ppEXP1) + C** ') EXPD(' + C** %trim(ppEXPD) + C** ') EXPS(' + C** %trim(ppEXPS) + C ')' * Azzera il contatore righe. C clear cnt 6 0 * Time. C time time 6 0 * Definisce chiave libreria logico, file logico, formato * per il file select orizzontale con i campi del primario. C kksel klist C kfld aplib C kfld apfile C kfld apbolf * Inizilizza i campi virgolettabili dell'ultima riga stampata. C eval apbolPREC = *loval C eval apbofPREC = *loval C *like define apbol apbolPREC C *like define apbof apbofPREC C *like define apbol apbolEDIT C *like define apbof apbofEDIT * Stampa l'intestazione della prima pagina. C except int1 C endsr *------------------------------------------------------------------------- * Intestazione. Oqsysprt e int1 2 1 O e int1 1 O icmd O e int1 1 O 'R:Redundance ' O '1=FirstDup ' O 'D=Dup ' O 'S=SubsetKeys' O +3 'L:Select ' O 'E=ExistSelect ' O 97 'SysName:' O ppsnam +1 O *date y 120 O time +2 '0 : : ' O e int1 1 O 6 'Row' O 8 'P' O 'hyLib' O 19 'P' O 'hyFile' O 30 'K' O 'eyLib' O 41 'K' O 'eyFile' O 52 'K' O 'eyT' O 57 'K' O 'eyFormat' O 68 'R' O 70 'L' O 72 'K' O 'eys...' O e int1 1 O tra * Dettaglio. O e outrow 1 O cnt 3 O apbolEDIT +1 O apbofEDIT +1 O aplib +1 O apfile +1 O apfila +1 O apbolf +1 O subset +1 O sodsflg +1 O ke(01) +1 O ke(02) +1 O ke(03) +1 O ke(04) +1 O ke(05) +1 O ke(06) +1 O ke(07) +1 O ke(08) +1 O ke(09) +1 O ke(10) +1 O e outrow2 1 O 8 '"' O 19 '"' O 71 ' ' O ke(11) +1 O ke(12) +1 O ke(13) +1 O ke(14) +1 O ke(15) +1 O ke(16) +1 O ke(17) +1 O ke(18) +1 O ke(19) +1 O ke(20) +1 O e outrow3 1 O 8 '"' O 19 '"' O 72 ' ' O ke(21) +1 O ke(22) +1 O ke(23) +1 O ke(24) +1 O ke(25) +1 O ke(26) +1 O ke(27) +1 O ke(28) +1 O ke(29) +1 O ke(30) +1 O e outrow4 1 O 8 '"' O 19 '"' O 73 ' ' O ke(31) +1 O ke(32) +1 O ke(33) +1 O ke(34) +1 O ke(35) +1 O ke(36) +1 O ke(37) +1 O ke(38) +1 O ke(39) +1 O ke(40) +1 * Fine stampa. O e eop 1 O '*** End of print ***' *------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEYTB) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Reduces keys. Print Format Complex * Claudio Neroni 24-03-2014 Creato. * Stampa i risutati dell'analisi del database per ridurre * le chiavi ridondanti. * Versione con stampa dati statistici. *------------------------------------------------------------------------- H decedit('0,') datfmt(*dmy/) datedit(*dmy/) *------------------------------------------------------------------------- * Chiavi orizzontali. Fjredkey2 ip e k disk * Select orizzontali. Fjredkey4 if e k disk * Object description PF&LF. Fjredkey6 if e k disk prefix(f) * Object description PGM. Fjredkey7 if e k disk prefix(p) * Program reference. Fjredkey8 if e k disk * Stampa. Fqsysprt o f 198 printer oflind(*inof) *------------------------------------------------------------------------- * Chiavi orizzontali in schiera. D keds ds D apkeyf01 D apkeyf02 D apkeyf03 D apkeyf04 D apkeyf05 D apkeyf06 D apkeyf07 D apkeyf08 D apkeyf09 D apkeyf10 D apkeyf11 D apkeyf12 D apkeyf13 D apkeyf14 D apkeyf15 D apkeyf16 D apkeyf17 D apkeyf18 D apkeyf19 D apkeyf20 D apkeyf21 D apkeyf22 D apkeyf23 D apkeyf24 D apkeyf25 D apkeyf26 D apkeyf27 D apkeyf28 D apkeyf29 D apkeyf30 D apkeyf31 D apkeyf32 D apkeyf33 D apkeyf34 D apkeyf35 D apkeyf36 D apkeyf37 D apkeyf38 D apkeyf39 D apkeyf40 D ke 1 400 dim(40) *------------------------------------------------------------------------- * Select orizzontali in schiera. D sods ds D so01 D so02 D so03 D so04 D so05 D so06 D so07 D so08 D so09 D so10 D so11 D so12 D so13 D so14 D so15 D so16 D so17 D so18 D so19 D so20 D so21 D so22 D so23 D so24 D so25 D so26 D so27 D so28 D so29 D so30 D so31 D so32 D so33 D so34 D so35 D so36 D so37 D so38 D so39 D so40 D so41 D so42 D so43 D so44 D so45 D so46 D so47 D so48 D so49 D so50 *------------------------------------------------------------------------- * Trattini. D tra s 198 inz(*all'-') *------------------------------------------------------------------------- * Decodifica uso. D usg s 2 0 dim(17) ctdata perrcd(1) D usgd s 4 dim(17) alt(usg) *------------------------------------------------------------------------------------------ * User library list. D ppULL ds D ull 110 dim(25) *------------------------------------------------------------------------------------------ * Elabora il singolo record. C do B01 * Se il record č da stampare, accetta. Altrimenti abbandona. C select B02 C when ppEXPFILE = '*ALL' X02 C when ppEXPFILE = '*FLGPHY' and print <> *blank X02 C when ppEXPFILE = '*FLGKEY' and subset <> *blank X02 C other X02 C leave 02 C endsl E02 * Acquisisce l'eventuale select orizzontale corrispondente al primario. C clear sods 01 C clear sodsflg 1 01 C kksel chain w4 01 C if %found(jredkey4) B02 C if sods <> *blank B03 C eval sodsflg = 'E' 03 C endif E03 C endif E02 * Acquisisce l'eventuale object description corrispondente al primario. C kkobj chain w6 66 01 * Se overflow, stampa l'intestazione delle pagine * successive alla prima. C if *inof B02 C except int1 02 C endif E02 * Numera la riga. C eval cnt +=1 01 * Se i campi del fisico sono diversi da quelli della precedente * riga di dettaglio, numera e stampa il nome del fisico. C if apbol <> apbolPREC or apbof <> apbofPREC B02 C eval filecnt +=1 02 C except outrow0 02 C endif E02 * Stampa la riga. C except outrow 01 * Salva il fisico dell'ultima riga stampata. C eval apbolPREC = apbol 01 C eval apbofPREC = apbof 01 * Stampa le chiavi numerose. C if ke(11) <> *blank B02 C except outrow2 02 C endif E02 C if ke(21) <> *blank B02 C except outrow3 02 C endif E02 C if ke(31) <> *blank B02 C except outrow4 02 C endif E02 * Se richiesto, * stampa i programmi utilizzatori della chiave in esame. C if subset = *blank and ppEXPB = '*YES' B02 C or subset = '1' and ppEXP1 = '*YES' 02 C or subset = 'D' and ppEXPD = '*YES' 02 C or subset = 'S' and ppEXPS = '*YES' 02 * Definisce la chiave del gruppo dei pgm utenti. C kkref klist 02 C kfld kkotyp 02 C kfld kkfnam 02 C *like define whotyp kkotyp 02 C *like define whfnam kkfnam 02 * Prepara la chiave del gruppo. C eval kkotyp = '*FILE' 02 C eval kkfnam = apfile 02 * Si posiziona a inizio gruppo. C kkref setll jredkey8 02 * Elabora i record del gruppo. C do *hival B03 * Legge un record del gruppo. C kkref reade jredkey8 03 * Se non ce ne sono altri, abbandona. C if %eof(jredkey8) B04 C leave 04 C endif E04 * Decodifica uso. C z-add 1 ux 3 0 03 C whfusg lookup usg(ux) 50 03 C n50 movel *all'?' whfusgd 03 C 50 movel(p) usgd(ux) whfusgd 03 C *like define usgd whfusgd 03 * Definisce la chiave per la descrizione del programma. C kkpgm klist 03 C kfld whlib 03 C kfld whpnam 03 C kfld whspkg8 03 C *like define podobtp whspkg8 03 * Trasforma il tipo programma da 1 a 8 caratteri. C select C when whspkg = 'P' C eval whspkg8 = '*PGM' C when whspkg = 'S' C eval whspkg8 = '*SQLPKG' C when whspkg = 'V' C eval whspkg8 = '*SRVPGM' C when whspkg = 'M' C eval whspkg8 = '*MODULE' C when whspkg = 'Q' C eval whspkg8 = '*QRYDFN' C other C eval whspkg8 = *blank C endsl * Acquisisce l'eventuale object description del programma. C kkpgm chain w7 67 03 * Se overflow, stampa l'intestazione delle pagine * successive alla prima. C if *inof B04 C except int1 04 C endif E04 * Stampa il programma utente. C except ref 03 * Elabora i record del gruppo. C enddo E03 * Stampa i programmi utilizzatori della chiave in esame. C endif E02 * Elabora il singolo record. C enddo E01 *------------------------------------------------------------------------- * Fine stampa. Clr except eop *------------------------------------------------------------------------- * Inizializza. C *inzsr begsr * Scambia parametri. C *entry plist * Riceve lista librerie. C parm ppLIBL 10 * Riceve formato di stampa. C parm ppFORMAT 10 * Riceve richiesta di espansione dei file * (*ALL *FLGPHY *FLGKEY) C parm ppEXPFILE 10 * Riceve richiesta di espansione delle chiavi fleggate blank. * (*NO *YES) C parm ppEXPB 10 * Riceve richiesta di espansione delle chiavi fleggate 1=PrimoDuplicato * (*NO *YES) C parm ppEXP1 10 * Riceve richiesta di espansione delle chiavi fleggate D=Duplicato * (*NO *YES) C parm ppEXPD 10 * Riceve richiesta di espansione delle chiavi fleggate S=Sottoinsieme * (*NO *YES) C parm ppEXPS 10 * Riceve Nome del sistema. C parm ppsnam 8 * Riceve Lista librerie. C parm ppULL * Compone immagine del comando ricevuto per intestare la stampa. C clear icmd 130 C eval icmd = 'JREDKEY LIBL(' + C %trim(ppLIBL) + C ') FORMAT(' + C %trim(ppFORMAT) + C ') EXPFILE(' + C %trim(ppEXPFILE) + C ') EXPB(' + C %trim(ppEXPB) + C ') EXP1(' + C %trim(ppEXP1) + C ') EXPD(' + C %trim(ppEXPD) + C ') EXPS(' + C %trim(ppEXPS) + C ')' * Azzera i contatori. C clear cnt 6 0 C clear filecnt 6 0 * Time. C time time 6 0 * Definisce chiave libreria logico, file logico, formato * per il file select orizzontale con i campi del primario. C kksel klist C kfld aplib C kfld apfile C kfld apbolf * Definisce chiave libreria logico, file logico, formato * per il file select orizzontale con i campi del primario. C kkobj klist C kfld aplib C kfld apfile * Inizializza i campi virgolettabili dell'ultima riga stampata. C eval apbolPREC = *loval C eval apbofPREC = *loval C *like define apbol apbolPREC C *like define apbof apbofPREC * Stampa l'intestazione della prima pagina. C except int1 * Stampa la lista librerie. C except ull1 C do 25 u 3 0 B01 C if ull(u) = *blank B02 C leave 02 C endif E02 C except ull2 01 C enddo E01 C except ull3 C endsr *------------------------------------------------------------------------- * Intestazione. Oqsysprt e int1 2 1 O e int1 1 O icmd O e int1 1 O 'R:Redundance ' O '1=FirstDup ' O 'D=Dup ' O 'S=SubsetKeys' O +3 'L:Select ' O 'E=ExistSelect ' O 97 'SysName:' O ppsnam +1 O *date y 120 O time +2 '0 : : ' O e int1 1 O 1 'P' O 'hyLib' O 12 'P' O 'hyFile' O 28 'Count' O e int1 1 O 6 'Row' O 8 'K' O 'eyLib' O 19 'K' O 'eyFile' O 30 'C' O 'reationDt' O 41 'C' O 'hangeDt' O 52 'L' O 'astUseDt' O 67 'DyUse' O 69 'K' O 'eyT' O 74 'K' O 'eyFormat' O 85 'R' O 87 'L' O 89 'K' O 'eys...' O e int1 1 O 9 'P' O 'rogram' O 20 'P' O 'gmType' O 31 'C' O 'reationDt' O 42 'C' O 'hangeDt' O 53 'L' O 'astUseDt' O 68 'DyUse' O 70 'A' O 'ttribute' O 81 'F' O 'ormat' O 92 'U' O 'sag' O 97 'P' O 'rogramText' O e int1 1 O tra O e ull1 1 O 'User Library List:' O e ull2 1 O ull(u) O e ull3 1 O tra * Dettaglio. O e outrow0 1 O apbol O apbof +1 O filecnt 3 +1 O e outrow 1 O cnt 3 O aplib +1 O apfile +1 O n66 fodcdat +1 ' / / ' O n66 fodldat +1 ' / / ' O n66 fodudat +1 ' / / ' O n66 foducnt 3 +1 O apfila +1 O apbolf +1 O subset +1 O sodsflg +1 O ke(01) +1 O ke(02) +1 O ke(03) +1 O ke(04) +1 O ke(05) +1 O ke(06) +1 O ke(07) +1 O ke(08) +1 O ke(09) +1 O ke(10) +1 O e outrow2 1 O 8 '"' O 19 '"' O 86 ' ' O ke(11) +1 O ke(12) +1 O ke(13) +1 O ke(14) +1 O ke(15) +1 O ke(16) +1 O ke(17) +1 O ke(18) +1 O ke(19) +1 O ke(20) +1 O e outrow3 1 O 8 '"' O 19 '"' O 85 ' ' O ke(21) +1 O ke(22) +1 O ke(23) +1 O ke(24) +1 O ke(25) +1 O ke(26) +1 O ke(27) +1 O ke(28) +1 O ke(29) +1 O ke(30) +1 O e outrow4 1 O 8 '"' O 19 '"' O 84 ' ' O ke(31) +1 O ke(32) +1 O ke(33) +1 O ke(34) +1 O ke(35) +1 O ke(36) +1 O ke(37) +1 O ke(38) +1 O ke(39) +1 O ke(40) +1 O e ref 1 O 8 ' ' O whpnam O whspkg +1 O whspkg8 +1 O n67 podcdat +1 ' / / ' O n67 podldat +1 ' / / ' O n67 podudat +1 ' / / ' O n67 poducnt 3 +1 O n67 podobat +1 O whrfnm +1 O whfusgd +1 O whtext +1 * Fine stampa. O e eop 1 O '*** End of print ***' *------------------------------------------------------------------------- ** Decodifica uso. 00.... 01I... 02.O.. 03IO.. 04..U. 05I.U. 06.OU. 07IOU. 08...? 09I..? 10.O.? 11IO.? 12..U? 13I.U? 14.OU? 15IOU? //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY0) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Claudio Neroni 21-03-2014 Creato. * Ridefinisce il display file description record format. A R QWHFDFMT FORMAT(QAFDRFMT) A K RFLIB A K RFFILE //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY1) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Claudio Neroni 12-03-2014 Creato. * Ridefinisce il display file description access path. A R QWHFDACP FORMAT(QAFDACCP) //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY2) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Claudio Neroni 12-03-2014 Creato. * Mette le chiavi in orizzontale per facilitare * il confronto tra le chiavi di file diversi. A REF(QAFDACCP) A R W2 TEXT('Accpth horizontalized') A APFILA R A APBOL R A APBOF R A APLIB R A APFILE R A APBOLF R A SUBSET 1 COLHDG('Flag' 'First/Dup/Subset') A VALUES(' ' '1' 'D' 'S') A PRINT 1 COLHDG('ToPrint') A VALUES(' ' '1') A APKEYF01 R REFFLD(APKEYF) COLHDG('Chiave' '01') A APKEYF02 R REFFLD(APKEYF) COLHDG('Chiave' '02') A APKEYF03 R REFFLD(APKEYF) COLHDG('Chiave' '03') A APKEYF04 R REFFLD(APKEYF) COLHDG('Chiave' '04') A APKEYF05 R REFFLD(APKEYF) COLHDG('Chiave' '05') A APKEYF06 R REFFLD(APKEYF) COLHDG('Chiave' '06') A APKEYF07 R REFFLD(APKEYF) COLHDG('Chiave' '07') A APKEYF08 R REFFLD(APKEYF) COLHDG('Chiave' '08') A APKEYF09 R REFFLD(APKEYF) COLHDG('Chiave' '09') A APKEYF10 R REFFLD(APKEYF) COLHDG('Chiave' '10') A APKEYF11 R REFFLD(APKEYF) COLHDG('Chiave' '11') A APKEYF12 R REFFLD(APKEYF) COLHDG('Chiave' '12') A APKEYF13 R REFFLD(APKEYF) COLHDG('Chiave' '13') A APKEYF14 R REFFLD(APKEYF) COLHDG('Chiave' '14') A APKEYF15 R REFFLD(APKEYF) COLHDG('Chiave' '15') A APKEYF16 R REFFLD(APKEYF) COLHDG('Chiave' '16') A APKEYF17 R REFFLD(APKEYF) COLHDG('Chiave' '17') A APKEYF18 R REFFLD(APKEYF) COLHDG('Chiave' '18') A APKEYF19 R REFFLD(APKEYF) COLHDG('Chiave' '19') A APKEYF20 R REFFLD(APKEYF) COLHDG('Chiave' '20') A APKEYF21 R REFFLD(APKEYF) COLHDG('Chiave' '21') A APKEYF22 R REFFLD(APKEYF) COLHDG('Chiave' '22') A APKEYF23 R REFFLD(APKEYF) COLHDG('Chiave' '23') A APKEYF24 R REFFLD(APKEYF) COLHDG('Chiave' '24') A APKEYF25 R REFFLD(APKEYF) COLHDG('Chiave' '25') A APKEYF26 R REFFLD(APKEYF) COLHDG('Chiave' '26') A APKEYF27 R REFFLD(APKEYF) COLHDG('Chiave' '27') A APKEYF28 R REFFLD(APKEYF) COLHDG('Chiave' '28') A APKEYF29 R REFFLD(APKEYF) COLHDG('Chiave' '29') A APKEYF30 R REFFLD(APKEYF) COLHDG('Chiave' '30') A APKEYF31 R REFFLD(APKEYF) COLHDG('Chiave' '31') A APKEYF32 R REFFLD(APKEYF) COLHDG('Chiave' '32') A APKEYF33 R REFFLD(APKEYF) COLHDG('Chiave' '33') A APKEYF34 R REFFLD(APKEYF) COLHDG('Chiave' '34') A APKEYF35 R REFFLD(APKEYF) COLHDG('Chiave' '35') A APKEYF36 R REFFLD(APKEYF) COLHDG('Chiave' '36') A APKEYF37 R REFFLD(APKEYF) COLHDG('Chiave' '37') A APKEYF38 R REFFLD(APKEYF) COLHDG('Chiave' '38') A APKEYF39 R REFFLD(APKEYF) COLHDG('Chiave' '39') A APKEYF40 R REFFLD(APKEYF) COLHDG('Chiave' '40') A K APBOL A K APBOF A K APLIB A K APFILE A K APBOLF //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY21) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Claudio Neroni 12-03-2014 Creato. * Vista logica per la segnatura dei logici con chiavi troncate. A R W2 A PFILE(JREDKEY2) A K APBOL A K APBOF A K APKEYF01 A K APKEYF02 A K APKEYF03 A K APKEYF04 A K APKEYF05 A K APKEYF06 A K APKEYF07 A K APKEYF08 A K APKEYF09 A K APKEYF10 A K APKEYF11 A K APKEYF12 A K APKEYF13 A K APKEYF14 A K APKEYF15 A K APKEYF16 A K APKEYF17 A K APKEYF18 A K APKEYF19 A K APKEYF20 A K APKEYF21 A K APKEYF22 A K APKEYF23 A K APKEYF24 A K APKEYF25 A K APKEYF26 A K APKEYF27 A K APKEYF28 A K APKEYF29 A K APKEYF30 A K APKEYF31 A K APKEYF32 A K APKEYF33 A K APKEYF34 A K APKEYF35 A K APKEYF36 A K APKEYF37 A K APKEYF38 A K APKEYF39 A K APKEYF40 //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY3) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Claudio Neroni 18-03-2014 Creato. * Ridefinisce il display file description select. A R QWHFDSO FORMAT(QAFDSELO) //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY4) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Claudio Neroni 18-03-2014 Creato. * Mette le select in orizzontale per facilitare * il confronto tra le select di file diversi. A REF(QAFDSELO) A R W4 TEXT('Select horizontalized') A SOLIB R A SOFILE R A SORFMT R A SO01 57 COLHDG('Select' '01') A SO02 57 COLHDG('Select' '02') A SO03 57 COLHDG('Select' '03') A SO04 57 COLHDG('Select' '04') A SO05 57 COLHDG('Select' '05') A SO06 57 COLHDG('Select' '06') A SO07 57 COLHDG('Select' '07') A SO08 57 COLHDG('Select' '08') A SO09 57 COLHDG('Select' '09') A SO10 57 COLHDG('Select' '10') A SO11 57 COLHDG('Select' '11') A SO12 57 COLHDG('Select' '12') A SO13 57 COLHDG('Select' '13') A SO14 57 COLHDG('Select' '14') A SO15 57 COLHDG('Select' '15') A SO16 57 COLHDG('Select' '16') A SO17 57 COLHDG('Select' '17') A SO18 57 COLHDG('Select' '18') A SO19 57 COLHDG('Select' '19') A SO20 57 COLHDG('Select' '20') A SO21 57 COLHDG('Select' '21') A SO22 57 COLHDG('Select' '22') A SO23 57 COLHDG('Select' '23') A SO24 57 COLHDG('Select' '24') A SO25 57 COLHDG('Select' '25') A SO26 57 COLHDG('Select' '26') A SO27 57 COLHDG('Select' '27') A SO28 57 COLHDG('Select' '28') A SO29 57 COLHDG('Select' '29') A SO30 57 COLHDG('Select' '30') A SO31 57 COLHDG('Select' '31') A SO32 57 COLHDG('Select' '32') A SO33 57 COLHDG('Select' '33') A SO34 57 COLHDG('Select' '34') A SO35 57 COLHDG('Select' '35') A SO36 57 COLHDG('Select' '36') A SO37 57 COLHDG('Select' '37') A SO38 57 COLHDG('Select' '38') A SO39 57 COLHDG('Select' '39') A SO40 57 COLHDG('Select' '40') A SO41 57 COLHDG('Select' '41') A SO42 57 COLHDG('Select' '42') A SO43 57 COLHDG('Select' '43') A SO44 57 COLHDG('Select' '44') A SO45 57 COLHDG('Select' '45') A SO46 57 COLHDG('Select' '46') A SO47 57 COLHDG('Select' '47') A SO48 57 COLHDG('Select' '48') A SO49 57 COLHDG('Select' '49') A SO50 57 COLHDG('Select' '50') A K SOLIB A K SOFILE A K SORFMT //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY4D) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Claudio Neroni 18-03-2014 Creato. * Riunisce in struttura dati i campi significativi di una select. A REF(QAFDSELO) A R W4DS TEXT('Select data structure') A SOFLD R A SORULE R A SOCOMP R A SONVAL R S A SOVALL R S A SOVALU R A SODYNS R A SOFJVL R S A SOPJVL R S //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY5) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Claudio Neroni 24-03-2014 Creato. * Ridefinisce il display object description. A R QLIDOBJD FORMAT(QADSPOBJ) //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY6) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Claudio Neroni 24-03-2014 Creato. * Parzializza il display object description. A REF(QADSPOBJ) A R W6 TEXT('Object description Physical + A & Logical file') A ODLBNM R A ODOBNM R A ODOBAT R A ODCDAT R 8S 0 A ODLDAT R 8S 0 A ODUDAT R 8S 0 A ODUCNT R S A K ODLBNM A K ODOBNM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY7) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Claudio Neroni 25-03-2014 Creato. * Parzializza il display object description. A REF(QADSPOBJ) A R W7 TEXT('Object description Program') A ODLBNM R A ODOBNM R A ODOBTP R A ODOBAT R A ODCDAT R 8S 0 A ODLDAT R 8S 0 A ODUDAT R 8S 0 A ODUCNT R S A K ODLBNM A K ODOBNM A K ODOBTP //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDKEY8) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Claudio Neroni 25-03-2014 Creato. * Ridefinisce il display program reference. A R QWHDRPPR FORMAT(QADSPPGM) A K WHOTYP A K WHFNAM A K WHPNAM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTST.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JREDTST.) JOBD(NERONI2/NERONI2) OUTQ(QPRINTS) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Claudio Neroni 23/03/2014 Creato. */ /* JREDKEY */ /* Reduces keys. DbTest */ /* Prerequisiti: nessuno */ /* Crea un database adatto a testare l'utility JREDKEY. */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella tutti i file di test. */ DLTF FILE(NERONI2/JREDTST*) /* Crea i file fisici. */ CRTPF FILE(NERONI2/JREDTSTX1 ) SRCFILE(JREDKEY) CRTPF FILE(NERONI2/JREDTSTX2 ) SRCFILE(JREDKEY) CRTPF FILE(NERONI2/JREDTSTX3 ) SRCFILE(JREDKEY) CRTPF FILE(NERONI2/JREDTSTX4 ) SRCFILE(JREDKEY) CRTPF FILE(NERONI2/JREDTSTY1 ) SRCFILE(JREDKEY) CRTPF FILE(NERONI2/JREDTSTY2 ) SRCFILE(JREDKEY) CRTPF FILE(NERONI2/JREDTSTZ1 ) SRCFILE(JREDKEY) /* Crea i file logici. */ CRTLF FILE(NERONI2/JREDTSTXJ ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTXM ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTX1K ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTX1L ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTX2L ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTYM ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTYN ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTYP ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTY1K ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTY1L ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTY1S ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTY2K ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTY2L ) SRCFILE(JREDKEY) CRTLF FILE(NERONI2/JREDTSTZ1L ) SRCFILE(JREDKEY) //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTXJ) FILETYPE(*SRC) ENDCHAR('//ENDSRC') *--------------------------------------------------------------------------------------------- A R BPSJ A TEXT('Giunta comunale.') A JFILE(JREDTSTX1 JREDTSTX3 JREDTSTX4) A J JOIN(JREDTSTX1 JREDTSTX3) A JFLD(BPSGRU GRUGRU) A J JOIN(JREDTSTX1 JREDTSTX4) A JFLD(BPSGR2 GR2GR2) A BPSGRU JREF(1) A BPSDAT JREF(1) A BPSCLA JREF(1) A BPSINF JREF(1) A BPSGR2 JREF(1) A GRUDES JREF(2) A GR2DES JREF(3) A K BPSGRU A K BPSDAT A K BPSCLA *--------------------------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTXM) FILETYPE(*SRC) ENDCHAR('//ENDSRC') *--------------------------------------------------------------------------------------------- A R BPS1 PFILE(JREDTSTX1) A TEXT('Bella gioia') A BPSGRU A BPDATA1 RENAME(BPSDAT) A TEXT('Data rinominata') A BPSCLA A BPSINF A K BPSGRU A K BPSDAT A K BPSCLA A O BPSDAT CMP(EQ 1) *--------------------------------------------------------------------------------------------- A R BPS2 PFILE(JREDTSTX2) A TEXT('Della mamma') A BPSGRU A BPSDAT A BPSCLA A BPSINF A K BPSGRU A K BPSDAT A K BPSCLA A O BPSDAT CMP(EQ 2) *--------------------------------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTX1) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * CN09 Claudio Neroni 19-06-2008 Creato. A UNIQUE A R BPS A TEXT('ConvComm. + A ClasseBps') A BPSGRU 2 A COLHDG('Gruppo') A BPSDAT 8 0 A COLHDG('Data' + A 'inizio' + A 'validitā') A EDTWRD(' - - ') A BPSCLA 2 0 A COLHDG('Classe' + A 'bps') A EDTCDE(M) A BPSINF 5 0 A COLHDG('Limite' + A 'inferiore' + A 'incluso') A EDTCDE(M) A BPSGR2 2 A COLHDG('Gruppo' 'due') A K BPSDAT A K BPSGRU A K BPSCLA //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTX1K) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R BPS1 PFILE(JREDTSTX1) A TEXT('Bella gioia') A BPSGRU A BPDATA1 RENAME(BPSDAT) A TEXT('Data rinominata') A BPSCLA A BPSINF A K BPSGRU A K BPSDAT A K BPSCLA A O BPSDAT CMP(EQ 1) //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTX1L) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * CN09 Claudio Neroni 19-06-2008 Creato. * ConvComm. ClasseBps A UNIQUE A R BPS A PFILE(JREDTSTX1) A K BPSGRU A K BPSDAT A K BPSINF //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTX2) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * CN09 Claudio Neroni 19-06-2008 Creato. A** UNIQUE A R BPS A TEXT('ConvComm. + A ClasseBps') A BPSGRU 2 A COLHDG('Gruppo') A BPSDAT 8 0 A COLHDG('Data' + A 'inizio' + A 'validitā') A EDTWRD(' - - ') A BPSCLA 2 0 A COLHDG('Classe' + A 'bps') A EDTCDE(M) A BPSINF 5 0 A COLHDG('Limite' + A 'inferiore' + A 'incluso') A EDTCDE(M) A** K BPSGRU A** K BPSDAT A** K BPSCLA //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTX2L) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * CN09 Claudio Neroni 19-06-2008 Creato. * ConvComm. ClasseBps A UNIQUE A R BPS A PFILE(JREDTSTX1) A BPSGRU A BPSGRU1 1 I SST(BPSGRU 1) A TEXT('Gruppo primo byte') A COLHDG('Gruppo' 'primo' 'byte') A BPSGRU2 1 I SST(BPSGRU 2) A COLHDG('Gruppo' 'secondo' 'byte') A BPSDAT A BPSCLA A BPSGRUCLA I CONCAT(BPSGRU BPSCLA) A COLHDG('Gruppo' '+classe') A BPSINF A K BPSGRU A K BPSDAT A K BPSINF A K BPSGRU1 A K BPSGRUCLA //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTX3) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * CN09 Claudio Neroni 27-06-2008 Creato. A UNIQUE A R GRU A TEXT('Gruppo') A GRUGRU 2 A COLHDG('Gruppo') A GRUDES 20 A COLHDG('Descrizione' + A 'gruppo') A K GRUGRU //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTX4) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * CN09 Claudio Neroni 27-06-2008 Creato. A UNIQUE A R GR2 A TEXT('Gruppo due') A GR2GR2 2 A COLHDG('Gruppo' 'due') A GR2DES 20 A COLHDG('Descrizione' + A 'gruppo' 'due') A K GR2GR2 //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTYM) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST1 PFILE(JREDTSTY1) A K FLD14 A K FLD15 A R TEST2 PFILE(JREDTSTY2) A K FLD24 A K FLD25 //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTYN) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST2 PFILE(JREDTSTY2) A K FLD24 A K FLD25 A R TEST1 PFILE(JREDTSTY1) A K FLD14 A K FLD15 //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTYP) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST2 PFILE(JREDTSTY2) A K FLD24 A R TEST1 PFILE(JREDTSTY1) A K FLD14 //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTY1) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST1 TEXT('Record 1') A FLD11 10 COLHDG('Field 11') A FLD12 7 COLHDG('Field 12') A FLD13 20 COLHDG('Field 13') A FLD14 4 COLHDG('Field 14') A FLD15 5 COLHDG('Field 15') A K FLD11 //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTY1K) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST1 PFILE(JREDTSTY1) A K FLD11 A K FLD12 //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTY1L) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST1 PFILE(JREDTSTY1) A K FLD13 A K FLD12 //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTY1S) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST1 PFILE(JREDTSTY1) A K FLD11 A K FLD12 A S FLD11 COMP(EQ 'A') A S FLD12 COMP(EQ 'B') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTY2) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST2 TEXT('Record 2') A FLD21 5 COLHDG('Field 21') A FLD22 8 COLHDG('Field 22') A FLD23 10 COLHDG('Field 23') A FLD24 4 COLHDG('Field 24') A FLD25 5 COLHDG('Field 25') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTY2K) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST2 PFILE(JREDTSTY2) A K FLD23 A K FLD22 //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTY2L) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST2 PFILE(JREDTSTY2) A K FLD24 //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTZ1) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST40 TEXT('Record 40 chiavi') A KK01 10 A KKMNHY02 10 A KKTRE03 10 A KKQUA04 10 A KKCIN05 10 A KKSEI 10 A KKSETTE 10 A KKOTTO 10 A KKNOVE 10 A KKDIECI 10 A UNNDICI 10 A DODIC 10 A TREDIC 10 A QUATTO 10 A QUIND 10 A SEDICI 10 A DICIASS 10 A DICIO 10 A DICIA 10 A VENTI 10 A VENTU 10 A VENTIDUE 10 A KK23 10 A VENTIQUA 10 A VENTICI 10 A VENTISEI 10 A KK27 10 A VENT8 10 A VENTI9 10 A TRENTA 10 A TRENT1 10 A TRENTA2 10 A TRENTA3 10 A TRENTAQUAT 10 A TRENTA5 10 A TRENTASEI 10 A TRENTA7 10 A TREN8 10 A TREN9 10 A QUARANTA 10 A K KK01 A K KKMNHY02 A K KKTRE03 A K KKQUA04 A K KKCIN05 A K KKSEI A K KKSETTE A K KKOTTO A K KKNOVE A K KKDIECI A K UNNDICI A K DODIC A K TREDIC A K QUATTO A K QUIND A K SEDICI A K DICIASS A K DICIO A K DICIA A K VENTI A K VENTU A K VENTIDUE A K KK23 A K VENTIQUA A K VENTICI A K VENTISEI A K KK27 A K VENT8 A K VENTI9 A K TRENTA A K TRENT1 A K TRENTA2 A K TRENTA3 A K TRENTAQUAT A K TRENTA5 A K TRENTASEI A K TRENTA7 A K TREN8 A K TREN9 A K QUARANTA //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JREDTSTZ1L) FILETYPE(*SRC) ENDCHAR('//ENDSRC') A R TEST40 PFILE(JREDTSTZ1) A K KK01 A K KKMNHY02 A K KKTRE03 A K KKQUA04 A K KKCIN05 A K KKSEI A K KKSETTE A K KKOTTO A K KKNOVE A K KKDIECI A K UNNDICI A K DODIC A K TREDIC A K QUATTO A K QUIND A K SEDICI A K DICIASS A K DICIO A K DICIA A K VENTI A K VENTU //ENDSRC //ENDBCHJOB