Cleanings physical files help (JCLNPF)

Where allowed to run: All environments (*ALL)
Threadsafe: No
Parameters
Examples
Error messages

Procedure JCLNPF Cleanings physical files > Pulizia file fisici

La procedura si occupa della pulizia dei membri inutilizzati presenti nelle librerie dati scelte.

La procedura va eseguita con l'opportuna autorita' sui dati. File non visibili o non agibili al profilo che esegue la procedura portano equivoci e disguidi che vanificano la procedura intera.

La procedura e' composta da un gruppo di comandi che, chiamati secondo necessita', ne realizzano lo scopo. Il primo comando JCLNPF e' fittizio ma serve a supportare il presente help di procedura.

JCLNPF
Cleanings physical files help
JCLNPF1
Extracts work DB to clean PF
JCLNPF2
Select candidates to clean PF
JCLNPF3
Manage forced flags
JCLNPF4
Duplicate members
JCLNPF5
Delete original members

Ciascuno dei comandi e' dotato di un proprio help.

Si segnala l'esistenza di un ulteriore gruppo di comandi destinati non all'interfaccia con gli utenti della procedura ma solo all'uso interno da parte dei comandi gia' esposti. I comandi del gruppo non sono percio' documentati:

JCLNPF8
Duplicate member
JCLNPF8I
Duplicate member inter
JCLNPF8X
Delete member
JCLNPF8XI
Delete member inter
JCLNPF9
Duplicate file
JCLNPF9I
Duplicate file inter
JCLNPF9X
Delete file
JCLNPF9XI
Delete file inter

Tramite il comando iniziale opportunamente parametrizzato JCLNPF1 e' possibile scegliere se esaminare una sola libreria o una lista di librerie. Con esecuzioni consecutive del comando JCLNPF1 e' anche possibile aggiungere una libreria dati alla volta per raggruppare piu' librerie senza preimpostare una lista librerie.

Si consiglia comunque una sola libreria alla volta per semplificare l'attivita' di verifica dei risultati della procedura. In questo caso una libreria di lavoro gestisce una sola libreria dati e una sola libreria duplicata. Altrimenti una libreria di lavoro gestisce piu' librerie dati e altrettante librerie duplicate.

I membri, se sgombrati, lo sono integralmente senza alcun intervento sui singoli record contenuti nei membri, sia superstiti che sgombrati.

Per "sgombrare" si intende:

A) Con JCLNPF1 JCLNPF2 JCLNPF3 scegliere file e membri da eliminare.

B) Con JCLNPF4 copiarli in librerie parallele alle originali.

C) Con JCLNPF5 rimuovere gli originali dei file e dei membri copiati nelle librerie parallele.

D) Con SAVLIB salvare le librerie parallele.

E) Con DLTLIB cancellare le librerie parallele.

Per libreria "parallela" si intende una libreria generata dalla procedura con lo stesso nome dell'originale ma con l'aggiunta in coda del carattere "§".

Si osserva che l'analisi dei dati tramite la procedura corrente va eseguita rigorosamente su librerie attive e non su duplicati estemporanei in quanto ogni specie di duplicazione (copiatura o salvataggio-ripristino) comporta la perdita delle informazioni d'uso e di modifica sulle quali si basa la procedura.

La procedura tocca i dati originali solo quando si usa il comando JCLNPF5 con il parametro RUN(*EXEC) e agisce quindi senza modificare i dati originali fino all'ultimo passo escluso.

Se i dati evolvono durante l'esame, e' possibile continuare egualmente la sequenza avviata in quanto gli oggetti toccati da uso o modifica si autoescludono dalle duplicazioni e dalle pulizie successive.

Oppure, se non ancora eseguito JCLNPF5 RUN(*EXEC), e' meglio cancellare le librerie duplicate gia' generate, conservare la libreria di lavoro e, infine, rieseguire la procedura dall'inizio ma senza perdere le forzature gia' memorizzate.

Si possono eseguire contemporaneamente pulizie diverse facendo uso di librerie di lavoro diverse. E' cura dell'utente includere una libreria da pulire in una sola libreria di lavoro.

Per evitare doppie elaborazioni, il testo di ogni libreria duplicata riporta il nome della libreria di lavoro che la genera e nessun altra libreria di lavoro puo' utilizzarla. Il controllo non agisce sul comando JCLNPF1 ma agisce invece sui comandi JCLNPF2 JCLNPF3 e sui comandi JCLNPF4 RUN(*DIAG) e JCLNPF5 RUN(*DIAG) che terminano in errore ma solo dopo la normale esecuzione. Lo stesso controllo agisce sui comandi JCLNPF4 RUN(*EXEC) e JCLNPF5 RUN(*EXEC) che terminano in errore prima di tentare la normale esecuzione.

