Get the current OS/2 version (w/o REXXUTIL)
[Autolink] Menu
/* sample routine to detect the current OS/2 Version without using */
/* REXXUTIL */
curVersion = GetOS2Version()
if curVersion = "" then
say "Cannot detect the current OS/2 version!"
else
say "The current OS/2 version is " || curVersion
exit 0
/* ------------------------------------------------------------------ */
/* function: Get the current OS/2 version */
/* */
/* call: GetOS2Version */
/* */
/* where: - */
/* */
/* returns: OS/2 Version as string (e.g. "V211") */
/* or an empty string in case of an error */
/* */
/* note: works with CMD.EXE and 4OS2.EXE */
/* */
GetOS2Version: PROCEDURE
thisRC = ""
/* install a local error handler */
SIGNAL ON ERROR Name GetOS2VersionEnd
"@ver | rxqueue "
/* read the lines from the QUEUE */
do while queued() <> 0
queueLine = lineIn( "QUEUE:" )
IF QueueLine <> "" THEN
DO
IF WORD( QueueLine,1 ) = "Version" THEN
OS2Ver = WORD( QueueLine,2 ) /* this is cmd running! */
ELSE
if word( queueLine,4 ) = "Version" THEN
OS2Ver = WORD( queueLine,6 ) /* this is 4OS2 running! */
END /* if ... then do */
end /* do while ... */
/* version string not found: invalid call */
if OS2Ver <> "" then
do
/* create the string to return */
parse VALUE os2ver WITH mainVer "." minVer
if minVer = "30" & mainVer = "2" then
thisRC = "V300"
else
thisRC = "V" || mainVer || minVer
end /* if OS2Ver <> "" then */
GetOS2VersionEnd:
do while queued() <> 0
dummyLine = lineIN( "QUEUE:" )
end /* do while */
RETURN thisRC
[Back: Call by value]
[Next: Get the invocation syntax]