La fonction %BIN en CL

BoTTom |    Changer de couleur
 
 Le langage de contrôle accepte depuis la 2.2 de travailler avec des
 données BINAIRES.
 
 Il n'est pas possible de déclarer une variables binaire, mais il est
 possible de la manipuler avec la fonction %BIN.
 
 
   %BIN(&var pos lg) 
         ^    ^
         !    !
         !    !-- position fonctionne comme dans %SST
         !        lg doit être 2 ou 4
         !
         !        si position/lg non indiqué la variable doit être
         !                                      *CHAR (2 ou 4)
       variable de type caractère
 
   S'il y a des décimales elles seront tronquées.
   Si la valeur est négative ==> complément vrai
   Si le récepteur est trop petit ==> MCH1210
 


|    Changer de couleur
 Exemples :  DCL        VAR(&N) TYPE(*DEC) LEN(3 0)
             DCL        VAR(&B) TYPE(*CHAR) LEN(2) VALUE(X'000A')
 
             CHGVAR     VAR(&N) VALUE(%BIN(&B))  /* N = 10      */
             CHGVAR     VAR(%BIN(&B)) VALUE(15)  /* B = X'000F' */
 
 
 
             PGM        PARM(&LISTE)    /* GESTION DE PARAMETRES    */
                                        /* EN LISTE SIMPLE - MAX(3) */
             DCL        VAR(&LISTE) TYPE(*CHAR) LEN(32)
             DCL        VAR(&ELEM)  TYPE(*CHAR) LEN(10)
             DCL        VAR(&CNT)   TYPE(*DEC) LEN(1 0)
             DCL        VAR(&DEP)   TYPE(*DEC) LEN(2 0)  VALUE(-7)
             IF (%BIN(&LISTE 1 2) > 0) THEN(DO)
 SUIVANT:      CHGVAR &CNT (&CNT + 1)
               CHGVAR &DEP (&DEP + 10)
               CHGVAR &ELEM %SST(&LISTE &DEP 10)
            /* TRAITEMENT DE CETTE VALEUR */
               IF (&CNT < %BIN(&LISTE 1 2)) THEN(GOTO SUIVANT)
               ENDDO
               ENDPGM


|    Changer de couleur
 
La version 5.3 apporte de nombreuses avancées pour le langage CL.
 
 - le support direct des variables binaires (plus besoin de  %BIN)
 
 - le support de fichiers multiples (il est enfin possible de lire un
    fichier BD et d'afficher un DSPF dans le même programme)
 
 - l'arrivée de nombreuses commandes de structuration DOWHILE,DOUNTIL,DOFOR.
 
 
 + variables binaires
 
     DCL        VAR(&CPT) TYPE(*INT)
 
     il existe aussi le format *UINT (binaire non signé)
 
     la longueur est de 2 octets ou 4 octets
 
     la transformation de binaire en décimal ou caractère est possible
       avec CHGVAR
 

|    Changer de couleur
 
 Nouveautés syntaxique du CL en V5R40.
 ------------------------------------
 
 Nouveaux types de variables et nouvelles options de déclaration
 
  Après les types *INT et *UINT en V5R30, le type *PTR (pointeur) est
   maintenant admis.
 
  DCL VAR(&pointeur) TYPE(*PTR)
 
  ce qui permet ensuite, la déclaration d'une variable basée sur ce pointeur
 
  DCL VAR(&Data) TYPE(???) STG(*BASED) BASPTR(&pointeur)
 
  un pointeur peut être renseigné :
 
   1/ par copie d'un pointeur
 
   2/ par récupération de l'adresse d'une variable avec %ADDRESS() ou %ADDR
 
           CHGVAR &pointeur %ADDRESS(&autreData)

3/ en incrémentation, décrémentation avec la fonction %OFFSET() ou %OFS           CHGVAR %OFFSET(&pointeur) VALUE(%OFFSET(&pointeur) + 1)  

|    Changer de couleur
 
   
  Enfin une variable peut pointer directement sur une autre (comme une DS)
   évitant ainsi les %SST() dans le code.
 
  DCL VAR(&Data) TYPE(*CHAR) LEN(256)
  DCL VAR(&portion) TYPE(*CHAR) LEN(10) +
       STG(*DEFINED) DEFVAR(&Data 11)
 
       &portion recouvrant les Octets 11 à 20 de &Data
 

    




©AF400