Top

Parameters

None
Top

Esempio d'uso della procedura.

Scelta per gli esempi seguenti una sola libreria da pulire UFNERONI e un suffisso UFNERO per la libreria di lavoro che genera un nome per la libreria stessa JCLNUFNERO, si eseguono i passi seguenti per ottenere al termine la libreria da salvare UFNERONI§ contenente i file e i membri tolti dalla libreria da pulire.

Si inizia preparando la libreria di lavoro tramite il comando JCLNPF1 che raccoglie le informazioni necessarie per le attivita' successive.

I membri da pulire sono decisi mediante i tre parametri di scelta del comando JCLNPF2 e si possono correggere le scelte sui singoli membri tramite un dfu sul file dei flag di forzatura generato dal comando JCLNPF3.

Al termine dell'elaborazione dei comandi di duplicazione e di rimozione, la libreria di lavoro JCLNUFNERO va salvata insieme alla libreria duplicata ma conviene che resti anche in linea fino a quando sara' necessario giustificare le azioni svolte.

La libreria di lavoro contiene i seguenti file fisici di servizio:

JCLNPFMB
Cleanings Phy. Mbr
JCLNPFOD
Cleanings Phy. ObjD
JCLNPFCA
Cleanings Phy. Candidates
JCLNPFFF
Cleanings Phy. ForcedFlags
JCLNPFQ
Retrieve Messages Queue. OutFile
JLOGJCLNPF
Archives Log. Outfile

La libreria di lavoro contiene anche la coda messaggi:

JCLNPF
Cleanings Physical Files

I file fisici di servizio, all'esecuzione del comando JCLNPF4 in versione RUN(*EXEC), vengono copiati anche nelle librerie duplicate a scopo di documentazione qualora in futuro una libreria duplicata venga ripristinata dal salvataggio finale senza piu' disporre contemporaneamente della corrispondente libreria di lavoro.

Il file JCLNPFMB contiene l'elenco membri dei file fisici presenti nella libreria da pulire creato dal comando JCLNPF1.

Il file JCLNPFOD contiene l'elenco dei file presenti nella libreria da pulire creato dal comando JCLNPF1.

Il file JCLNPFCA contiene l'elenco dei membri candidabili allo sgombero con i flag che determinano il comportamento della procedura.

Il file JCLNPFFF contiene i flag che permettono di forzare il destino di ogni singolo membro. I record di forzatura che portano un effettivo flag di forzatura vengono rimossi dalla procedura solo con l'esecuzione del comando JCLNPF3 con il parametro MBROPT(*REPLACE) quindi sopravvivono all'eventuale riesecuzione della raccolta dati eseguita con il comando JCLNPF1 con il parametro MBROPT(*REPLACE).

Il file JCLNPFQ contiene la fotografia della coda messaggi JCLNPF nella quale si ritrova una copia di tutti i messaggi emessi dai comandi della procedura e indirizzati al programma chiamante dei comandi (QCMD, se si sono seguiti i consigli esposti qui di seguito). Si ricorda che il contenuto di una coda messaggi non puo' essere salvato. Si osserva che il file contiene campi carattere non direttamente visibili da dfu e query: usare DSPPFM.

Il file JLOGJCLNPF contiene la fotografia integrale del log nella forma di stampa generato dai comandi JCLNPF4 e JCLNPF5 in versione RUN(*EXEC). Il file e' agibile con la scansione del DSPPFM per eventuali necessita'.

Si riporta un esempio completo di sequenza d'uso dei comandi che compongono la procedura. I passi vanno da A1 ad A11 e prevedono l'utilizzo e il riutilizzo dei cinque comandi che compongono la procedura nonche' l'utilizzo di svariati comandi di sistema maneggiati da un utente non solo esperto di database ma anche con accesso a pratiche e competenze sistemistiche.

I comandi non generano stampe di controllo ma restituiscono le eccezioni e le informazioni necessarie sotto forma di messaggi in joblog. E' percio' necessario che i comandi vengano eseguiti dal video comandi fornito dal programma di sistema QCMD e non da una delle numerose "righe comandi" presenti su quasi tutti i menu' di sistema.

Ogni comando genera un log di cui si riporta l'immagine, correttamente visibile solo se il comando viene eseguito da QCMD.

Si osservino i messaggi informativi e i comandi promemoria duplicabili per esaminare i dati della libreria di lavoro o per eseguire i passi successivi della procedura.

