Using REXX System and Miscellaneous Commands (99065)






This article was previously published under Q99065

SUMMARY

This article lists what are typically considered to be "operating system" oriented commands (date, time, etc.) and miscellaneous capabilities of the REXX programming language, and gives examples.

MORE INFORMATION

DISCLAIMER: This article is provided for users capable of developing programs with the information presented; it is not an extensive treatment of the language but rather a quick reference to aid someone in writing simple routines. Microsoft cannot support programming efforts beyond reproducing and submitting problems with the language implementation itself. If you need further assistance, consult REXX references such as "The REXX Language, A Practical Approach to Programming" by M. F. Cowlishaw, Prentice-Hall, Englewood Cliffs, 1985.

Examples are given at the bottom of the listing. Braces ({}) are used to indicate comments.
BEEP(frequency_in_hertz, duration_in_milliseconds)

CONDITION(option)

   { Returns the information requested by "option" for the current
   trap condition.  Options are: NAME, DESCRIPTION, INSTRUCTION
   (returns CALL or SIGNAL) and STATUS (returns ON, OFF or DELAY which
   means delay any new occurrence). CONDITION returns null ("") is no
   trap is active. }

DATE(option)

   { Returns various formats of days based on the option supplied.

     B - Days since a theoretical January 1, year 1.
     M - Alphabetical representation of the month (Ex: June)
     E - dd/mm/yy
     O - yy/mm/dd
     S - yyyymmdd (note four year digits and no slashes)
     U - mm/dd/yy
     W - Alphabetical representation of the day (for example, Monday)

     }

DIRECTORY(drive:directory)

   { Returns the drive and path of the current directory (no
   drive:directory supplied) or the new directory (drive:directory
   specified and exists.) }

DROP variable

   { "Undefines" the variable. }

ENDLOCAL()

   { Restores the directory and environment status to its pre-SETLOCAL
   condition. Returns 1 for success, zero otherwise. }

ERRORTEXT(number)

   { Returns the message text associated with number. }

FILESPEC(requested_information, file_specification)

   { Returns the drive, path, or file specification depending on
   whether requested_information is given as D, P, or N. }

INTERPRET(expression)

   { Dynamically assemble expression from its components and then
   process it. }

OPTIONS

   { This is a double-byte language feature, consult REXX programming
   books for details. }

SETLOCAL()

   { Saves the current drive and environment settings of a running
   REXX program and returns a 1 for success or a zero otherwise. }

SYMBOL('var')

   { Should return a result indicating if var is a variable (returns
   VAR), a literal (returns LIT) or invalid (returns BAD). Note that
   the name of the variable needs to be in quotes. }

TIME('C'|'E'|'H'|'L'|'M'|'R'|'S')

   { Returns the time in civil format (hh:mm:[a|p]m); elapsed
   (sssssss.uu, seconds and hundredths of seconds since the start of
   the clock); hours (since midnight); long (hh:mm:ss:uu); minutes
   (since midnight); reset (returns the same form as elapsed and also
   resets the elapsed timer) or seconds (since midnight). }

TRACE(A|C|E|F|I|L|N|O|R)

   { Each letter refers to a type of trace: A(ll), C(ommands),
   E(rror), F(ailure), I(ntermediate), L(abels), N(ormal), O(ff),
   R(esults). C, E and F provide tracing on commands passed to the
   operating system with E and F (= Normal) restricted to problems, L,
   A, R, and I provide increasing levels of detail (in the order
   given), O turns tracing off. A question mark preceding one of the
   preceding letters causes the program to process step- by-step
   waiting for an Enter before proceeding at the points indicated by
   the letter. No example has been given for this command, you are
   encouraged to experiment with it yourself. }

VALUE(var, value_to_set, flag)

   { Returns the value of var and, if specified, then replaces it with
   value_to_set. If flag is specified as OS2ENVIRONMENT then var
   refers to an OS/2 environment variable such as "path" allowing
   reading/setting of environment variables. }

XRANGE(start,end)

   { Returns a sequential list of the unique values between start and
   end. Example: XRANGE(2,7) would return the string "234567". }

Examples follow. Create a REXX program and run it to see the results.

SAY 'DATE(B) returns ' DATE(b)
SAY 'DATE(M) returns ' DATE(m)
SAY 'DATE(E) returns ' DATE(e)
SAY 'DATE(O) returns ' DATE(o)
SAY 'DATE(S) returns ' DATE(s)
SAY 'DATE(U) returns ' DATE(u)
SAY 'DATE(W) returns ' DATE(w)
say "FILESPEC('D','p:\path\file.ext') returns:"
say FILESPEC('D','p:\path\file.ext')
say "FILESPEC('N','p:\path\file.ext') returns:"
say FILESPEC('N','p:\path\file.ext')
say "FILESPEC('P','p:\path\file.ext') returns:"
say FILESPEC('P','p:\path\file.ext')
say "TIME('C') returns " TIME('c')
say "TIME('E') returns " TIME('e')
say "TIME('H') returns " TIME('h')
say "TIME('L') returns " TIME('l')
say "TIME('M') returns " TIME('m')
say "TIME('R') returns " TIME('r')
say "TIME('S') returns " TIME('s')
a = 'pau'
b = 'se'
say "INTERPRET(a||b) (a = 'PAU', b = 'SE') follows"
interpret(a||b)
say 'BEEP(1000,300) sounds like this ' BEEP(1000,300)
say "XRANGE('31'x,'41'x) returns " XRANGE('31'x,'41'x)
say 'DIRECTORY() returns ' DIRECTORY()
say 'ERRORTEXT(27) returns ' ERRORTEXT(27)
x = 5
say 'the value of x is ' x
DROP x
say 'After DROP x the value of x is ' x
pause
say "SYMBOL('a') returns " SYMBOL('a')
say "SYMBOL('xyz') returns " SYMBOL('xyz')
say "SYMBOL('/') returns " SYMBOL('/')
say "SETLOCAL, VALUE and ENDLOCAL example follows"
say "A '1' indicates SETLOCAL success " SETLOCAL()
say 'Current path is: 'VALUE('path','q:','OS2ENVIRONMENT')
say 'This path is now:'
path
say "A '1' indicates ENDLOCAL success " ENDLOCAL()
say 'The path is back to:'
path
EXIT
				

Modification Type: Major Last Reviewed: 7/30/2001
Keywords: KB99065