Advertisement
SYS : tester la version du système

Il existe plusieurs solutions. En voici une utilisant une API prévue pour ça.

Voici un exemple de code

/* variables à déclarer */

DCL     &RELEASE    *CHAR  6
DCL     &RCVR       *CHAR  128
DCL     &RCVRLEN    *CHAR  4      VALUE(X'00000080')
DCL     &FORMAT     *CHAR  8      VALUE('PRDR0100')
DCL     &PRDINFO    *CHAR  27     VALUE('*OPSYS *CUR  0000*CODE     ')
DCL     &ERRCODE    *CHAR  4      VALUE(X'00000000')
/* Appel de l'api */
CALL QSYS/QSZRTVPR PARM(&RCVR &RCVRLEN &FORMAT &PRDINFO &ERRCODE)


CHGVAR &RELEASE (%SST(&RCVR 20 6))

/* traitement en fonction de la version */

SELECT
  WHEN COND(&RELEASE = 'V5R3M0' ) THEN(DO)

//


  ENDDO
 
  WHEN COND(&RELEASE = 'V5R4M0' ) THEN(DO)

//


  ENDDO


  WHEN COND(&RELEASE = 'V6R1M0' ) THEN(DO)

//

  ENDDO


  OTHERWISE CMD(goto error  )
 ENDSELECT

 

ENDDO
goto fin
error :
 
SNDPGMMSG MSG('release' |> &RELEASE |> 'non supportée')

fin:


ENDPGM
Voici un exemple de code

 

/* variables à déclarer */

DCL     &RELEASE    *CHAR  6
DCL     &RCVR       *CHAR  128
DCL     &RCVRLEN    *CHAR  4      VALUE(X'00000080')
DCL     &FORMAT     *CHAR  8      VALUE('PRDR0100')
DCL     &PRDINFO    *CHAR  27     VALUE('*OPSYS *CUR  0000*CODE     ')
DCL     &ERRCODE    *CHAR  4      VALUE(X'00000000')
/* Appel de l'api */
CALL QSYS/QSZRTVPR PARM(&RCVR &RCVRLEN &FORMAT &PRDINFO &ERRCODE)


CHGVAR &RELEASE (%SST(&RCVR 20 6))

/* traitement en fonction de la version */

SELECT
  WHEN COND(&RELEASE = 'V5R3M0' ) THEN(DO)

//


  ENDDO
 
  WHEN COND(&RELEASE = 'V5R4M0' ) THEN(DO)

//


  ENDDO


  WHEN COND(&RELEASE = 'V6R1M0' ) THEN(DO)

//

  ENDDO


  OTHERWISE CMD(goto error  )
 ENDSELECT

 

ENDDO
goto fin
error :
 
SNDPGMMSG MSG('release' |> &RELEASE |> 'non supportée')

fin:


ENDPGM