Si osservi inoltre l'esplosione a volte riportata del secondo livello di alcuni messaggi segnati in queste immagini con "**" lungo il log.

Passo A1: Creazione della libreria di lavoro

> JCLNPF1 WRK(UFNERO) LIB(UFNERONI)
  ->Verifica esistenza database in WorkLib: JCLNUFNERO
  ->Display File Desc Type Member in corso lib UFNERONI
  ->Display Object Desc Type File Detail Full in corso
    lib UFNERONI
  ->Creata e riempita WorkLib JCLNUFNERO per pulizia file
    fisici di UFNERONI
> /**/RUNQRY QRYFILE((JCLNUFNERO/JCLNPFMB)) RCDSLT(*YES)
> /**/RUNQRY QRYFILE((JCLNUFNERO/JCLNPFOD)) RCDSLT(*YES)
> /**/JCLNPF2 WRK(UFNERO) SLTUSE(CYYMMDD) SLTCNT(2)
      SLTCHG(CYYMMDD)

Passo A2: Riempimento file candidati allo sgombero

> JCLNPF2 WRK(UFNERO) SLTUSE(1141231)
  ->Genera elenco membri candidati a pulizia.
    WorkLib: JCLNUFNERO
  ->Da trasferire 74 membri. Vedi secondo livello
  ->Generato elenco di 3532 membri candidati a pulizia.
    WorkLib: JCLNUFNERO
> /**/RUNQRY QRYFILE((JCLNUFNERO/JCLNPFCA)) RCDSLT(*YES)
> /**/JCLNPF3 WRK(UFNERO)

Passo A3: Riempimento file forzature

> JCLNPF3 WRK(UFNERO)
  ->Riempie il file dei flag di forzatura.
    WorkLib: JCLNUFNERO
  ->Presenti 0 forzature. Vedi secondo livello
  ->Aggiunti 3532 record mancanti a flag di forzatura.
    WorkLib: JCLNUFNERO
> /**/RUNQRY QRYFILE((JCLNUFNERO/JCLNPFFF)) RCDSLT(*YES)
> /**/UPDDTA FILE(JCLNUFNERO/JCLNPFFF)
> /**/JCLNPF2 WRK(UFNERO) SLTUSE(*PRV) SLTCHG(*PRV)
> /**/JCLNPF4 WRK(UFNERO) RUN(*DIAG)
  ->Per riportare i flag da ForcedFlags a Candidates,
    vedi secondo livello

Passo A4: Dfu su file forzature per aggiungere membri allo sgombero

> UPDDTA FILE(JCLNUFNERO/JCLNPFFF)

Passo A5: Riporta flag di forzatura su file candidati

> JCLNPF2 WRK(UFNERO) SLTUSE(*PRV) SLTCHG(*PRV)
  ->Genera elenco membri candidati a pulizia.
    WorkLib: JCLNUFNERO
**->Da trasferire 76 membri. Vedi secondo livello
  ->Generato elenco di 3532 membri candidati a pulizia.
    WorkLib: JCLNUFNERO
> /**/RUNQRY QRYFILE((JCLNUFNERO/JCLNPFCA)) RCDSLT(*YES)
> /**/JCLNPF3 WRK(UFNERO)
** Secondo livello
    Analisi delle ricorrenze dei "Selection Flag":
    "Initial" "Forced" "Final".
        Initial off 3458
        Initial on  74
        Forced  off 0
        Forced  on  3
        Final   off 3456
        Final   on  76
        Forced  off <> Initial 0
        Forced  off =  Initial 0 inutili
        Forced  on  <> Initial 2
        Forced  on  =  Initial 1 inutili

Passo A6: Diagnosi ante duplicazione

> JCLNPF4 WRK(UFNERO) RUN(*DIAG)
  ->Run *DIAG Spostamenti
  ->Elabora duplicazione membri scelti tramite
    WorkLib JCLNUFNERO
  ->Legge elenco membri da spostare. WorkLib: JCLNUFNERO
  ->Datrice UFNERONI   esiste.     -
    Ricevente UFNERONI§  NON esiste.
**->Lib:UFNERONI Obj:3533 ToMov:76 Desap:0 Chg:0 Err:0
    Alrd:0 Dup:0 Siz:1,366798336 Fre:0,178802688
  ->Esaminato elenco membri da spostare.
    WorkLib: JCLNUFNERO
  ->Wrk:JCLNUFNERO Obj:3533 ToMov:76 Desap:0 Chg:0 Err:0
    Alrd:0 Dup:0 Siz:1,366798336 Fre:0,178802688
  ->Run *DIAG. Spostamenti diagnosticati:
    esamina i messaggi.
