APIs ILE (*SRVPGM)

BoTTom |    Changer de couleur
 
 APIs ILE :   Stockées dans des *SRVPGM.
 
 Tous les *SRVPGM contenants des APIs ILE sont listés dans le répertoire
  de liage QUSAPIBD, automatiquement utilisé par l'OS lors d'une compilation
 
 [les nom comme QSO* indique tous les *SRVPGM commencant par  QSO...]
 
      QLEMF    fonctions mathématiques
      QLEAWI   Gestion des dates et APIs diverses.
      QSNAPI   Gestion dynamique des écrans (DSM)
 
      QSO*     APIs sockets
      QTEDBGS  APIs debug
      QTQICONV APIs de conversion (UNICODE)
      QUSRGF*  APIs "registration facility" = pgms d'exit
 
 Les compilateurs lient automatiquement vos pgms avec les *SRVPGM suivants:
 
      QC2*     routines utilisées par les programmes C/400
      QLNR*    routines utilisées par les programmes ILE/COBOL
      QRNX*    routines utilisées par les programmes ILE/RPG-IV


|    Changer de couleur
 
 APIs ILE :   liables avec tout programe ILE,
              commencent par CEE.... = SAA
                             CEE4... = Spécifiques OS/400.
 
 Certaines APIs attendent des valeurs (et non des pointeurs d'adresses) et
  ne peuvent pas être utilisées en RPG avant la V3R60.
 
 D'autres sont des fonctions sous la forme x = f(y), c'est à dire qu'elles
  retournent une valeur, et ne peuvent donc pas être utilisées en COBOL.
 
 
 en COBOL  : CALL PROCEDURE 'CEE....' USING x, y [BY CONTENTS/BY REFERENCE],
                                            OMITTED.
 
 en RPG IV :      CALLB   'CEE...'
                  PARM               X
                  PARM               Y
                  PARM               *OMIT
 
            ou    CALLP   CEE...(x : y : *omit)
 *OMIT = absence de valeur (pointeur nul) pour un paramètre facultatif.


|    Changer de couleur
 
 Certaines APIs admettent des paramètres polymorphes (de forme non
  figée) : Chaine de caractère de longueur non définie par exemple.
 
 Il faut alors utiliser la notion de descripteur :
 
  - ce sont des informations sur la structure des paramètres qui sont
     envoyées à la procédure appelée, en même temps que les paramètres.
 
    -> C'est automatique en CL avec CALLPRC
 
    -> il faut le demander en RPG avec CALLB(D) ou l'option OPDESC
 
  - Si vous gérez le descripteur : l'appel est un peu plus long.
                                   le descripteur est ignoré si la procèdure
                                    ne l'utilise pas (pas d'erreur).
 
  - si vous ne le gérez pas et que le procédure en a besoin :
       ==> CEE0502 "Missing operational descriptor."
 
  Quelques APIs ILE (particulièrement les APIs date) en ont besoin.
 


|    Changer de couleur
 APIs de gestion d'erreur
 
 APIs de gestion de mémoire -> voir aussi en RPG-IV %alloc()
 
      gestion du tas "heap" (comme sur un PC)
      allocation dynamique de mémoire
 
 APIs de fonctions mathématiques (non listées)
 
      sinus, cosinus, tangente, logarithme, etc ...
      (utilisent des variables en notation scientifique)
 
 APIs de gestion des groupes d'activation :
      + CEE4ABN       = fin anormale
      + CEETREC       = fin normale
        .....
 
 APIs de gestion de messages ILE (gestion commune des erreurs)
      + CEEMOUT       = envoi d'un message
      + CEEMGET       = retrouve infos sur un message
      + CEEMSG        = retrouve, formate et envoie un message, suite
                         à une erreur ILE.


|    Changer de couleur
 
 APIs de gestion des paramètres (descripteur).
      + CEEGSI        = décrit un paramètre reçu
      + CEEDOD        = infos complémentaires sur un paramètre
      + CEETSTA       = teste la présence d'un paramètre facultatif.
 
 ET ENFIN
 
 APIs de manipulation DATES et HEURES :
 
      Pour toutes ces APIs une date lilian exprime une date en nombre de
       jours depuis le 15 Octobre 1582 (jour 1, qui est le premier jour
       du calendrier Grégorien).
 
      + CEEDAYS       = conversion date vers format lilian
 
      + CEEDATE       =  <fonction inverse>
 
      + CEEDYWK       = calcul du n° de jour dans la semaine à partir d'une
                         date lilian  (1 = Dimanche, 2 = Lundi ...)
 
      + etc, etc ...





©AF400