Exemple travaux de groupe

BoTTom |
             PGM
             DCLF GRPJOBD
             DCL &GRPJOB    *CHAR 10
             DCL &GRPJOBCNT *DEC (3 0)
             DCL &GRPJOBL   *CHAR 1056
             DCL &CTLCDE    *DEC (3 0)
             DCL &OPTCHAR   *CHAR 2
             DCL &CNT       *DEC (3 0)
             DCL &PT        *DEC (4 0)
 
  /*                                                              */
  /*  EXTRACTION DES ATTRIBUTS DE GROUPE                          */
  /*                                                              */
 RTV:        RTVGRPA    GRPJOB(&GRPJOB) GRPJOBL(&GRPJOBL) +
                          GRPJOBCNT(&GRPJOBCNT)
  /*                                                              */
  /*  SI JOB N'EST GRPJOB => INITIALISATION EN TRAVAIL DE GROUPE  */
  /*                                                              */
              IF (&GRPJOBCNT = 0) DO
               CHGGRPA    GRPJOB(JOB01) TEXT('Travail principal')
               GOTO RTV
              ENDDO
 
 
           /* MISE EN EVIDENCE DU JOB EN COURS */
           /* INDICATEUR DSPATR(RI) EN FACE N° OPTION */
              CHGVAR &IN01 '0'
              CHGVAR &IN02 '0'
              CHGVAR &IN03 '0'
              CHGVAR &IN04 '0'
              IF (&GRPJOB = 'JOB04') CHGVAR &IN04 '1'
              ELSE IF (&GRPJOB = 'JOB03') CHGVAR &IN03 '1'
                   ELSE IF (&GRPJOB = 'JOB02') CHGVAR &IN02 '1'
                        ELSE CHGVAR &IN01 '1'
 
           /* MISE EN EVIDENCE DES JOBS ACTIFS */
           /* INDICATION ">"  EN FACE N° OPTION */
              CHGVAR &JOB01 ' '
              CHGVAR &JOB02 ' '
              CHGVAR &JOB03 ' '
              CHGVAR &JOB04 ' '
              CHGVAR &CNT 0
 BOUCLE:      CHGVAR &CNT (&CNT + 1)
              IF (&CNT *GT &GRPJOBCNT) GOTO IMAGE


|
              CHGVAR &PT ((&CNT * 66) - 65)
              IF (%SST(&GRPJOBL &PT 5) = 'JOB01') CHGVAR &JOB01 '>'
              IF (%SST(&GRPJOBL &PT 5) = 'JOB02') CHGVAR &JOB02 '>'
              IF (%SST(&GRPJOBL &PT 5) = 'JOB03') CHGVAR &JOB03 '>'
              IF (%SST(&GRPJOBL &PT 5) = 'JOB04') CHGVAR &JOB04 '>'
              GOTO BOUCLE
 
 IMAGE:       SNDRCVF
 
  /*                                                              */
  /*  TRAITEMENT DES TOUCHES DE COMMANDE                          */
  /*                                                              */
              IF &IN22 RETURN  /* F12 = RETOUR */
 
              IF &IN23 DO      /* F3 = FIN DU TRAVAIL DE GROUPE */
                 IF (&GRPJOBCNT *GT 1) ENDGRPJOB
                 ELSE DO
                   CHGGRPA *NONE
                   RETURN
                 ENDDO
              ENDDO
 
              IF &IN21 DO      /* F21 = LIGNE DE CDE */
                 CALL QUSCMDLN
                 GOTO IMAGE
              ENDDO
 
              IF &IN32 DO      /* F22 = SELECTION    */
                 TFRGRPJOB *SELECT
                 GOTO RETOUR   /* TEST DES RAISONS DU RETOUR */
              ENDDO
  /*                                                              */
  /*  SI OPTION CHOISIE EST LE TRAVAIL EN COURS ==> RETURN        */
  /*                                                              */
             CHGVAR &OPTCHAR &OPT
             IF (&OPTCHAR = %SST(&GRPJOB 4 2)) RETURN
 
  /*                                                              */
  /*  TRAITEMENT DE L'OPTION CHOISIE                              */
  /*                                                              */
  /*  SI OPTION 1 TRANSFERT VERS JOB01                            */
  /*                                                              */
  /*              SI DEJA ACTIF INLGRPPGM IGNORé                  */
  /*                                                              */


|
  /*              SI INACTIF APPEL DE QCMD QUI RETROUVERA LE      */
  /*                 PGM OU MENU INITIAL                          */
  /*                                                              */
             IF         COND(&OPT = 1) THEN(TFRGRPJOB GRPJOB(JOB01) +
                          INLGRPPGM(QCMD) TEXT('Travail principal'))
  /*                                                              */
  /*  POUR LES AUTRES OPTIONS C'EST TOUJOURS LE MEME PGM          */
  /*   QUI EST APPELLE (GRPJOBCL2)                                */
  /*                                                              */
  /*       ASSOCIERA AU JOB CE PGM VIA ATTN                       */
  /*                                                              */
  /*                 PUIS EXECUTERA LA COMMANDE FONCTION DU       */
  /*                      NOM DU JOB                              */
             ELSE +
             IF         COND(&OPT = 2) THEN(TFRGRPJOB GRPJOB(JOB02) +
                          INLGRPPGM(GRPJOBCL2) TEXT('Menu support'))
             ELSE +
             IF         COND(&OPT = 3) THEN(TFRGRPJOB GRPJOB(JOB03) +
                          INLGRPPGM(GRPJOBCL2) TEXT('Assistant'))
             ELSE +
             IF         COND(&OPT = 4) THEN(TFRGRPJOB GRPJOB(JOB04) +
                          INLGRPPGM(GRPJOBCL2) TEXT('P D M'))
                           /* OPTION INVALIDE */
             ELSE GOTO IMAGE
 
  /*                                                              */
  /*  ANALYSE DES RAISONS DU RETOUR A CE JOB                      */
  /*                                                              */
  /*       0 = PAS DE TRAVAIL PRECEDENT                           */
  /*      10 = RETOUR PAR TFRGRPJOB                               */
  /*           ==> FIN DE CE PGM                                  */
  /*      20 ET > = FIN DU TRAVAIL DE GROUPE PRECEDENT            */
  /*            (FIN NORMALE OU ANORMALE OU ENDGRPJOB)            */
  /*           ==> REAFFICHAGE IMAGE POUR CHOIX DU JOB            */
  /*                                                              */
  RETOUR:     RTVGRPA    GRPJOB(&GRPJOB) CTLCDE(&CTLCDE)
              IF (&CTLCDE > 10) GOTO RTV
 
             ENDPGM




©AF400