Nouveaux types de variables (V2R11)

BoTTom |    Changer de couleur
   Les nouveaux types de variables de la base de donnée OS/400
 
1/ valeur nulle admise  (dans l'enregistrement 1 bit par zone, 1 = ALWNULL)
 
   - SQL : sans préciser not null
 
   - SDD = ALWNULL
 
   - traitement SQL: mot-clé NULL
 
                RPG: CRTRPGPGM ALWNULL(*YES)
 
                     si une zone a la valeur indéfinie le compilateur
                      la remplace par une valeur par défaut.
 
                     on ne peut pas donner la valeur indéfinie en sortie
 
                     CRTRPGPGM ALWNULL(*NO)
 
                     si une zone a la valeur indéfinie ==> erreur E/S
 
                autres langages: non supporté !!!


|    Changer de couleur
   Les nouveaux types de variables de la base de donnée OS/400
 
2/ longueur variable  (chaque zone est précédée de 2 octets binaires
                                                   indiquant la longueur)
   - SQL : VARCHAR(X) ALLOCATE(y)
 
   - SDD = lg=lg maxi (ici X)  VARLEN(y)
 
   - traitement SQL: pas de remarque
 
                RPG: CRTRPGPGM CVTOPT(*VARCHAR)
 
                     le compilateur génère une zone alpha (lg-maxi + 2)
                      ==> prévoir une DS pour le traitement.
                      ==> renseigner la longueur en sortie.
 
                CBL: CRTCBLPGM CVTOPT(*VARCHAR)
                     le compilateur génère une zone de groupe
                     01 ADRESSE
                        49 ADRESSE-LENGTH PIC S9(4) comp-4.
                        49 ADRESSE-DATA   PIC X(xxx).
                     ==> mêmes remarques que RPG en sortie


|    Changer de couleur
   Les nouveaux types de variables de la base de donnée OS/400
 
3/ date et heure
 
   - SQL : DATE, TIME, TIMESTAMP (CURRENT DATE, CURRENT TIME, ... valides)
 
   - SDD = type de donnée L -> date  mots-clés DATFMT() et DATSEP()
                          T -> heure mots-clés TIMFMT() et TIMSEP()
                          Z -> horodatage (pas de mot-clé)
   - traitement
                SQL: calculs autorisés
 
                RPG: CRTRPGPGM CVTOPT(*DATETIME)
 
                      le compilateur génère une zone alpha.
 
                      doit contenir uen valeur correcte en sortie,
                      pas de traitement particuliers possibles avant V3R10.
 
                CBL: CRTCBLPGM CVTOPT(*DATETIME)
 
                      idem RPG.


|    Changer de couleur
 
    Tous ces nouveaux types ne sont reconnus par SDD
     que pour les fichiers physiques (par pour les DSPF, hélas !)
 
    Il faut donc prévoir des zones alphas, lg fonction du type.
 
    DFU reconnait ces nouveautés.
 
    OPNQRYF aussi (y compris fonctions intégrées pour les dates)
 
 1/en comparaison avec une variable de même type   'DATCHG > DATCRT'
                  avec une constante (charactère)  'DATCHG > "01/01/94" '
 
                  attention, respecter le format et les séparateurs.
 
 2/en calcul
 
   avec des fonctions intégrées de durée
        %DURYEAR( ) %DURMONTH( ) %DURDAY( )
        %DURHOUR( ) %DURMINUTE( ) %DURSEC    %DURMICSEC( )
 
 


|    Changer de couleur
   avec une durée numérique
        date = décimale 8,0 sous forme yyyymmdd (nombre d'années-mois-jours)
          (le résultat d'une opération date-date est sous ce format)
        heure= décimale 6,0 sous forme hhmmss   (nombre d'heures-minutes-s)
          (le résultat d'une opération heure-heure est sous ce format)
        horodatage= décimale (20,6) sous forme yyyymmddhhmmssccccc
          (le résultat d'une opération timestamp-timestamp est sous ce
                                                               format)
 3/ avec des opérations + et - .
 
    + : Ajout d'une durée (incrémentation)
 
        DATE + 215 (date + 2 mois et 15 jours)
 
        DATE + %DURMONTH(2) + %DURDAY(15)  (idem)
 
        si l'on ajoute une durée en mois (%DURMONTH) le jour reste inchangé
         sauf s'il est plus grand que le dernier jour du mois auquel cas il
         est remplacé par le dernier jour du mois.
 
        %DATE('30/01/1994') + %DURMONTH(1) devient 28/02/94
 


|    Changer de couleur
        Modifier une partie de date affecte les éléments dépendants
 
         Ajouter un nombre de jours peut modifier le mois et l'année
 
         Ajouter un nombre de mois peut modifier l'année
 
 
 
    - : différence entre ....
 
        DATE1 - DATE2 (résultat sous forme de durée)
 
        %DATE('15/3/2000') - %DATE('31/12/1999') = 215 (2 mois et 15 jours)
 
      : retrait d'une durée (décrémentation)
 
        DATE - 215 (date - 2 mois et 15 jours)
 
         mêmes remarques que pour l'incrémentation
 
 
 


|    Changer de couleur
    Pour une variable de type horodatage
 
     la modification de l'heure(+ ou -)
       peut entrainer la modification de la date.
     la modification des microsecondes
       peut entrainer une modification de l'heure.
 
 
 OPNQRYF/Fonctions associées:
 
 %CURDATE, %CURTIME, %CURTIMESTP  sans argument, donnent date/heure en cours
 
   QRYLST('DATCRT = %CURDATE')
 
 %DATE, %TIME, %TIMESTP renvoient date/heure de l'argument
 
         l'argument peut être une variable horodatage pour %DATE, %TIME
                              une constante caractère (attention au format)
                              une variable caractère
 
   QRYSLT('%DATE(DAT8) = %CURDATE) ou %DATE(VHORO) = "12/12/94"   ....
 


|    Changer de couleur
 %DAY, %MONTH, %YEAR, %HOUR, %MIN, %SECOND, %MICSEC
                         renvoient une PARTIE de l'argument (Binaire 4)
 
           Même remarque pour l'argument PLUS LA NOTION DE DUREE.
 
    QRYSLT('%MONTH(DATE1) = 12)  ou %MONTH(DATE1 - DATE2) > 1
 
 %CHAR(date/heure format)
                        renvoie date ou heure sous format caractère
 
   QRYLST('%CHAR(DATE1 "EUR") = "28/02/94")
 
 %DAYS( )               renvoie une date sous format numérique (Binaire 4)
 
 %MIN et %MAX acceptent les variables de type DATE, HEURE, HORODATAGE
 
 A noter :
 
 la fonction %NULL est admise en comparaison avec une variable: VAR1 = %NULL
 la fonction %USER retourne le profil en cours sous forme lg variable 18 c.
 le paramètre MAPFLD admet tous les nouveaux types de variables
 


|    Changer de couleur
 
    exemple de fichier utilisant ces nouveautés.
 
      * fichier PFV2R11
     A          R FORMAT                    TEXT('FORMAT PF V2R11')
     A            NULLOK        20          ALWNULL
     A            VARLEN       128          VARLEN(50)
     A            VDATE           L         DATFMT(*DMY) DATSEP('/')
     A            VTIME           T         TIMFMT(*HMS) TIMSEP(':')
     A            VHORO           Z
 
 
 
 
 
 
 
 
 
 
 
 


|    Changer de couleur
 GESTION DE DONNEES D'UN FICHIER                Mode . . . . :   SAISIE         
 Format . . . . :   FORMAT                      Fichier  . . :   PFV2R11    
 
  ########  ######### 
 NULLOK:                       
 VARLEN:  
                                                           
 VDATE:   01/01/40 
 VTIME:   00:00:00 
 VHORO:   0001-01-01-00.00.00.000000 
 
 
 
 
 
 
 
 
 
 F3=Exit                 F5=Réafficher            F6=Sélection format           
 F9=Insertion            F10=Saisie               F11=Modification              
 Des zones acceptant les valeurs indéfinies ont été trouvées.                 # 


|    Changer de couleur
                           Entrée d'instructions SQL        
 
 Saisissez l'instruction SQL, puis appuyez sur Entrée.                          
 ===> INSERT INTO AF4TOOL/PFV2R11                                               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                           Fin  
 F14=Supprimer ligne       F15=Scinder ligne         F16=Choisir bibliothèques 
 F17=Choisir fichiers      F18=Choisir zones         F24=Autres touches         
                                                                              # 


|    Changer de couleur
                      Définition d'une instruction INSERT           
 
 Indiquez vos choix, puis appuyez sur ENTREE. 
 
   INTO fichier  . . . . . . . . . .   PFV2R11           Nom, F4 pour liste 
     Bibliothèque  . . . . . . . . .     AF4TOOL         Nom, F4 pour liste 
 
   Choix de zones pour insertion 
     INTO  . . . . . . . . . . . . .   O                 O=Oui, N=Non 
 
   Méthode d'insertion . . . . . . .   1                 1=VALUES en entrée 
                                                         2=Sous-sélection 
 
 
 
 
 
 
 
 
 F3=Exit   F4=Invite   F5=Réafficher   F12=Annuler   F21=Instruction 
 


|    Changer de couleur
                      Définition d'une instruction INSERT           
 
 Entrez les numéros de séquence (1-999) correspondant à vos choix, puis ENTREE. 
 
                                                        Valeurs 
 Séq  Zone          Type              Chiffres    Long  indéfinies 
  10  NULLOK        CHARACTER                       20  NULL                  
  20  VARLEN        VARCHAR                        128  NOT NULL WITH DEFAULT 
  30  VDATE         DATE                                NOT NULL WITH DEFAULT 
  40  VTIME         TIME                                NOT NULL WITH DEFAULT 
  50  VHORO         TIMESTAMP                           NOT NULL WITH DEFAULT 
 
 
 
 
 
 
 
 
                                                                            Fin 
 F3=Exit   F5=Réafficher   F12=Annuler   F21=Afficher instruction 
 


|    Changer de couleur
                      Définition d'une instruction INSERT           
 
 Indiquez les valeurs à insérer, puis appuyez sur ENTREE. 
 
 
 Zone          Valeur 
 NULLOK        'renseignée par SQL'                                  
 VARLEN        'renseignée par SQL'                                  
 VDATE         '31/12/93'                                            
 VTIME         '11:59:59'                                            
 VHORO         current timestamp                                     
 
 
 
 
 
 
 
 
                                                                            Fin 
 F3=Exit       F5=Réafficher   F6=Insérer ligne   F10=Copier ligne   F11=Type 
 F12=Annuler   F14=Supprimer ligne   F15=Scinder ligne   F24=Autres touches 


|    Changer de couleur
                           Entrée d'instructions SQL        
 
 Saisissez l'instruction SQL, puis appuyez sur Entrée.                          
    > INSERT INTO AF4TOOL/PFV2R11(NULLOK, VARLEN, VDATE, VTIME, VHORO)          
      VALUES ('renseigné par SQL', 'renseigné par SQL', '31/12/93',             
      '11:59:59', current timestamp)                                            
      1 lignes ont été insérées dans la table PFV2R11 de la base de donnée      
 ===> INSERT INTO AF4TOOL/PFV2R11(NULLOK, VARLEN, VDATE, VTIME, VHORO)          
      VALUES (null, 'renseignée par SQL,variable précédente non renseignée      
      ', '31/12/93', '11:59:59', current timestamp)                             
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                           Fin  
 F14=Supprimer ligne       F15=Scinder ligne         F16=Choisir bibliothèques 
 F17=Choisir fichiers      F18=Choisir zones         F24=Autres touches         
                                                                              # 


|    Changer de couleur
                           Entrée d'instructions SQL        
 
 Saisissez l'instruction SQL, puis appuyez sur Entrée.                          
    > INSERT INTO AF4TOOL/PFV2R11(NULLOK, VARLEN, VDATE, VTIME, VHORO)          
      VALUES ('renseigné par SQL', 'renseigné par SQL', '31/12/93',             
      '11:59:59', current timestamp)                                            
      1 lignes ont été insérées dans la table PFV2R11 de la base de donnée      
    > INSERT INTO AF4TOOL/PFV2R11(NULLOK, VARLEN, VDATE, VTIME, VHORO)          
      VALUES (null, 'renseignée par SQL,variable précédente non renseignée      
      ', '31/12/93', '11:59:59', current timestamp)                             
      1 lignes ont été insérées dans la table PFV2R11 de la base de donnée      
 ===> select * from af4tool/pfv2r11                                             
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                           Fin  
 F14=Supprimer ligne       F15=Scinder ligne         F16=Choisir bibliothèques 
 F17=Choisir fichiers      F18=Choisir zones         F24=Autres touches         
                                                                              # 


|    Changer de couleur
                                                      Affichage des données
 
 Première ligne à afficher . .        
 ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....
 NULLOK                VARLEN
 renseignée            20 caractères saisis
 -                     la variable ALWNULL n'a pas été  renseignée,les zones DAT
 renseignée par SQL    renseignée par SQL
 -                     renseignée par SQL,variable précédente non renseignée
 ********  Fin de données  ********
 
 
 
 
 
 
 
 
 
 
 
 


|    Changer de couleur
                           Membre de fichier physique                           
 Fichier  . . . . :   PFV2R11             Bibliothèque . . :   AF4TOOL    
 Membre . . . . . :   PFV2R11             Enregistrement . :   1          
 Contrôle . . . . .                       Colonne  . . . . :   1     
 Recherche  . . . .                                            
 *...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....
 renseignée          20 caractères saisis
                     Ĝla variable ALWNULL n'a pas été  renseignée,les zones DAT
 renseignée par SQL  renseignée par SQL
                     renseignée par SQL,variable précédente non renseignée
                         ****** FIN DES DONNEES ******
 
 
 
 
 
 
 
 
 
 
                                                                            ....





©AF400