[Maxc]<Alto>If.run - overview More complete documentation on <AltoDocs>If.press Martin Newell and Beau Sheil. December 1978. Copyright Xerox Corporation 1979 --- Updated January 2, 1979 5:34 PM by MN String searching added - the s switch Updated December 4, 1979, by Peter Deutsch File date comparisons, nested IFs added Updated July 9, 1982, by Dan Swinehart Creation date comparison made explicit via /c switch --- If implements conditional execution of groups of commands to the Alto Executive. SYNTAX If <condition> [then <commands>] [else <commands>] where [] denotes an optional clause, and <condition> is one of: filename (yields true if file exists) filename/l=N (yields true if length of file = N) filename/l<N (yields true if length of file < N) filename/l>N (yields true if length of file > N) filename/s"string" (yields true if file contains string) and N is a decimal constant filename/r=otherfilename/r (yields true if read dates are equal) (similarly for filename/r<otherfilename/r, etc.) (similarly with either or both /r changed to /w -- write date) (similarly with either or both /r changed to /c -- creation date) <commands> is any string of Alto executive commands separated by ';'. Note necessity to escape semicolon past the Executive command line reader. Ifs can be nested by enclosing <commands> in braces ("{" and "}"): the braces will be removed before the <commands> are passed to the Executive. SEMANTICS In the case that <condition> yields true the <commands> in the then clause (if present) are passed to the Executive for execution, otherwise the <commands> in the else clause (if present) are passed. "*" in the /s switch string matches zero or more file characters. Must escape past the Executive. EXAMPLE I: The mesa compiler creates an .errlog file only if there are errors. To enter bravo if there were errors, or the mesa system if not: Compiler prog.mesa If prog.errlog then bravo/m prog else mesa prog This is a modification of the m quit macro in bravo for mesa. EXAMPLE II: BCPL always creates a transcript file. However, the equivalent effect can be achieved by: bcpl/f prog.bcpl If prog.bt/s"ERROR" then bravo/b prog else bldr prog