
|
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
|