IMPLEMENTATION MODULE CmdLineArgs; FROM VMSRTL IMPORT Lib$Get_Foreign; VAR argv : ARRAY [1..80] OF CHAR; i, nextarg : INTEGER; cmdlen : INTEGER; stopchar : CHAR; PROCEDURE Getarg( VAR arg : ARRAY OF CHAR (* out *) ) : BOOLEAN; (* Returns the next arg from the argv. If no more arg's, the procedure returns false. *) BEGIN IF nextarg = 0 THEN (* get the cmd line *) i := Lib$Get_Foreign( argv, "enter args: ", cmdlen ); IF i # 1 THEN RETURN FALSE END; nextarg := 1 (* point to first loc in argv *) END; IF nextarg >= cmdlen THEN arg[0] := 0C; (* no more args *) RETURN FALSE END; i := 0; stopchar := " "; WHILE ( i <= HIGH( arg ) ) AND ( nextarg <= cmdlen ) AND ( argv[ nextarg ] # stopchar ) DO arg[i] := argv[ nextarg ]; INC( i ); INC( nextarg ) END; arg[ i ] := 0C; (* move over to the next arg in argv *) IF nextarg < cmdlen THEN IF argv[ nextarg ] = " " THEN WHILE ( argv[ nextarg ] = " " ) AND ( nextarg <= cmdlen ) DO INC( nextarg ) END END END; RETURN TRUE END Getarg; (* Initialization code *) BEGIN nextarg := 0 END CmdLineArgs.