** Secondo livello
    L'esame della work library "JCLNUFNERO" segnala la
      presenza nelle librerie dati di 3533 oggetti dei
      quali 76 da muovere nelle librerie riceventi a scopo
      di salvataggio prima della pulizia. Si segnalano
      tuttavia 0 oggetti spariti e 0 oggetti con una
      situazione di aggiornamento o uso cambiata dopo
      l'esame originale. Si sono verificati 0 errori di
      duplicazione. 0 oggetti esistono gia'. Eseguite 0
      duplicazioni. In base alle segnalazioni del presente
      run, valutare se passare all'esecuzione dei
      trasferimenti. Spazio occupato 1366798336. Spazio
      liberabile 178802688.

Passo A6V: Diagnosi ante duplicazione con oggetti originali variati

Si riporta una variazione al passo A6 che si presenta se tra la creazione della libreria di lavoro e la diagnosi degli spostamenti si riscontrano variazioni a file e membri da spostare.

> JCLNPF4 WRK(UFNERO) RUN(*DIAG)
  ->Run *DIAG Spostamenti
  ->Elabora duplicazione membri scelti tramite
    WorkLib JCLNUFNERO
  ->Legge elenco membri da spostare. WorkLib: JCLNUFNERO
  ->Datrice UFNERONI   esiste.     -
    Ricevente UFNERONI§  NON esiste.
  ->r UFNERONI  /BELLA     -BELLA
      "2014-01-30" "16.52.47" "2014-03-07"
  ->m UFNERONI  /BELLA     -BELLA
      "2016-05-05" "17.59.48" "2016-05-05"
  ->r UFNERONI  /F186      -F186
      file del membro non esiste piu'
**->Lib:UFNERONI Obj:3533 ToMov:76 Desap:1 Chg:1 Err:0
    Alrd:0 Dup:0 Siz:1,366798336 Fre:0,178802688
  ->Esaminato elenco membri da spostare.
    WorkLib: JCLNUFNERO
  ->Wrk:JCLNUFNERO Obj:3533 ToMov:76 Desap:1 Chg:1 Err:0
    Alrd:0 Dup:0 Siz:1,366798336 Fre:0,178802688
  ->Run *DIAG. Spostamenti diagnosticati:
    esamina i messaggi.
** Secondo livello
    Nella libreria dati "UFNERONI" sono presenti 3533
      oggetti dei quali 76 da muovere nelle librerie
      ricevente a scopo di salvataggio prima della pulizia.
      Si segnalano tuttavia 1 oggetti spariti e 1 oggetti
      con una situazione di aggiornamento o uso cambiata
      dopo l'esame originale. Si sono verificati 0 errori
      di duplicazione. 0 oggetti esistono gia'. Eseguite 0
      duplicazioni. Spazio occupato 1366798336. Spazio
      liberabile 178802688.

Si osservi la riga "->r" che indica le caratteristiche originali del file o membro e la successiva riga "->m" che rileva le caratteristiche attuali dello stesso soggetto.

Gli errori possono essere corretti e il comando corrente puo' essere riproposto per verificarne la scomparsa. Tuttavia, anche se gli errori non vengono corretti, si puo' passare all'esecuzione della duplicazione che non coinvolgera' i soggetti in errore.

Passo A7: Creazione duplicati

> JCLNPF4 WRK(UFNERO) RUN(*EXEC)
  ->Run *EXEC Spostamenti
  ->Elabora duplicazione membri scelti tramite
    WorkLib JCLNUFNERO
  ->Legge elenco membri da spostare. WorkLib: JCLNUFNERO
  ->Datrice UFNERONI   esiste.     -
    Ricevente UFNERONI§  NON esiste.
  ->Creata libreria ricevente UFNERONI§
  ->Esaminato elenco membri da spostare.
    WorkLib: JCLNUFNERO
  ->Legge elenco membri da spostare. WorkLib: JCLNUFNERO
  ->Datrice UFNERONI   esiste.     -
    Ricevente UFNERONI§  esiste.
**->Lib:UFNERONI Obj:3533 ToMov:76 Desap:0 Chg:0 Err:0
    Alrd:0 Dup:76 Siz:1,366798336 Fre:0,178802688
  ->Esaminato elenco membri da spostare.
    WorkLib: JCLNUFNERO
  ->Wrk:JCLNUFNERO Obj:3533 ToMov:76 Desap:0 Chg:0 Err:0
    Alrd:0 Dup:76 Siz:1,366798336 Fre:0,178802688
  ->Run *EXEC. Duplicazione eseguita: esamina i messaggi.
