Advertisement
retrouver la taille d'un fichier dans l'IFS
Il est très simple de retrouver la taille d'un objet as400
mais pour un fichier de L'IFS voici une solution à base d'api
 
PGM PARM(&PATH &SIZEDEC) 
DCL        VAR(&PATH)     TYPE(*CHAR) LEN(128)
DCL        VAR(&SIZEDEC)  TYPE(*DEC)  LEN(15 0)
DCL        VAR(&HANDLE)   TYPE(*CHAR) LEN(16)
DCL        VAR(&SIZEBIN)  TYPE(*CHAR) LEN(4)
DCL        VAR(&PATHLEN)  TYPE(*CHAR) LEN(4)
DCL        VAR(&ATTRTAB)  TYPE(*CHAR) LEN(10)
DCL        VAR(&ATTRLEN)  TYPE(*CHAR) LEN(4)

CHGVAR     VAR(%BIN(&PATHLEN)) VALUE(128)
CHGVAR     VAR(%BIN(&ATTRLEN)) VALUE(10)

CALL       PGM(QHFOPNSF) PARM(&HANDLE &PATH &PATHLEN +
             '100 100   ' &ATTRTAB &ATTRLEN ' ' +
             X'00000000') /* ouverture du fichier */
CALL       PGM(QHFGETSZ) PARM(&HANDLE &SIZEBIN +
             X'00000000') /* Récupération de la taille */
CALL       PGM(QHFCLOSF) PARM(&HANDLE X'00000000') /* +
             Fermeture du fichier */

/*  conversion du résultat vers la variables de retours    */
CHGVAR     VAR(&SIZEDEC) VALUE(%BIN(&SIZEBIN))
ENDPGM

exemple d'utilisation dans un programme:

call votrepgm parm('/tmp/votrefic.txt' &var150)