Démarrage des sous-système et QCTLSBSD

BoTTom |    Changer de couleur
 
 Le seul sous-système démarré à l'IPL est le sous-système de contrôle.
 
 Il est défini par la valeur système QCTLSBSD. 
 
 La modification de ce sous-système n'est prise en compte que lors de l'IPL
 
 Ce sous-système doit reconnaître IMPERATIVEMENT la console ,
                                  de préférence  la jobq QCTL.
 
 Il est donc conseillé de tester ce sous-système (STRSBS normal) avant de
  le déclarer sous-système de contrôle.
 
 Les sous-systèmes QCTL et QBASE (livrés avec l'AS/400) peuvent être définis
  sous-système de contrôle.
 
QBASE est un sous-système généraliste qui reconnait TOUTES les entrées
 possibles.
 
QCTL est un sous-système spécifiquement sous-système de contrôle.
 
 


|    Changer de couleur
 
Ces deux sous-systèmes ont un travail à démarrage automatique utilisant
 la JOBD QSTRUPJD.
 
Cette JOBD à comme profil QPGMR
             comme RQSDTA 'CALL QWDAJPGM'.
 
le pgm QWDAJPGM recherche la valeur système QSTRUPPGM 
 
       cette valeur système contient le nom du programme à appeler quand
        le sous-système de contrôle démarre (SI CELUI-CI UTILISE QWDAJPGM)
 
puis il transfère le contrôle à ce pgm (cde TFRCTL).
 
 QSTRUP (pgm par défaut) démarre les éditeurs(suivant QSTRPRTWTR)
                         démarre QINTER,QBATCH,QCMN si QCTLSBSD = QCTL.
 
vous pouvez extraire le source de ce pgm (RTVCLSRC)
 
 
Ce qui a été fait ici :
 


|    Changer de couleur
/********************************************************************/
/* 5761SS1 V6R1M0 080215 Sortie RTVCLSRC         08/07/08 17:52:24  */
/*                                                                  */
/* Nom du programme . . . . . . . . . . . . :   QSTRUP            PN*/
/* Nom de la bibliothèque . . . . . . . . . :   QSYS              PL*/
/* Fichier source initial . . . . . . . . . :   S000028739        SN*/
/* Nom de la bibliothèque . . . . . . . . . :   $BLDSS1           SL*/
/* Membre source initial  . . . . . . . . . :   S000028739        SM*/
/* Modification du fichier source                                   */
/*   date/heure . . . . . . . . . . . . . . :   30/09/07 16:27:39 SC*/
/* Option de modification . . . . . . . . . :   *NOPATCH          PO*/
/* Profil utilisateur . . . . . . . . . . . :   *USER             UP*/
/* Texte  . . :                                                   TX*/
/* Propriétaire . . . . . . . . . . . . . . :   QSYS              OW*/
/* Marquage modification utilisateur  . . . :   *NO               UM*/
/* Retrieve include source  . . . . . . . . :   *NO               RI*/
/********************************************************************/
     PGM
     DCL VAR(&STRWTRS) TYPE(*CHAR) LEN(1)
     DCL VAR(&CTLSBSD) TYPE(*CHAR) LEN(20)
     DCL VAR(&CPYR) TYPE(*CHAR) LEN(90) VALUE('5761-SS1 (C) COPYRIGHT-
 IBM CORP 1980, 2007. LICENSED MATERIAL - PROGRAM PROPERTY OF IBM')


|    Changer de couleur
     QSYS/STRSBS SBSD(QSERVER)
     MONMSG MSGID(CPF0000)
     QSYS/STRSBS SBSD(QUSRWRK)
     MONMSG MSGID(CPF0000)
     QSYS/RLSJOBQ JOBQ(QGPL/QS36MRT)
     MONMSG MSGID(CPF0000)
     QSYS/RLSJOBQ JOBQ(QGPL/QS36EVOKE)
     MONMSG MSGID(CPF0000)
     QSYS/STRCLNUP
     MONMSG MSGID(CPF0000)
     QSYS/RTVSYSVAL SYSVAL(QCTLSBSD) RTNVAR(&CTLSBSD)
     IF COND((&CTLSBSD *NE 'QCTL      QSYS      ') *AND (&CTLSBSD *NE-
              'QCTL      QGPL      ')) THEN(GOTO CMDLBL(DONE))
     QSYS/STRSBS SBSD(QINTER) 
     MONMSG MSGID(CPF0000)
     QSYS/STRSBS SBSD(QBATCH) 
     MONMSG MSGID(CPF0000)
     QSYS/STRSBS SBSD(QCMN)
     MONMSG MSGID(CPF0000)
DONE:
     QSYS/STRSBS SBSD(QSPL) 
     MONMSG MSGID(CPF0000)


|    Changer de couleur
     QSYS/RTVSYSVAL SYSVAL(QSTRPRTWTR) RTNVAR(&STRWTRS)
     IF COND(&STRWTRS = '0') THEN(GOTO CMDLBL(NOWTRS))
     CALL PGM(QSYS/QWCSWTRS)
     MONMSG MSGID(CPF0000)
NOWTRS:
     RETURN
     CHGVAR VAR(&CPYR) VALUE(&CPYR)
     ENDPGM
 
Si vous définissez un sous-système de contrôle "maison" il faut donc prévoir
 
 un travail à démarrage automatique pour démarrer les autres sous-système
 ou définir le même que QCTL et QBASE,
 ou appeler QSTRUP (modifié ou non)
 
 sous peine de devoir passer les commandes STRSBS à la console à chaque IPL
 
Vous pouvez savoir si le dernier ARRET était NORMAL ou ANORMAL via la
 valeur système QABNORMSW    '0' = dernier arrêt normal
                             '1' = dernier arrêt anormal.
 
et donc effectuer des traitements en conséquence.





©AF400