Présentation de l'AS400

Accès rapide: bases, pools, Sous systèmes, Travaux, Langage de Controle, Commandes, Sauvegardes, Communications, Client Access, Sécurité, exploitation.

Sommaire

L'AS400 est un système méconnu et peu intéressant: il nécessite une formation réduite, est très sécurisé, rarement en panne, et pourvu de nombreuses aides. Passer par des commandes fiables et bien guidées pour réaliser des opérations de configurations sensibles génère chez certains spécialistes système un sentiment de frustration indéniable.

Ce document présente le système d'exploitation de l'AS400 et son langage de commande.

Partie 2 - Système d'exploitation

Organisation du Système

Principes de base

Espace Adressable Unique

L'espace disque est géré par la machine et non accessible directement à l'utilisateur. La pagination en tre mémoire centrale et disques est automatique.

Des disques peuvent être réservés à des usages spécifiques, pour des sauvegardes par exemple.

Les coûts relativement bas favorisent l'utilisation de disques miroirs, à définir lors de l'installation de la machine. Priorité est mise sur la sécurité, et les équipes système n'ont pas accès à ses niveaux de configuration, réservés à la maintenance IBM.

Principes de Partage des Ressources

Le partage des ressources relève de notions avancées, mais les comprendre permet de mieux maitriser son environnement de travail et d'éviter de grosses erreurs en gestion de surcharge des systèmes.

Termes fondamentaux:

Notion de Pool

Le moteur de la machine est un Processeur. Un processeur traite les travaux un à un, en alternance.

La mémoire centrale du système est découpée en pools partagés, qui sont utilisés par les sous systèmes. La liste des pools existants s'obtient par la commande WRKSHRPOL. Si la machine ajuste automatiquement les performances (valeurs système QPFRADJ) les valeurs s'ajustent en fonction des consommations instantannées, efficacement si les variations ne sont pas trop brutales.

ATTENTION: la taille des pools est une donnée extrêmement sensible, et ne doit pas être modifiée à la légère.

Ecran de gestion des pools
                   Gestion des Pools Partagés
                                                           Système:  AS400X
Taille de la mémoire
  principale (ko) . . . :    16384
Indiquez vos modifications (si elles sont admises), puis appuyez sur Entrée 


                Taille  Activ  Taille       ID
Pool           définie   Maxi  attribuée   pool
*MACHINE        _4841    +++         4841    1
*BASE            2420    __4         2420    2
*INTERACT       _9047    __4         9047    4
*SPOOL          ___76    __3           76    3
*SHRPOOL1       ____0    __0
*SHRPOOL2       ____0    __0
*SHRPOOL3       ____0    __0
                                                            A suivre...
Commande
===> ____________________________________________________________________
F3=Exit   F4=Invite   F5=Réafficher   F9=Rappel   F11=Texte   F12=Annuler

Les numéros de polls de cet écran sont repris sur les écrans de gestion des sous systèmes.

Pour qu'un travail s'exécute, il doit être chargé en mémoire centrale. Les opérations de chargement / déchargement entre mémoire centrale, mémoire à accès rapide et disques sont de la Pagination, qui doit être aussi réduite que possible. Pour un fonctionnement normal, certains seuils de pagination explicités par les outils d'analyse des performances ne doivent pas être dépassés.

Les taches se succèdent dans le processeur suivant

