Questo set si basa sul comando QShell Jar (Java Archive Tool) creato da ORACLE
(vedi questa pagina).
Appendice B mostra come usare questo comando nell'ambiente QShell.
Questa utility comprende tre comandi CL per trattare i file zip e basati su "jar" : ZIP2, DSPZIP2 and UNZIP2.
1- Il comando ZIP/ZIP2
Zip with "jar" (ZIP2)
Type choices, press Enter.
Zip stream file. . . . . . . . ZIPFILE /tmp/zipFile1.zip
IFS objects to be zipped. . . . IFSOBJS /zip/test/a.txt
+ for more values /zip/css
Include object paths. . . . . . PATHS *NO *YES, *NO
Replace target zip file . . . . REPLACE *NO *YES, *NO
Output messages. . . . . . . . OUTPUT *NONE *, *PRINT, *NONE |
|
Figura 1 - Il comando ZIP2 |
Si usi questo comando per comprimere in un file zip fino a 50 oggetti IFS (file di flusso e/o indirizzari).
La compressione viene effettuata dal comando QShell "jar".
- Zip stream file (ZIPFILE) - Path e nome del file di flusso che conterrrà gli oggetti IFS zippati (compressi).
Nota 1: Il totale delle dimensioni degli oggetti da comprimere può superare i 2 Gigabyte.
Nota 2: Questo file di flusso non deve esistere già. Se già esiste, viene cancellato e ricreato.
Nota 3: A questyo file di flusso viene sempre assegnato il CCSID 819 (ASCII).
|
- IFS objects to be zipped (IFSOBJS) - Fino a 50 oggetti IFS da comprimere.
Il path (comprensivo di nome) di ciascun oggetto non deve superare i 500 caratteri.
Nota 4: Il comando "jar" della QShell assegna CCSID 819 (ASCII) a tutte le copie compresse degli oggetti nello zip file.
Pe questo motivo nel comando UNZIP2 è presente il parametro TGTCCSID che restituisce il CCSID originario agli oggetti decompressi.
Note 5: Non sono supportati nomi generici (terminanti con un asterisco (*) ).
|
- Include stream file paths (PATHS) - Specifica se la copia compressa di un file di flusso
(esempio:/zip/test/a.txt) non debba includere il suo path
(esempio: a.txt) oppure lo debba includere
(esempio: /zip/test/a.txt).
Nel primo caso (oggetto zippato senza path) l'oggetto verrà poi decompresso come /a.txt.
Nel secondo caso (oggetto compresso con il suo path) l'oggetto sarà decompresso come /zip/test/a.txt..
Nota 6: Diversamente dal comando "zip" della QShell, il comando "jar" della QShell non ha la opzione per sopprimere il path dell'oggetto zippato.
Per questo motivo, il programma del comando ZIP2 - quando si specifica PATHS(*NO) - deve copiare in modo temporaneo ogni oggetto da comprimere nell'indirizzario radice ("/") dell'IFS
(a meno che l'oggetto non si trovi già nell'indirizzario radice).
Prima di effettuare tale copia, il programma controlla se nell'indirizzario radice esista già un oggetto con lo stesso nome.
In caso positivo, il programma emette un messaggio di errore e sospende l'esecuzione.
Nota 7: DSe l'oggetto da comprimere è un indirizzario, il parametro PATHS(*NO) non ha alcun effetto e l'indirizzario viene compresso
(con tutti i suoi oggetti e sottoindirizzari) come se fosse stato specificato PATHS(*YES).
|
Scegliere
- *NO per non includere i path degli oggetti
- *YES per includere il path degli oggetti.
- Replace target zip file (REPLACE) - Se il file zip di arrivo debba essere sostituito qualora esista già.
- Output messages (OUTPUT) - Specifica se e come debbano essere presentati i messaggi emessi dal "jar" della QShell.
Scelte possibili:
- * - Se il comando è eseguito in ambiente interattivo, i messaggi vengono visualizzati sullo schermo; altrimenti vengono scritti in un file stampa di nome QSYSPRT.
- *PRINT - I messaggi vengono registrati su un file di stampa di nome QSYSPRT.
- *NONE - Non far vedere i messaggi emesssi.
Nota 8: Il comando "jar" della QShell non supporta la cifratura.
|
Esempi:
1. Il comando |
ZIP2 ZIPFILE('/tmp/zipFile1.zip') IFSOBJS('/zip/test/a.txt' '/zip/css') |
|
PATHS(*NO) OUTPUT(*) |
- restituisce questi messaggi:
adding: a.txt(in = 64) (out= 63)(deflated 1%)
adding: zip/css/(in = 0) (out= 0)(stored 0%)
adding: zip/css/css.css(in = 44091) (out= 5027)(deflated 88%)
adding: zip/css/cssprint.css(in = 332) (out= 141)(deflated 57%) |
- Lo zip file /tmp/zipFile1.zip, nell'unzip decomprime gli oggetti così:
a.txt |
/zip/css |
/zip/css/css.css |
/zip/css/cssprint.css |
2. Il comando |
ZIP2 ZIPFILE('/tmp/zipFile2.zip') IFSOBJS('/zip/test/a.txt' '/zip/css') |
|
PATHS(*YES) OUTPUT(*) |
- restituisce questi messaggi:
adding: zip/test/a.txt(in = 64) (out= 63)(deflated 1%)
adding: zip/css/(in = 0) (out= 0)(stored 0%)
adding: zip/css/css.css(in = 44091) (out= 5027)(deflated 88%)
adding: zip/css/cssprint.css(in = 332) (out= 141)(deflated 57%) |
- Lo zip file /tmp/zipFile2.zip, nell'unzip decomprime gli oggetti così:
/zip/test/a.txt |
/zip/css |
/zip/css/css.css |
/zip/css/cssprint.css |
2 - Comando ZIP/DSPZIP2
Contents of a .zip stmf (DSPZIP2)
Type choices, press Enter.
Zip stream file. . . . . . . . ZIPFILE /tmp/zipFile1.zip
Output messages. . . . . . . . OUTPUT * *, *PRINT |
|
Figura 2 - Il comando DSPZIP2 |
Si usi questo comando per visualizzare il contenuto di uno zip file.
- Zip stream file (ZIPFILE) - Path e nome dello zip file da visualizzare.
- Output messages (OUTPUT) - Specifica se e come debbano essere presentati i messaggi emessi dal "jar" della QShell.
Scelte possibili:
- * - Se il comando è eseguito in ambiente interattivo, i messaggi vengono visualizzati sullo schermo; altrimenti vengono scritti in un file stampa di nome QSYSPRT.
- *PRINT - I messaggi vengono registrati su un file di stampa di nome QSYSPRT.
- *NONE - Non far vedere i messaggi emesssi.
Esempi:
1. Il comando |
DSPZIP2 ZIPFILE('/tmp/zipFile1.zip') OUTPUT(*) |
- restituisce questi messaggi:
64 Sat Sep 23 17:43:58 UTC 2017 a.txt
0 Sun Sep 24 13:30:32 UTC 2017 zip/css/
44091 Sun Sep 24 13:21:18 UTC 2017 zip/css/css.css
332 Sun Sep 24 13:21:20 UTC 2017 zip/css/cssprint.css |
3 - Il comando ZIP/UNZIP2
Unzip a ZIP stream file (UNZIP2)
Type choices, press Enter.
ZIP stream file. . . . . . . . ZIPFILE /tmp/zipFile1.zip
Target directory. . . . . . . . TGTDIR /mydir
CCSID of unzipped files. . . . TGTCCSID *JOB Number, *JOB, *SAME
Display the target directory. . DSPTGTDIR *NO *BEFORE, *AFTER, *BEFAFT, *NO
Output messages. . . . . . . . OUTPUT * *, *PRINT, *NONE |
|
Figura 3 - Il comando UNZIP2 |
Si usi questo comando per "de-zippare" uno zip file.
- Zip stream file (ZIPFILE) - Path e nome dello zip file da "de-zippare".
- Target directory (TGTDIR) - L'indirizzario IFS in cui devono andare gli oggetti IFS una volta decompressi.
Nota 1: Se un oggetto include il suo path, tale path viene aggiunto all'indirizzario specificato nel parametro TGTDIR. Sottoindirizzari mancanti vengono creati automaticamente.
Nota 2: L'oggetto decompresso sostituisce sempre un oggetto dello stesso nome nello stesso path.
|
- CCSID of unzipped files (TGTCCSID) - A tutti gli oggetti compressi era stato assegnato il CCSID 819 (ASCII), benchè i loro dati non fossero stati modificati mantenendo così il loro CCSID originale.
Per questo motivo, all'utilizzatore di questo comando viene richiesto di specificare un CCSID da ri-assegnare a tutti gli oggetti una volta decompressi.
Nota 3. Il comando da utilizzare per riassegnare un CCSID ad un oggetto senza variare il CCSID dei suoi dati è:
CHGATR OBJ('/tmp2/a.txt') ATR(*CCSID) VALUE(37)
|
Scelte possibili:
- *JOB - Assegna il CCSID di default del lavoro in corso.
- *SAME - Non variare il CCSID dell'oggetto (da usarsi quando l'oggetto zippato è proprio un oggetto PC).
- ccsid value - Specificare il CCSID voluto (da 37 a 65535).
- Display the target directory (DSPTGTDIR) - Specifica se e quando l'indirizzario di arrivo debba essere visualizzato (vale solo per i lavori interattivi).
Scelte possibili:
- *NO - Non visualizzare l'indirizzario di arrivo.
- *BEFORE - Visualizzalo prima che la decompressione abbia luogo.
- *AFTER - Visualizzalo dopo la decompressione.
- *BEFAFT - Visualizzalo prima e dopo la decompressione.
- Output messages (OUTPUT) - Questo parametro viene ignorato. E' ancora presente per compatibilità con i rilasci precedenti dello stesso comando.
Esempi:
- Torniamo al primo esempio del comando ZIP2. In quell'esempio, lo zip file /tmp/zipFile1.zip contiene
- il file di flusso a.txt senza path, più
- l'indirizzario zip/css che contiene a sua volta due file di flusso, css.css e cssprint.css.
Supponiamo di eseguire il comando:
UNZIP2 ZIPFILE('/tmp/zipFile1.zip') TGTDIR('/h')
In questo caso, l'indirizzario h riceverà i seguenti oggetti:
- il file di flusso /h/a.txt
- l'indirizzario /h/zip
- l'indirizzario /h/zip/css
- il file di flusso /h/zip/css/css.css
- il file di flusso /h/zip/css/cssprint.css
- Se invece di decomprimere gli oggetti nell'indirizzario di arrivo /h, li decomprimiamo nell'indirizzario di arrivo radice / con il comando
UNZIP2 ZIPFILE('/tmp/zipFile1.zip') TGTDIR('/')
- il dizionario radice riceve il file di flusso /a.txt
- mentre gli altri file di flusso già esistenti
/zip/css/css.css e
/zip/css/cssprint.css
vengono sostituiti da quelli decompressi dello zip file.
|