CPP --> SQLEXEC

BoTTom |
             PGM        PARM(&ORDRE &LEN)
             DCL &ORDRE *CHAR 2000
             DCL &LEN *DEC (15 5)
             DCL &ORD *CHAR 2000
             DCL &CODE *DEC (5 0)
             DCL &CODC *CHAR  5
             DCL &ERRLEN *DEC (5 0)
             DCL &ERRTXT *CHAR 70
             DCL &MSGTXT *CHAR 70
             IF         COND((&LEN *LE 0) *OR (&LEN *GT 2000)) THEN(DO)
             SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Longueur +
                          indiquée invalide') MSGTYPE(*DIAG)
             SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Ordre +
                          SQL non éxécuté suite à erreur') +
                          MSGTYPE(*ESCAPE)
             RETURN
              ENDDO
             CHGVAR     VAR(&ORD) VALUE(%SST(&ORDRE 1 &LEN))
             CALL       PGM(SQLEXCBL) PARM(&ORD &CODE &ERRLEN +
                          &ERRTXT)
             IF (&ORD *EQ 'WARNING') DO
             SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('UPDATE +
                          ou DELETE sans clause WHERE') MSGTYPE(*DIAG)
             SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Ordre +
                          SQL non éxécuté suite à erreur') +
                          MSGTYPE(*ESCAPE)
             RETURN
              ENDDO
             IF (&ORD *EQ 'SELECT') DO
             SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Ordre +
                          SELECT invalide avec SQLEXEC') MSGTYPE(*DIAG)
             SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Ordre +
                          SQL non éxécuté suite à erreur') +
                          MSGTYPE(*ESCAPE)
             RETURN
              ENDDO
             IF (&CODE *GE 0)  DO
               IF (&CODE *GT 0) DO
               CHGVAR     VAR(&CODC) VALUE(&CODE)
               CHGVAR     VAR(&MSGTXT) VALUE(%SST(&ERRTXT 1 &ERRLEN))
               SNDPGMMSG  MSGID('SQL' *CAT %SST(&CODC 2 4)) +
                          MSGF(QSQLMSG) MSGDTA(&MSGTXT) MSGTYPE(*DIAG)
              ENDDO
             SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Ordre +


|
                          SQL Exécuté') MSGTYPE(*COMP)
              ENDDO
              ELSE DO
               CHGVAR     VAR(&CODC) VALUE(&CODE)
               CHGVAR     VAR(&MSGTXT) VALUE(%SST(&ERRTXT 1 &ERRLEN))
               SNDPGMMSG  MSGID('SQL' *CAT %SST(&CODC 2 4)) +
                          MSGF(QSQLMSG) MSGDTA(&MSGTXT) MSGTYPE(*DIAG)
             SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Ordre +
                          SQL non éxécuté suite à erreur-CODE SQL :' +
                          *BCAT &CODC) MSGTYPE(*ESCAPE)
              ENDDO
              ENDPGM




©AF400