Quand un travail entre en activité, il est susceptible d'occuper le processeur pendant une durée liée à sa priorité, et de rester en mémoire pendant toute la durée de sa tranche de temps (timslice).
S'il réalise une opération d'entrée sortie (attente d'écran ou lecture sur base de donnée), il passe en temps d'attente longue car cette opération est longue en terme d'activité du processeur. Une autre tâche devient alors active. Un programme qui boucle sur quelques instructions consomme énormément de ressources car ne faisant aucune entrée sortie il reste actif durant toute sa tranche de temps (souvent 2 secondes pour un intéractif, ce qui est énorme) chaque fois que son tour vient.

La commande WRKSYSSTS renseigne sur l'activité des pools

WRKSYSSTS: gestion de l'état du système
                   Gestion de l'état du système
                                                               Système:  AS400X

% UC utilisée  . . . . . :       99,9   Mémoire secondaire:
Temps écoulé . . . . . . :   00:00:01     ASP Système  . . . . . :      3955 M
Travaux connus du syst . :        259     % ASP système utilisé  :     94,9982
% d'adresses utilisées:                   Totale . . . . . . . . :      3955 M
  Permanentes  . . . . . :      9,215     Non protégée utilisée  :      1035 M
  Temporaires  . . . . . :      0,212     Non protégée maximale  :      1040 M

Indiquez vos modifications (si admises), puis appuyez sur Entrée 

Pool  Taille  Taille  Act  --Pagin BD--  Pagin non-BD
syst   pool   réserv  max  Taux   Pages  Taux  Pages
  1   __4852    2369  +++    0,0    0,0    0,5   5,3
  2     3931       0  __3    0,0  153,0    0,0   0,0
  3   ____70       0  __3    0,0    0,0    0,0   0,0
  4   __7351     594  __4   15,5   15,5   18,5 121,3
                                                                      Fin
Commande
===> ____________________________________________________________________
F3=Exit   F4=Invite   F5=Réafficher   F9=Rappel   F10=Relancer
F11=Données de transition   F12=Annuler     F24=Autres touches

Données les plus significatives:

Cet écran montre que la machine manque d'espace disque et est en suractivité temporaire. Le taux de pagination non BD du pool 1 est normal et la surchage du pool 4 (*INTERACT) n'est pas gênante si elle ne se prolonge pas. L'UC réagit correctement.

Notion de Sous Système

Sous systèmes et Pools

Un sous système utilise des ressources de pools. La commande WRKSBS résume l'activité des sous systèmes actifs et les pools concernés.

WRKSBS: Gestion des sous systèmes
                           Gestion des sous-systèmes                            
                                                            Système:   AS400X  
 Indiquez vos options, puis appuyez sur ENTREE.                                 
   4=Arrêter sous-système   5=Afficher description de sous-système              
   8=Gérer travaux du sous-système                                              
                                                                                
                      Mémoire    --------Pools de sous-système---------         
 Opt  S-système     totale (Mo)   1   2   3   4   5   6   7   8   9  10    
  _   QBASE                0,00   2   3                                         
  _   QPGMR                0,00   2   2                                         
  _   QSERVER              0,00   2                                             
  _   QSNADS               0,00   2                                             
  _   QSOC                 0,00   2                                             
  _   QSPL                 0,00   2   4                                         
  _   QSVCDRCTR            0,00   2                                             
  _   QSYSWRK              0,00   2                                             
  _   QUSRWRK              0,00   2                                             
                                                                            Fin
Paramètres ou commande                                                         
 ===> _____________________________________________________________________________
 F3=Exit   F5=Réafficher   F11=Données système   F12=Annuler                    
 F14=Gérer état du système                                                      

Le choix du pool pour un travail est fait au moment de son lancement.

ATTENTION: dans l'affichage du détail d'un sous système, la numérotation est le spécifique : pour QBASE, le pool 2 sera le pool système 3, soit QBASE.

La configuration des pools est une mécanique délicate et n'intervient que dans des cas limités. Lors de l'installation de la machine, deux cas de figure sont possibles

Le mode de démarrage des sous systèmes est contrôlé par la valeur système QCTLSBSD, modifiable par un gestionnaire système confirmé. De base, l'officier de sécurité ne peut se connecter que sur la console (DSP01). Cette contrainte peut être levée. Examiner la documentation en ligne et en particulier les valeurs système de type *SEC.

Sous systèmes et Travaux

La commande WRKACTJOB permet d'obtenir une liste des travaux actifs. Le classement par défaut est par sous système, mais peut être précisé par F4 au lancement de la commande ou par F16 après avoir positionné le curseur sur la colonne à trier. Cette approche permet d'identifier immédiatement un travail qui monopolise les ressources, mais la commande elle même est assez consommatrice, d'autant plus qu'elle s'exécute avec une priorité très élevée.

WRKACTJOB: gestion des travaux actifs
                           Gestion des travaux actifs                  AS400X      
                                                             
 % UC:    0,3     Intervalle:   00:01:32     Travaux actifs:   160              
                                                                                
 Indiquez vos options, puis appuyez sur ENTREE.                                 
   2=Modifier           3=Suspendre   4=Arrêter   5=Gérer   6=Libérer           
   7=Afficher message   8=Gérer fichiers spoule   13=Déconnecter ...            
                                                                                
 Opt  S-syst/trav   Utilisat    Type  % UC  Fonction        Etat                
 __   QBASE         QSYS        SBS    0,0                  DEQW                
 __     DSP01       QSYSOPR     INT    0,1  CMD-WRKACTJOB   DSPW                
 __    +DSP09       HUBERT      INT    0,0                  DSPW                
 __     PC027       LARREYA     INT    0,0  CMD-WRKACTJOB   RUN                 
 __     QSYSSCD     QPGMR       BCH    0,0  PGM-QEZSCNEP    EVTW                
 __   QPGMR         QSYS        SBS    0,0                  DEQW                
 __   QSERVER       QSYS        SBS    0,0                  DEQW                
 __     QPWFSERVSD  QUSER       BCH    0,0                  SELW                
 __     QSERVER     QPGMR       ASJ    0,0                  EVTW
         
                                                                    A suivre... 
 Paramètres ou commande                                                         
 ===> __________________________________________________________________________
 F3=Exit   F5=Réafficher   F10=Relancer   F11=Données intervalle   F12=Annuler  
 F23=Autres options        F24=Autres touches                

Un sous système coordonne un ensemble de travaux et leur environnement. Le lien entre un travail est spécifié dans la description du sous système ou établi par des commandes spécifiques. Mécanique générale:

  • une commande est émise à destination d'un programme qui la prend en compte
  • tout travail est émis avec une donnée de routage qui détermine le programme qui le traitera et sa file d'attente. La plupart du temps, le travail est une commande, prise en charge par le programme QCMD qui l'analyse et l'exécute.
  • la file d'attente détermine le sous système d'exécution

    Organisation générale d'un sous système
                      Architecture d'un sous système (bases) 
    
            ADDJOBQE                ADDWSE                 ADDAJE
            _________             _________              ___________
           |         |           (         )            | Travail à |  
           |  JOBQ   |           (  Ecran  )            | démarrage |  
           |_________|           (_________)            | Auto (ASJ)|  
                |                     |                 |___________|
            ____|_____          ______|_______                | 
            |        |          |            |                |
            | Batch  |          | Intéractif |                |
            |________|          |____________|                |
                |                     |                       |
                |             ________|_________              |
                |             |                |              |
                |_____________|  Sous Système  |______________|
                              |________________|
                                      |
                                      |          
                              ________|_________             ________
                              |      WTR       |            /     / |
             __________       | Gestionnaire   |        ___/_____/___
             |        |_______| d'imprimante   |________|    PRT     |
             |  OUTQ  |       |________________|        | Imprimante |
             |________|                                 |____________|
                                  STRPRTWTR             
    

    Description de Sous systèmes

    La description d'un sous système formalise ses liens avec différents points d'entrée pour les travaux.

    Attributs opérationnels

    Spécifie la mire d'écran utilisé pour l'ouverture d'une session intéractive.

    Postes Ecran

    La connection physique d'un écran est généralement prise en compte par un mécanisme de configuration automatique, la configuration manuelle est déconseillée. Dans le cas d'écrans en émulation, il est préférable de spécifier explicitement le nom de l'unité lors de la configuration initiale (par exemple MAG25A ou PAI12B). Pour des raisons de sécurité, la configuration automatique peut être activée temporairement le temps de mettre en place de nouveaux écrans, puis désactivée.

    En général, tous les écrans sont reliés au sous système QINTER en spécifiant sous forme de liens par types tous les modèles susceptibles de se connecter (par exemple, type 3197). Des liens par nom d'unité permettent de relier des écrans spécifiques à un sous système particulier. Il est toujours possible de changer dynamiquement un travail -et donc un écran- de sous système, et certains progiciels le font, mais l'opération est inutilement délicate.

    Postes Files d'Attentes de Travaux

    Les postes file d'attente de travaux organisent les liens entre JOBQ et sous systèmes, et définit l'ordre d'enchainement et le nombre maximum de travaux actifs par priorité et en globalité. La notion de travaux actifs n'a pas ici la même signification que pour un pool. Les travaux en file d'attente et libérés sont dans un premier temps en attente d'exécution, à l'état de demande. Ils avancent dans la file d'attente et deviennent actifs en fonction des nombres maximum définis pour leur priorité et pour la JOBQ. A partir de ce moment seulement ils accèdent à un pool et commencent à se dérouler. Les nombres maximum doivent être spécifiés pour éviter que des travaux ne partent en exécution mais se retrouvent inéligibles.

                     Postes files d'attente de travaux
    
    Description de sous-système:  QBATCH       Etat:  ACTIF
    
      No  File                    Activ  -------Maximum par priorité-------
     seq  travaux      Biblio      maxi   1   2   3   4   5   6   7   8   9
       5  PAIEQ        QGPL           1   *   *   *   *   *   *   *   *   *
       6  ERPPROQ      MAXINFO        1   *   *   *   *   *   *   *   *   *
      10  QBATCH       QGPL           1   *   *   *   *   *   *   *   *   *
      11  QBATCH1      QGPL           1   *   *   *   *   *   *   *   *   *
      12  QBATCH2      QGPL           1   *   *   *   *   *   *   *   *   *
      13  QBATCH3      QGPL           1   *   *   *   *   *   *   *   *   *
      14  QBATCH4      QGPL           1   2   2   2   2   2   2   2   2   2
      20  QS36EVOKE    QGPL      *NOMAX   *   *   *   *   *   *   *   *   *
     110  DKT01        QGPL           1   *   *   *   *   *   *   *   *   *
     120  TAP01        QGPL           1   *   *   *   *   *   *   *   *   *
                                                                   A suivre...
    Appuyez sur ENTREE pour continuer
    F3=Exit    F12=Annuler  
    

    La plupart des JOBQ BATCH sont configurées pour exécuter les travaux un à un, séquentiellement. Des travaux parallélisables peuvent être lancés dans des JOBQ autorisant plusieurs travaux actifs simultanément, mais des mécanismes de synchronisation doivent alors être mis en place.

    Les JOBQ intéractives ou dédiées aux communications autorisent un nombre multiple de travaux à s'exécuter simultanément.

    Notion de Travail

    Caractéristiques communes à tous les travaux

    L'accès aux caractéristiques d'un travail est possible par

    Tout travail s'éxécute dans le cadre d'un environnement pouvant hériter ses caractéristiques d'un niveau supérieur ou les redéfinir Principales caractéristiques: Les informations disponibles sur un travail permettent de savoir très précisément qui l'a lancé, ce qu'il fait et où il en est. L'historique d'exécution spoulé en fin de travail fournit des informations précieuses en cas de problème. Les messages d'erreur sont (le plus souvent) détaillés et explicites.

    Les historiques système peuvent être nettoyés automatiquement, mais le suivi des historiques utilisateurs est manuel.

    Travaux Intéractifs

    Un travail commence au moment où il devient actif, et se termine après édition ou suppression de son dernier spoule.

    Le système a été conçu pour limiter les opérations de chargement et déchargement de programmes. Il est toujours possible (sortie par RETURN) qu'un programme appelé reste en mémoire après la fin de l'appelant, bloquant des ressources ou l'impression de certains spoules. La commande RCLRSC force la libération des ressources pour les programmes d'une profondeur d'appel supérieure à son niveau. Elle peut être incluse dans les programmes CL par sécurité après certaines phases critiques d'un traitement. Si elle est inopérante dans un environnement intéractif, la session de travail doit être abandonnée par SIGNOFF.

    Les cas où des ressources restent bloquées après la fin d'un travail sont très exceptionnelles. Dans le cas d'un problème lié à une connexion IP, certains programmes refusent de se terminer, mais fermer la connexion suffit pour terminer les travaux récalcitrants (go tcpadm, puis chercher dans les connexions actives). Quelques rares autres cas peuvent se révéler bloquants et perturber le fonctionnement de la machine, comme une défaillance d'unité mal gérée. Il m'est arrivé une fois de devoir redémarrer suite à un incident de ce type.

    Traitement des Spoules

    Les spoules (éditions) sont générés dans des files d'attente de sortie (OUTQ), et sont consultés par la commande WRKSPLF. Ils peuvent être créés avec un état Retenu (Held), ou immédiatement éditables.

    Une imprimante est un Writer (WTR), et peut être ou pas reliée à une outq. Par défaut, le système crée pour chaque imprimante une file d'attente en sortie qui lui est attachée. Il est commode de rattacher une outq à une imprimante de manière permanente, mais un rattachement temporaire reste possible.

    L'outq cible d'une édition obéit aux priorités système, sous système, utilisateur, travail, programme ou explicite. Ceci permet une grande souplesse de gestion

    une imprimante peut être démarrée -rattachée à une outq- par la commande STRPRTWTR selon différents modes

    Un spoule peut être modifié après création

    File d'Attente de Messages d'un Travail

    Les files d'attente de messages aboutissent à un utilisateur ou servent de mode de communication entre programmes. Quand un programme rencontre un cas d'erreur qu'il est incapable de traiter, il se termine et émet un message vers son appelant, lequel peut l'intercepter ou le faire suivre. En bout de route, les messages non interceptés aboutissent dans la file d'attente externe liée à l'écran demandeur ou celle de l'opérateur système.

    Les messages d'information peuvent arriver immédiatement et bloquer l'écran en attendant une action (mode *BREAK), ou comme un simple pictogramme en bas d'écran (mode *NOTIFY). Un sous fichier de messages reçoit les messages *INFO de la file d'attente de messages du programme qui l'affiche. Les messages qui s'affichent temporairement en bas d'écran lors d'un traitement sont des messages *STATUS envoyés vers la file d'attente *EXT, et cet affichage peut être neutralisé en fixant la valeur STSMSG du travail à *NONE* s'il pénalise trop les temps de réponse (écran déporté et faible débit).

    Gestion du système

    Programmation en langage de controle

    Le langage de contrôle permet d'automatiser et de contrôler le lancement de commandes avec utilisation de variable, gestion branchements et des erreurs. Le guide de saisie du source est celui utilisé pour la saisie de commandes en ligne, complété par la possibilité d'accepter des variables. Une fois compilé, un programme CLP se comporte comme tout autre programme.

    Un programme CL ne peut pour lui même déclarer et lire qu'un seul fichier, et de manière lourde et peu performante. Toute gestion même peu complexe du contenu d'un fichier doit être déléguée à d'autres programmes, en RPG de préférence.

    Commandes et caractères de gestion d'invite

    Les commandes intégrées dans un CL peuvent requérir des paramètres variables. Les caractères de gestion d'invite déclanchent l'affichage de la commande avec possibilité de saisie contrôlée de paramètres. Un autre usage des paramètres d'invite est dans les Programmes de Substitution d'Invite (POP), abordés un peu plus loin.

    ??
    Le paramètre est affiché et les saisies sont admises
    ?*
    Le paramètre est affiché mais les saisies ne sont pas admises
    ?/
    Le paramètre est affiché mais les saisies ne sont pas admises et la valeur par défaut est utilisée
    ?<
    Le paramètre est affiché et les saisies sont admises, la valeur par défaut est utilisée si rien n'est saisi
    ?-
    Le paramètre n'est pas affiché, et n'apparait pas si l'utilisateur appuie sur F9
    ?&
    Le paramètre apparait l'utilisateur appuie sur F9, les saisies sont admises, la valeur par défaut est utilisée si rien n'est saisi
    ?%
    Le paramètre apparait l'utilisateur appuie sur F9, les saisies sont admises, la valeur par défaut est utilisée
    -?
    L'invite sélectif est supprimé.

    Utilisation de variables

    Les lignes saisies sont des commandes, dont l'invite est accessible par F4. Un CL obéit à une structure type. Les variables fichier sont automatiquement déclarées, les autres déclarations doivent précéder toute autres instructions.

    Structure d'un programme CLP
        PGM  (&var1 &var2 &var3)        /* Paramètres du programme */
        DCLF UNFICHIER                  /* Déclaration d'un fichier (déconseillé) */
        DCL  &var1 *char 10             /* Déclaration des variables */
    
        MONMSG xxxnnnn                  /* Capture générale de messages */
    
           ... commandes ...
    FIN:                                /* Etiquette */
        ENDPGM     
    

    Un ensemble de commandes et opérateurs de manipulation de variables est disponible. Les ordres de structuration sont sommaires.

    Manipulation de variables et débranchements dans un CLP
    CHGVAR                   Affectation de valeur à une variable
    %SST(&a pos long)        Extraction de sous chaine
    !! ou *CAT               Concaténation simple (variables alpha seulement)
    !< ou *TCAT              Concaténation avec suppression des blancs de fin
    >! ou *BCAT              Concaténation laissant un blanc de séparation
    ''                       Délimiteur. Doit être doublé pour apparaitre comme caractère
    +-/*                     Opérateurs arithmétiques
    = < > !                  Opérateurs de comparaison (symboles)
    *EQ *LT *GT *NE *LE *GE  Opérateurs de comparaison (mode texte)
    DO ... ENDDO             Bloc d'instructions
    IF ... ELSE ...          Conditionnement
    xxxxx:                   Etiquette
    GOTO xxxxx               Branchement 
    Boucles et pavés         A gérer manuellement
    

    Programme de substitution d'invite

    La substitution d'invite permet de prérenseigner les paramètres d'une commande lors de son affichage, comme le font la plupart des commandes CHG. La principale difficulté de mise en oeuvre consiste à trouver de la documentation sur le sujet.

    Un programme de substitution d'invite est spécifié dans le paramètre PMTOVRPGM de la commande CTRCMD. Sa forme simple prend 2 paramètres

    La chaine de substitution décrit la liste des paramètres à prérenseigner.

    Un programme de substitution d'invite simple
    /* ------------------------------------------------------------- */             
    /* XTIMEINV: Programme de substitution d'invite sans KEYPARM     */             
    /* Convient à toutes les commandes avec paramètre TIME           */             
    /* Avec keyparm,  devient pgm (&cmdn &parm1 ... &parmn &cmd)     */             
    /* ------------------------------------------------------------- */             
              pgm  (&cmdn &cmd)                                                    
              dcl  &cmdn  *char 10                 /* Nom de la commande */                        
              dcl  &len   *char  2  value(X'0020') /* 32 binaire, longueur passée */
              dcl  &cmd   *CHAR 34                 /* Chaine de substitution (32+2) */                    
                                                                                    
              dcl  &time *char  6                                                   
                                                                                    
                 RTVSYSVAL  SYSVAL(QTIME) RTNVAR(&TIME)                             
                                                                                    
                 chgvar  &cmd (&len !! '??TIME('!! &time !< ')' )                   
              endpgm                                                                
    
    Une commande avec substitution d'invite
    /* --------------------------------------------- */             
    /* XT: Commande avec substitution d'invite       */             
    /* Compiler avec PMTOVRPGM(XTIMEINV)             */                         
    /* --------------------------------------------- */             
          CMD        PROMPT('Test gestion invite')                 
          PARM       KWD(TIME) TYPE(*TIME) PROMPT('Heure')         
          PARM       KWD(AUTRE) TYPE(*CHAR) LEN(10) PROMPT('Autre')
    

    Les paramètres clé d'une commande, définis avec KEYPARM *YES, sont affichés avant les autres paramètres. Si la commande ne comprend pas de paramètre clé, la substitution d'invite est appelée avant le premier affichage. Si des paramètres clé sont définis, un premier affichage est effectué puis ils sont passés au programme de substitution qui peut les utiliser.

    Gestion des messages

    Lors du déroulement d'un traitement peuvent se produire des erreurs prévues ou imprévues. La commande MONMSG intercepte une erreur ou une tranche d'erreurs en fonction de leur code, à l'exception de rares erreurs non monitorables.

    Les erreurs sont codifiées sur 3 lettres et 4 chiffres. Les erreurs système sont codifiées CPFnnnn

    L'effet du MONMSG dépend de sa position L'interception peut déclancher un branchement vers une routine d'erreur ou tout autre étiquette, ou ne rien faire.

    Quelques commandes utiles

    Il existe quelques centaines de commandes et une approche rationnelle est de savoir les retrouver. Quelques commandes sont d'un usage très courant.

    CHKOBJ
    Vérification de l'existence d'un objet ou d'un membre
    DSPFD
    Affichage de la description d'un fichier
    DSPFFD
    Affichage de la description des champs d'un fichier. Le format est peu commode et il est préférable d'utiliser une commande personalisée comme la commande FD
    DSPDBR
    Relations base de données d'un fichier physique
    DSPPGMREF
    Objets référencés par un programme
    CHGDTAARA
    Modification de la valeur d'une zone de données
    ALCOBJ
    Allocation d'un objet
    WRKOBJ
    Localisation d'un objet
    RTVMBRD
    Récupération dans des variables d'informations sur un membre de fichier

    Création de Commandes

    Il est possible de créer des commandes utilisateur présentant les mêmes caractéristiques que les commandes système. Une commande est simplement un masque de saisie évolué, capable de réaliser un certains nombre de contrôles. Elle ne réalise aucun traitement et envoie les paramètres saisis au programme qui lui est associé.

    Un source de commande est de type CMD et composé de commandes acessibles par GO CMDDEF

    Commandes de création de commandes
    CMD     Définition du titre de la commande
    PARM    Paramètre de commande, ou référence à une liste de paramètres
    QUAL    Définition de paramètre qualifié (type bib/fichier)
    ELEM    Elément d'une liste de paramètres
    DEP     Relation de dépendance entre paramètres
    PMTCTL  Controle d'affichage conditionnel de paramètres
    

    L'option de compilation 14 lance la commande CRTCMD. Il est nécessaire de spécifier le programme associé par F4 ou de le fixer après compilation par CHGCMD. Une aide UIM peut être associée à la commande lors de sa création.

    La conception d'une commande utilisateur basique ne présente aucune difficulté si on s'inspire d'un modèle existant, comme FD

    Gestion des sauvegardes

    La gestion des sauvegardes impliquent des choix stratégiques allant jusqu'à la configuration de la machine.

    Disques miroirs et journalisation

    Le mirroring fonctionne par dupplication des données sur plusieurs disques, telles quelles ou en utilisant des mécanismes de parité. La baisse du cout des disques favorise les solutions de dupplication simple, qui autorisent des remplacements de disque à chaud, sans arrêt du système ni reconstruction de données complexe. Ce choix est à faire lors de l'installation du système.

    La journalisation concerne la base de données et aide à en assurer l'intégrité. Elle est indispensable si on souhaite utiliser les mécanismes de controle de validation COMMIT / ROLLBACK.

    Sauvegardes sur disques

    La sauvegarde sur disque s'effectue vers des fichiers de sauvegarde. Des disques ou partitions peuvent être réservés aux sauvegardes, afin d'être traités séparément en cas de nécessité de reformatage de disques lié à un crash.

    Les sauvegardes impliquent un compactage et un reformatage des données et sont des opérations longues. La copie d'un fichier de sauvegarde sur bande est une opération très rapide.

    Sauvegardes sur supports externes

    Dans le siècle passé, vers les années 90, les supports de sauvegarde acceptaient de faibles volumes et l'utilisation de fichiers de sauvegarde tampons permettaient à l'opérateur de faire une copie sur plusieurs bandes de quelques centaine de MO le matin à son arrivée, alors que la sauvegarde avait tourné la nuit pendant plusieurs heures. Une cartouche de sauvegarde courante de 10 G contient les données de la plupart des entreprises, et un automate de chargement peut être utilisé pour les autres, permettant une écriture directe par une sauvegarde automatique lancée la nuit avec une durée courante de une à trois heures.

    Approches et contraintes

    L'examen de quelques commandes et menus offre un panorama général sur les diverses possibilités.

    Commandes de sauvegarde
    GO SETUP    Gestion des taches planifiées
    GO BACKUP   Gestion des taches de sauvegarde
    WRKJOBSCDE  Gestion des travaux planifiés
    SAVLIB      Sauvegarde d'une bibliothèque
    SAVOBJ      Sauvegarde d'objets
    SAVCHGOBJ   Sauvegarde d'objets modifiés (incrémentale)
    

    Les sauvegardes de bibliothèques sur une seule machine ne posent pas de problème. Quand des machines différentes sont utilisées des précautions doivent être prises

    Sauvegardes système

    La sauvegarde système relève de concepts avancés. Une solution correcte consiste à faire assez régulièrement une sauvegarde système complète (SAVSYS). La démarche est assez conitraignante, le système doit être mis en accès restreint.

    En cas de changement de machine, un système ne doit JAMAIS être restauré sur un autre système (RSTSYS): une machine réagit mal quand on force la description de ses unités physiques essentielles (contôleurs de disques, unités bandes, cartes de communication) à des valeurs qui ne correspondent pas à la réalité. La commande RTVCFGSTS permet de récupérer le détail de la configuration (voir plus loin) dans un source avec disques, écrans, cartes de communication et autres. Il est assez facile de faire le tri pour savoir ce qui doit être repris et ce qui doit être adapté, mais les erreurs peuvent couter cher et procéder par étapes est prudent. Pour de nombreux éléments, la reconfiguration automatique permet de faire le ménage dans les structures périmées.

    Après sauvegarde système, les restaurations peuvent être sélectives, avec RSTUSRPRF par example pour rétablir les profils utilisateurs. Les utilisateurs doivent être rétablis avant les autres objets pour que les droits ne soient pas perdus.

    Configuration et communications

    La commande WRKHDWPRD donne accès à la liste des matériels installés. Le contrôle de la configurations est accessible par WRKCFGSTS Distinguer les unités réelles de la description (suffixe "D") qui leur sert de modèle.

    Différents niveaux sont à considérer

    Les écrans passifs et imprimantes connectés par twinax se font rares et souvent limités à l'exploitation. Pour rajouter une unité,

    Les modems et écrans déportés doivent être configurés manuellement. Il convient de s'inspirer d'un modèle existant et de connaitre les quelques paramètres à adapter dans le maquis de l'existant. Penser à croiser les valeurs des identificateurs d'échange

    Les AS400 s'inscrivent dans des réseaux IP. La configuration est assez simple, il suffit de savoir ce qu'est une adresse IP, un masque réseau, et de connaitre l'adresse d'un routeur. Ce qui suit suffit à un administrateur réseau pour configurer l'AS400 (après création de la ligne).

    Dans certaines configurations de réseau, en particulier avec des adresses de routeurs virtuels, des coupures de connexions peuvent intervenir.

    Etablir la connexion directe d'un AS400 à internet requiert un sérieux audit de sécurité.

    Communications avec Clients et autres systèmes

    Client Access fournit une émulation Telnet améliorée, la possibilité de transférer des fichiers et de connecter des imprimantes micro en tant qu'imprimantes AS400.

    La configuration par défaut ne spécifie pas de description pour la session et utilise unité virtuelle. Les unités virtuelles sont difficiles à localiser en cas de problème et cette approche est déconseillée.

    Pour créer une nouvelle session Client Access:

    Pour utiliser une imprimante PC comme imprimante AS400

    L'accès à d'autres systèmes IP est possible via TELNET et FTP.

    L'AS400 est un serveur Web efficace et les programme Java peuvent facilement accéder à ses données par JDBC. Ce mode de connexion relève de règles de fonctionnement relèvent d'une logique Java et Unix. Le mode d'accès aux données conserve quelques spécificités. La base de données doit être nommée au préalable, le nom de la base est également utilisé par ODBC - voir DSPRDBDIRE et WRKRDBDIRE.

    L'AS400 peut également être utilisé comme simple serveur de données via Client Access, en mettant à disposition des répertoires vers l'extérieur. Les assistants de configuration et d'accès Client Access (Operations Navigator) offrent des outils puissants pour gérer les machines connectées, les utilisateurs, les objets et leurs droits, les serveurs, le contenu des répertoires et de nombreux aspects du système.

    Sécurité

    Tout accès à la machine nécessite un mot de passe, avec déconnection de l'utilisateur et de l'unité physique concernée après un nombre d'échecs paramétrables (3 en standard). Un mot de passe peut être remplacé par un officier de sécurité (droits *SECOFR) mais aucun moyen n'existe pour le retrouver s'il est perdu. La perte du mot de passe de l'officier de sécurité nécessite une intervention de la maintenance IBM selon un protocole spécifique.

    Certains procédés de connexion sont connus, mais difficiles à mettre en oeuvre : le mot de passe utilisé en dépannage de système pour un IPL bande est connu de tous les techniciens, mais donne des droits sur des procédures de très bas niveaux (reformattage des disques) et l'approche difficilement exploitable pour un hacker.

    Les objets ne sont pas accessibles directement et rien n'est prévu dans les outils disponibles pour examiner le contenu des disques. Aucun moyen n'existe pour accéder aux objets non autorisés, encore moins pour savoir où sont stockés les utilisateurs et mots de passe.

    Différents niveaux d'accès à un objet

    Tout objet a un propriétaire et des droits associés. Les droits sur l'objet lui même sont distincts des droits sur ses données s'il s'agit d'un fichier.

    La commade de gestion des droits sur un objet est EDTOBJAUT

    Mots de passe et Groupes d'utilisateurs

    Un utilisateur appartient a un (seul) groupe d'utilisateur et possède les droits de ce groupe. Dans de nombreux cas, l'appartenance à un groupe suffit pour spécifier les droits d'un utilisateur nouveau.

    Une liste d'autorisations associe des droits et des utilisateurs. Pour ajouter un utilisateur à un ensemble d'objets protégés par liste d'autorisation, il suffit d'ajouter l'utilisateur à la liste et évite l'inscription de l'utilisateur sur chaque objet.

    Sécurités et communications

    La connexion via des postes clients implique souvent l'enregistrement de mots de passe dans des fichiers de configuration, parfois en clair, parfois sous la protection du système d'exploitation, laquelle n'est pas toujours totale. Certains mots de passe fournissent des droits étendus mais leur usage est limité pour bloquer toute ouverture de session interactive sur l'AS400 et réserver son usage à des programmes serveurs

    Pour bloquer l'ouverture d'une session sur l'AS400 pour un utilisateur

    Si l'utilisateur n'est pas en possibilités restreintes, un message lui annonce la fin prématurée de sa session sur saisie d'un nom d'utilisateur et de mot de passe, mais il lui suffit de spécifier explicitement un programme initial pour accéder à la machine avec tous ses droits.

    Un autre problème peut venir de certains émulateurs configurés pour connexion avec l'utilisateur qui ouvre la session. Le système d'exploitation enregistre alors le mot de passe. Une approche peut permettre de se connecter sur la machine si l'utilisateur est sorti de l'AS400 mais l'écran est resté connecté:

    Démarrage et arrêt du Système, Ménage

    Pour un démarrage manuel, le panneau comporte une clé, un interrupteur à bascule pour choisir le type d'IPL (Initial Program Load) et un bouton de validation. Le choix de l'IPL permet une prise en compte ou non des dernières PTFs chargées (Programs Temporary Fixes) et non installées définitivement.

    Des démarrages à distance sont possibles, sur simple appel téléphonique

    Une procédure courante consiste à programmer un démarrage ou un cycle de week end avec ménage, arrêt le samedi et redémarrage dans la nuit du dimanche au lundi. Il est préférable d'arrêter régulièrement une machine ou de ne jamais l'arrêter. Le redémarrage d'une machine qui n'avait pas été arrêtée pendant plusieurs mois peut se révéler problématique.

    Les procédures de sauvegardes automatiques et de ménage présentent un ensemble d'options à examiner avec attention

    Les menus ASSIST, MANAGESYS, SETUP et CLEANUP, inventorient les options courantes de maintenance.

    Analyse des Incidents

    Les incidents les plus courants s'analysent par l'intermédiaire de l'historique du travail via WRKACTJOB si le travail est encore actif ou consultation des spoules de l'utilisateur qui l'a lancé s'il est terminé.

    Pour des incidents plus complexes, il peut être nécessaire de se référer à l'historique système par DSPLOG

    Une assistance téléphonique par Point Services IBM peut fournir des solutions précieuses, à la mesure de son cout. Les modes de fonctionnement de l'assistance hard et soft sont parfois un peu déroutants, mais une solution est en général obtenue.

    Travaux de Groupe

    Dans une liste de travaux obtenue par WRKACTJOB, les travaux de groupe s'identifient par un + en face du nom. Un travail de groupe est constitué de plusieurs tâches pouvant être interrompues pour passer de l'une à l'autre.

    Chaque tâche est indépendante et peut tout faire, y compris *SIGNOFF qui coupe brutalement l'ensemble des travaux. La possibilité d'ouvrir plusieurs sessions en émulation limite notablement l'intérêt des travaux de groupe

    Analyse d'un Travail en cours

    L'analyse d'un travail en cours doit prendre en compte toutes ses composantes. La commande WRKACTJOB donne accès à toute l'information nécessaire.

    Quand un programme tombe en erreur, un message est affiché. Il est en général utile de consulter le détail du message et l'historique, pour trouver les messages précédents, souvent significatifs, par F10.

    Deux débogueurs existent pour les programmes RPG: un débogueur en ligne de commande et un débogueur intéractif. Les commandes en ligne sont

    Un développeur peut anticiper l'analyse d'anomalies par un SETATNPGM QCMD ou en définissant QCMD comme programme d'attention dans son profil utilisateur. Ceci donne la possibilité d'obtenir à tout moment l'écran de saisie de commande par la touche Echap, par exemple en cas d'arrêt programme, et de démarrer le débogage en ligne alors que le programme est déjà lancé pour analyser précisément son état.

     

    Patrick Larreya, 2001.

    Sommaire