validity checker de commande lstf4

BoTTom |
             PGM        PARM(&PARAM1 &PARAM &FMT)
 
             DCL        VAR(&PARAM1) TYPE(*CHAR) LEN(20)
             DCL        VAR(&PARAM) TYPE(*CHAR) LEN(104)
             DCL        VAR(&LIST) TYPE(*CHAR) LEN(32)
             DCL        VAR(&MBR) TYPE(*CHAR) LEN(10)
             DCL        VAR(&FMT) TYPE(*CHAR) LEN(10)
             DCL        VAR(&FICH) TYPE(*CHAR) LEN(10)
             DCL        VAR(&LIB) TYPE(*CHAR) LEN(10)
             DCL        VAR(&DEB) TYPE(*CHAR) LEN(10)
             DCL        VAR(&FIN) TYPE(*CHAR) LEN(10)
             DCL        VAR(&NBLC) TYPE(*CHAR) LEN(2)
             DCL        VAR(&NBLP) TYPE(*DEC) LEN(2 0)
             DCL        VAR(&POINT) TYPE(*DEC) LEN(1 0)
             DCL        VAR(&DEPC) TYPE(*CHAR) LEN(2)
             DCL        VAR(&DEPP) TYPE(*DEC) LEN(2 0)
             DCL        VAR(&COMPT) TYPE(*DEC) LEN(1 0) VALUE(1)
             DCL        VAR(&MSG) TYPE(*CHAR) LEN(100)
             DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(10)
             DCL        VAR(&NOSYS) TYPE(*CHAR) LEN(4)
 DEBUT:      CHGVAR     VAR(&FICH) VALUE(%SST(&PARAM1 1 10))
             CHGVAR     VAR(&LIB) VALUE(%SST(&PARAM1 11 10))
             IF         COND(&LIB *NE '*LIBL     ') THEN(DO)
 CONTROLE1:  CHKOBJ     OBJ(&LIB) OBJTYPE(*LIB)
             MONMSG     MSGID(CPF9801) EXEC(DO)
             CHGVAR     VAR(&MSGDTA) VALUE('bibliothèque ' *CAT &LIB +
                          *BCAT 'non trouvée')
             GOTO       CMDLBL(MESSAGE)
             ENDDO
             ENDDO
 CONTROLE2:  CHKOBJ     OBJ(&LIB/&FICH) OBJTYPE(*FILE)
             MONMSG     MSGID(CPF9801) EXEC(DO)
             CHGVAR     VAR(&MSGDTA) VALUE('Fichier ' *CAT &FICH +
                          *BCAT 'non trouvé')
             GOTO       CMDLBL(MESSAGE)
             ENDDO
             CHGVAR     VAR(&NBLC) VALUE(%SST(&PARAM 1 2))
             CHGVAR     VAR(&NBLP) VALUE(%BIN(&NBLC))
             IF         COND(&NBLP = 0) THEN(GOTO CMDLBL(FIN))
 BOUCLE:     CHGVAR     VAR(&POINT) VALUE((&COMPT * 2) + 1)
             CHGVAR     VAR(&DEPC) VALUE(%SST(&PARAM &POINT 2))
             CHGVAR     VAR(&DEPP) VALUE(%BIN(&DEPC))
             CHGVAR     VAR(&DEPP) VALUE(&DEPP + 1)
             CHGVAR     VAR(&LIST) VALUE(%SST(&PARAM &DEPP 32))


|
             CHGVAR     VAR(&MBR) VALUE(%SST(&LIST 3 10))
             CHGVAR     VAR(&DEB) VALUE(%SST(&LIST 13 10))
             CHGVAR     VAR(&FIN) VALUE(%SST(&LIST 23 10))
             IF         COND(&MBR *NE '*FIRST  ') THEN(DO)
 CONTROLE3:  CHKOBJ     OBJ(&LIB/&FICH) OBJTYPE(*FILE) MBR(&MBR)
             MONMSG     MSGID(CPF9815) EXEC(DO)
             CHGVAR     VAR(&MSGDTA) VALUE('Membre ' *CAT &MBR *BCAT +
                          'non trouvé')
             GOTO MESSAGE
             ENDDO
             ENDDO
 CONTROLE4:  IF         COND((&DEB *NE '*START    ') *AND (&FIN *NE +
                          '*END       ')) THEN(IF COND(&FIN *LT &DEB) +
                          THEN(GOTO CMDLBL(MESSAGE2)))
             CHGVAR     VAR(&COMPT) VALUE(&COMPT + 1)
             IF         COND(&COMPT *LE &NBLP) THEN(GOTO +
                          CMDLBL(BOUCLE))
             RETURN
 MESSAGE:    SNDPGMMSG  MSGID(CPD0006) MSGF(QCPFMSG) MSGDTA(&NOSYS +
                          *CAT &MSGDTA) MSGTYPE(*DIAG)
             GOTO       CMDLBL(ARRET)
 MESSAGE2:   SNDPGMMSG  MSGID(CPD0006) MSGF(QCPFMSG) MSGDTA(&NOSYS +
                          *CAT 'N° Début plus grand que N° fin') +
                          MSGTYPE(*DIAG)
 ARRET:      SNDPGMMSG  MSGID(CPF0002) MSGF(QCPFMSG) MSGTYPE(*ESCAPE)
             ENDPGM




©AF400