> /**/DSPPFM FILE(JCLNUFNERO/JLOGJCLNPF)
** Secondo livello
    Nella libreria dati "UFNERONI" sono presenti 3533
      oggetti dei quali 76 da muovere nella libreria
      ricevente a scopo di salvataggio prima della pulizia.
      Si segnalano tuttavia 0 oggetti spariti e 0 oggetti
      con una situazione di aggiornamento o uso cambiata
      dopo l'esame originale. Si sono verificati 0 errori
      di duplicazione. 0 oggetti esistono gia'. Eseguite 76
      duplicazioni. Spazio occupato 1366798336. Spazio
      liberabile 178802688.

Passo A8: Diagnosi ante cancellazione

> JCLNPF5 WRK(UFNERO)
  ->Run *DIAG Cancellazioni
  ->Elabora cancellazione membri scelti tramite
    WorkLib JCLNUFNERO
  ->Legge elenco membri da cancellare. WorkLib: JCLNUFNERO
  Lib datrice UFNERONI. Lib ricevente UFNERONI§.
  ->r UFNERONI  /F186      -
      F186       manca membro ricevente
**->Lib:UFNERONI Obj:3533 ToMov:76 InOri:75 InSav:75 NoSav:1
    Err:0 Chg:0 Dlt:0
  ->Esaminato elenco membri da cancellare.
    WorkLib: JCLNUFNERO
  ->Obj:3533 ToMov:76 InOri:75 InSav:75 NoSav:1 Err:0
    Chg:0 Dlt:0
  ->Run *DIAG. Cancellazioni diagnosticate:
    esamina i messaggi.
** Secondo livello
    Nella libreria dati "UFNERONI" sono presenti 3533
      oggetti dei quali 76 da muovere nella libreria
      ricevente a scopo di salvataggio prima della pulizia.
      Si segnalano 75 oggetti ancora esistenti nella
      libreria originale; 75 presenti nel salvataggio;
      1 mancanti nel salvataggio; 0 in errore; 0 modificati
      dopo la duplicazione; 0 cancellati in questo run dagli
      originali.

Passo A9: Cancellazione file e membri originali da sgombrare

Quest'ultimo passo di procedura e' stato eseguito su una libreria da pulire diversa da quella considerata in tutti gli altri passi. Non ho voluto assassinare con questa azione la libreria piu' vissuta presa di mira negli altri passi. Contentati!

> JCLNPF5 WRK(TST) RUN(*EXEC)
  ->Run *EXEC Cancellazioni
  ->Elabora cancellazione membri scelti tramite
    WorkLib JCLNTST
  ->Legge elenco membri da cancellare. WorkLib: JCLNTST
  Lib datrice NERONITST. Lib ricevente NERONITST§.
**->Lib:NERONITST Obj:512 ToMov:485 InOri:0 InSav:0
    NoSav:0 Err:0 Chg:0 Dlt:482
  ->Esaminato elenco membri da cancellare. WorkLib: JCLNTST
  ->Obj:512 ToMov:485 InOri:0 InSav:0 NoSav:0 Err:0
    Chg:0 Dlt:482
  ->Run *EXEC. Cancellazioni eseguite: esamina i messaggi.
> /**/DSPPFM FILE(JCLNTST/JLOGJCLNPF)
** Secondo livello
     Nella libreria dati "NERONITST" sono presenti 512
      oggetti dei quali 485 da muovere nella libreria
      ricevente a scopo di salvataggio prima della pulizia.
      Si segnalano 0 oggetti ancora esistenti nella libreria
      originale; 0 presenti nel salvataggio; 0 mancanti nel
      salvataggio; 0 in errore; 0 modificati dopo la
      duplicazione; 482 cancellati in questo run dagli
      originali.

Passo A10: Salva libreria duplicata contenente file e membri sgombrati

Non ritengo utile raccontare comandi standard che lascio alla competenza dell'utente. Raccomando solo che il salvataggio sia secondo gli standard indigeni e ricordo che da qui si ripescheranno i dati erroneamente eliminati.

> SAVLIB UFNERONI§

Passo A11: Cancella libreria duplicata

Anche questo passo e' lasciato alla competenza dell'utente e va eseguito con cautela e con la certezza che tutti i passi precedenti siano stati eseguiti correttamente.

> DLTLIB UFNERONI§

Top

Error messages

Unknown
Top