
|
Dpath_fmt DS TEMPLATE qualified
D CCSID 10I 0 inz
* 0 = CCSID du JOB
D pays 2 inz(*ALLx'00')
* x'0000' = pays du job
D langage 3 inz(*ALLx'00')
* x'000000' = langue du job
D reserve1 3 inz(*ALLx'00')
D typ_indicateur 10I 0 inz(0)
* 0 => path_name content un chemin, le sérateur est sur 1
* 1 => path_name contient un pointeur, le séparateur est sur 1
* 2 => path_name content un chemin, le séparateur est sur 2
* 3 => path_name contient un pointeur, le séparateur est sur 2
D path_len 10I 0
* lg du chemin
D path_delimiter 2 inz('/')
* si le séparateur est sur 1, c'est le premier caractère
D reserve2 10 inz(*ALLx'00')
D path_name 1024
 
D chemin_in DS likeds(path_fmt) inz(*LIKEDS)
D chemin_out DS likeds(path_fmt) inz(*LIKEDS)
 
Dunzipopt DS qualified
* affichage de messages *VERBOSE ou *NONE
D verbose 10 inz('*NONE')
* remplacer si existant ? *ALL ou *NONE
D replace 6 inz('*YES')
 
DerrcodeDS ds qualified
* pour ne pas recevoir les erreurs : inz(%size(errcodeDS))
d tailleDS 10i 0 inz(0)
d taille 10i 0
d msgID 7
d reserve 1
d errdta 50
 
D QZIPUNZIP PR EXTPROC('QzipUnzip')
D chemin_inp likeds(path_fmt)
D chemin_outp likeds(path_fmt)
D format 8 const
D optionp likeds(unzipopt)
D error likeds(errcodeds)
 
|
* paramètres en entrée
DQUNZIP PI EXTPGM('QUNZIP')
* les chemins sont à 32c pour faciliter le CALL depuis une ligne
* de commandes, il peuvent être étendus jusqu'à 1024
D fichierzip 32
D repertoire 32
/free
chemin_in.path_name = fichierzip;
chemin_in.path_len = %len(%trimr(fichierzip));
chemin_out.path_name = repertoire;
chemin_out.path_len = %len(%trimr(repertoire));
 
QZipunzip(chemin_in : chemin_out : 'UNZIP100' : unzipopt : errcodeds);
 
*inLR = *on;
/end-free
|