|
Here's a CL method.
/* OS Version
/**/
/* QSZRTVPR: (V2R3M0)
/**/
PGM PARM(&VERSION)
DCL VAR(&VERSION) TYPE(*CHAR) LEN(6)
DCL VAR(&RCV) TYPE(*CHAR) LEN(256)
DCL VAR(&RCVLEN) TYPE(*CHAR) LEN(4) /* BIN4! */
DCL VAR(&FMTNAM) TYPE(*CHAR) LEN(8)
DCL VAR(&ERROR) TYPE(*CHAR) LEN(256)
DCL VAR(&ERRORLEN) TYPE(*DEC) LEN(10 0)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(200)
DCL VAR(&INF) TYPE(*CHAR) LEN(27)
/* -----------------------------------------------------------------------/*
*/
DCL VAR(&ERRORSW ) TYPE(*LGL )
MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO +
CMDLBL(GLOBALERR))
/* -----------------------------------------------------------------------/*
*/
/* api exist? (data areas can be changed, use api if possible!)
/**/
CHKOBJ OBJ(QSYS/QSZRTVPR) OBJTYPE(*PGM) AUT(*USE)
MONMSG MSGID(CPF0000) EXEC(DO)
RTVDTAARA DTAARA(QSYS/Q5738SS1 (1 6)) RTNVAR(&VERSION)
MONMSG MSGID(CPF0000) EXEC(DO)
RTVDTAARA DTAARA(QSS1MRI (1 6)) RTNVAR(&VERSION)
MONMSG MSGID(CPF0000) EXEC(CHGVAR VAR(&VERSION) +
VALUE(V0R0M0))
ENDDO
SNDPGMMSG MSG(&VERSION) MSGTYPE(*COMP)
RETURN
ENDDO
/* ------------------------------------------------------------------------
/**/
CHGVAR VAR(%BIN(&RCVLEN 1 4)) VALUE(256)
CHGVAR VAR(%BIN(&ERROR 1 4)) VALUE(256)
CHGVAR VAR(%BIN(&ERROR 5 4)) VALUE(0)
CHGVAR VAR(&FMTNAM) VALUE('PRDR0100')
CHGVAR VAR(%SST(&INF 1 7)) VALUE('*OPSYS ')
CHGVAR VAR(%SST(&INF 8 6)) VALUE('*CUR ')
CHGVAR VAR(%SST(&INF 14 4)) VALUE('0000')
CHGVAR VAR(%SST(&INF 18 10)) VALUE('*CODE ')
CALL PGM(QSZRTVPR) PARM(&RCV &RCVLEN &FMTNAM &INF +
&ERROR)
/* error conditions?
/**/
CHGVAR VAR(&ERRORLEN) VALUE(%BIN(&ERROR 5 4))
IF COND(&ERRORLEN *GT 9) THEN(DO)
CHGVAR VAR(&MSGID) VALUE(%SST(&ERROR 9 7))
CHGVAR VAR(&ERRORLEN) VALUE(&ERRORLEN - 15)
IF COND(&ERRORLEN *LE 200) THEN(DO)
CHGVAR VAR(&MSGDTA) VALUE(%SST(&ERROR 17 &ERRORLEN))
ENDDO
ELSE CMD(DO)
CHGVAR VAR(&MSGDTA) VALUE(%SST(&ERROR 17 200))
ENDDO
SNDPGMMSG MSGID(&MSGID) MSGF(QCPFMSG) MSGDTA(&MSGDTA) +
MSGTYPE(*ESCAPE)
ENDDO
CHGVAR VAR(&VERSION) VALUE(%SST(&RCV 20 6))
SNDPGMMSG MSG(&VERSION) MSGTYPE(*COMP)
RETURN
/* ------------------------------------------------------------------- /**/
GLOBALERR:
IF COND(&ERRORSW) THEN(SNDPGMMSG MSGID(CPF9999) +
MSGF(QCPFMSG) MSGTYPE(*ESCAPE)) /**/
CHGVAR VAR(&ERRORSW) VALUE('1')
ENDPGM
----- Original Message -----
From: "Bruce Jin" <brucej@MRC-PRODUCTIVITY.COM>
To: <RPG400-L@midrange.com>
Sent: Thursday, May 03, 2001 1:46 PM
Subject: Can I retrieve OS version in RPG or CL?
> How can I decide my AS400 is V4R4 or V5R1 or whatever in RPG or CL?
>
> Thanks.
> Bruce
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.