*/?----------------------------------------------------------------------- */?® MALLE David programme de service de gestion des API IFS */?® --------------------------------------------------------------------- */?® Inspirez vous de ce programme tant que vous le souhaitez */?® Modifiez le, améliorez le, ... */?® --------------------------------------------------------------------- */-> CF. README.TXT pour les instructions de compilation et de mise */-> en oeuvre. */?----------------------------------------------------------------------- H NoMain H COPYRIGHT('David MALLE') **‚---------------------------------------------------- **‚ Prototypes API / IFS **‚ Zone utilisées pour déclaration de type like **‚ Zone utilisées pour gestion de l'IFS **‚---------------------------------------------------- /COPY QCPYSRC,PR_APICIFS /COPY QCPYSRC,DC_LIKE /COPY QCPYSRC,DC_IFS **‚------------------------------------------------------------------------ **‚Création d'un document dans l'IFS **‚------------------------------------------------------------------------ D CreateIFSDoc PR 1N D input_DOC 200A VALUE D input_MODE 8A VALUE D input_CCSID 10U 0 VALUE **‚------------------------------------------------------------------------ **‚Création d'un document dans l'IFS **‚------------------------------------------------------------------------ P CreateIFSDoc B EXPORT D CreateIFSDoc PI 1N D input_DOC 200A VALUE D input_MODE 8A VALUE D input_CCSID 10U 0 VALUE * D output_VAL S 1N D FileExist S 1N D ReturnInt S like(t_int) D Fd S like(t_int) /free // ----------------------------------------------------- // Si fichier n'existe pas, le fichier est créé avec CCSID // Si le fichier existe et *REPLACE : supression + création // Si le fichier existe et *ADD : aucune action // ----------------------------------------------------- output_VAL = *on; if ( access(input_DOC:F_OK) < 0 ); FileExist = *off; else; FileExist = *on; endif; // Si existe et remplacement demandé : suppression if (FileExist = *on and input_MODE = '*REPLACE'); ReturnInt = unlink(input_DOC); if (ReturnInt < 0); // Erreur lors de la supression du document IFS output_VAL = *off; else; FileExist = *off; endif; endif; // Création du document si n'existe pas if (FileExist = *off); flags = O_WRONLY + O_CREAT + O_TRUNC + O_CODEPAGE; mode = S_IRUSR + S_IWUSR + S_IRGRP + S_IROTH; Fd = open(input_DOC:flags:mode:input_CCSID); if ( Fd < 0 ); // Erreur lors de la création du document output_VAL = *off; else; FileExist = *on; endif; // Fermeture du document ReturnInt = close(Fd); endif; return output_VAL; /end-free P CreateIFSDoc E