Lecture d’un fichier de l’IFS
Syntaxe 1 (conseillée)
<Résultat1> = ASfLit(<id_ouverture>, <taille>, <données>)
Syntaxe 2
<Résultat2> = ASfLit(<id_ouverture>, <taille>)
En anglais : ASfRead
Paramètres
<Résultat1> : entier
Nombre d’octets ou de caractères lus (suivant le mode d’ouverture).
<Résultat2> : Buffer
Données lues
<id_ouverture> : Entier
Entier fourni par la fonction ASfCree ou ASfOuvre.
<données> : Buffer ou chaine de caractères allouée
Espace de données destiné à recevoir la lecture
<taille> : Entier optionnel
Nombre d’octets ou de caractères à lire.
La syntaxe 1 est avantageuse car convertit dans le type fourni (depuis ou vers Unicode si nécessaire), indépendamment du type d’ouverture.
Le nombre donné en paramètre et en résultat correspond à la taille « naturelle », soit :
Pour la syntaxe 1 :
· un nombre d’octets si le type de données du paramètre 3 est binaire ou texte
· un nombre de caractères si le type de données du paramètre 3 est Unicode.
Pour la syntaxe 2 :
· un nombre d’octets si le mode d’ouverture est binaire ou texte
· un nombre de caractères Unicode si le mode d’ouverture est en Unicode.
Exemple :
Cet exemple télécharge un fichier *SAVF vers un répertoire local :
(depuis MY_LIB/MYSAVF vers c:\temp\mysavf.savf)
nHdl, cnt est entier
buf est Buffer
nFicLocal est entier
nHdl = ASfOuvre("/QSYS.LIB/MY_LIB.LIB/MYSAVF.FILE", ASfoBinaire)
IF nHdl = -1 ALORS
Erreur(ErreurInfo())
RETOUR
END
nFicLocal = fOuvre("c:\temp\mysavf.savf",foEcriture+foCréation)
IF nFicLocal = -1 ALORS
Erreur(ErreurInfo())
RETOUR
END
cnt = ASfLit(nHdl, 65000, buf)
TANTQUE cnt<>0
fEcrit(nFicLocal, buf, cnt)
cnt = ASfLit(nHdl, 65000, buf)
FIN
fFerme(nFicLocal)
ASfFerme(nHdl)