@DATABASE "ARexxGuide.guide"
@VER 1.0
@INDEX ARx_Index/MAIN
@NODE MAIN " ARexxGuide                            Copyright © 1993, Robin Evans"
@NEXT ARx_Elements.ag/MAIN 
@TOC COMPCONT 
   AN AMIGAGUIDE® TO ARexx                 Edition: 1.0
   by Robin Evans

   @{" Registration         " link REG }   @{" Comprehensive contents                         " link COMPCONT }
   @{" Introduction         " link ARx_Intro.ag/MAIN }   @{" Tutorials            " link TUTOR }

   Reference
   @{" Basic elements       " link ARx_Elements.ag/MAIN }   @{" Instructions         " link ARx_Instr.ag/MAIN}   @{" Functions            " link ARx_Func.ag/MAIN   }
    Guide to the powders     Syntax & explanation     Syntax & explanation
    & potions in the ARexx   of keywords and          of built-in & support
    chemistry set.           instructions             functions.
   @{" Operators            " link ARx_Operator.ag/MAIN }   @{" Commands             " link ARx_Cmd.ag/MAIN}
    Glue for arithmetic,     Utility programs.
    comparison, & logical
    expressions.

   @{" INDEX                                                                   " link ARx_Index/MAIN }

                  Copyright © 1993, Robin Evans.  All rights reserved.

@EndNode
@Node REG "ARexxGuide | Registration (1 of 2) | SEND MONEY NOW!"
@PREV MAIN 
This guide is shareware. Please use it and pass it on (in its original
archive) to your friends and acquaintances. If you learn something from
the guide or find it helpful in writing ARexx programs, then please take a
moment to fill out the registration card and send in the fee.

Shareware is similar to public broadcasting in this: You can watch or
listen to the stations without sending them any money, just as you can use
shareware application. It might not make any difference. Your favorite
programs might stay on the air whether you call in your pledge or not.
Someone else will still release a cool shareware offering. But if nobody
sends money, the station won't stay on the the air for long. If nobody
sends money, the pool of shareware will begin to dry up. And if you don't
send money, the station won't give much attention to your complaints or
suggestions about its programming.

Public broadcast stations have developed guilt-inducing pledge drives into
something of an art. I can't even approach that level of begging, so
please try to remember the last pledge drive you heard on an NPR or PBS
station and imagine that all of those folks were talking about this guide.
Imagine that and the send in your pledge now.

   @{" Register and send pledge now! " link REGINFO }

Please send comments or requests to any of the following on-line
addresses:
               R.EVANS6                on GEnie
               R.EVANS6@GENIE.GEIS.COM on Internet
               robin@halcyon.com       on internet

I will upload additions to the tutorial sections in the future and will
also send any revised editions of files included here to the same places
where this archive was originally posted. Watch for them.


@EndNode
@Node REGINFO "ARexxGuide | Registration (2 of 2) | THE PITCH"
@NEXT MAIN 
   The pitch
   ~~~~~~~~~
The basic registration fee for this guide is $15.00. For that you get the
complete reference you see before you now -- information you would pay $25
to $40 for if it were presented in traditional book form.

By registering you also encourage development of more AmigaGuide help
systems on the Amiga, both by the current author and by others who hear of
the success or failure of this effort.

   But wait... There's more.

For a not-limited time, those who send in a premium registration fee of
$21 will receive, by mail, a nicely-printed quick reference guide that
includes the syntax guides included here in the function reference and
in the instruction reference.

Sorry, folks, we don't have operators standing by to take your order, but
we do have -- yes, standing by -- representatives of the country's postal
service who will deliver your registration fee to the address below.

To make things easier, and to provide information helpful in making future
revisions to this guide, the button below will guide you through an
on-line registration form that can be printed immediately or saved to disk.

                  @{" Fill out registration form " system "rx ARx_IactExamples.rexx ARx_Reg.rexx" }

      Send registration fee (and optional form) to:
                  Robin Evans
                  1020 Seneca #405
                  Seattle WA 98101-2720

      And thank you, very much.

Next: ARexxGuide contents | Prev: Registration intro | Contents: main

@EndNode
@Node COMPCONT "ARexxGuide | CONTENTS"
Foreward:
   Preface
      @{" Acknowledgements                                            " link ARx_Intro.ag/ACKN     }
      @{" References                                                  " link ARx_Intro.ag/REF      }
      @{" About the author                                            " link ARx_Intro.ag/AUTHOR   }

   About this guide
      @{" Navigating hints                                            " link ARx_Intro.ag/NAVG     }

   Intro to ARexx
      @{" Hello World!                                                " link ARx_Intro.ag/HIWRLD   }
      @{" Why ARexx?                                                  " link ARx_Intro.ag/WHYREXX  }
      @{" Getting it started                                          " link ARx_Intro.ag/STARTUP  }
      @{" Writing programs                                            " link ARx_Intro.ag/WRITING  }
      @{" Running a script                                            " link ARx_Intro.ag/RUNAREXX }

   Tutorial
      @{" Uncrunch.rexx                                               " link ARx_PrgUcr.ag/UCREXPLAN }

Basic Elements:
   @{" Tokens                                                         " link ARx_Elements.ag/TOKEN }
      @{" Comment tokens                                              " link ARx_Elements.ag/COMMENT  }
      @{" String tokens                                               " link ARx_Elements.ag/STRING       }
         @{" Hex and binary strings                                   " link ARx_Elements.ag/HEXSTRING }
      @{" Symbol tokens                                               " link ARx_Elements.ag/SYMBOL }
         @{" Fixed symbols                                            " link ARx_Elements.ag/CONSTANT }
         @{" Variable symbols                                         " link ARx_Elements.ag/VARSYMBOL}
      @{" Operator tokens                                             " link ARx_Elements.ag/OPERATOR }
         @{" Concatenation  || <blank> <abuttal>                      " link ARx_Operator.ag/CONCATENATION }
         @{" Arithmetic     + - | / // %                              " link ARx_Operator.ag/ARITHMETIC }
         @{" Comparative    < > = == >= <=                            " link ARx_Operator.ag/COMPARISON }
         @{" Logical        & | && ~                                  " link ARx_Operator.ag/LOGICAL }
      @{" Reserved characters                                         " link ARx_Elements.ag/SPECCHAR     }
         @{" ,  Comma continuation character                          " link ARx_Elements.ag/COMMA }
         @{" ;  Clause end symbol                                     " link ARx_Elements.ag/SEMICOLON }
            @{" Using semicolons for in-line scripts                  " link ARx_Elements.ag/INLINE }
         @{" :  Label identifier                                      " link ARx_Elements.ag/LABELID }
         @{" () Grouping / Function argument list                     " link ARx_Elements.ag/PAREN }
   @{" Expressions                                                    " link ARx_Elements2.ag/EXPRESSION}
      @{" Numbers                                                     " link ARx_Elements2.ag/NUMBER   }
         @{" Numeric precision                                        " link ARx_Elements2.ag/PRECISION }
      @{" Strings                                                     " link ARx_Elements2.ag/STRINGEXPR}
         @{" Treating numbers at strings                              " link ARx_Elements2.ag/NUMASTEXT }
      @{" Variables                                                   " link ARx_Elements2.ag/VARIABLE }
         @{" Using variables                                          " link ARx_Elements2.ag/VARDES    }
         @{" Compound variables                                       " link ARx_Elements2.ag/COMPVAR   }
            @{" Overview: Using compound variables                    " link ARx_Elements2.ag/COMPVAR1}
            @{" Stem variables                                        " link ARx_Elements2.ag/COMPVAR2}
            @{" Extending stem variables                              " link ARx_Elements2.ag/COMPVAR3 }
            @{" Substituting values in compound variables             " link ARx_Elements2.ag/COMPVAR4}
            @{" Using strings as the derived name of a branch         " link ARx_Elements2.ag/COMPVAR5 }
            @{" Setting the default value of a compound variable      " link ARx_Elements2.ag/COMPVAR6}
            @{" Finding values in a compound variable                 " link ARx_Elements2.ag/COMPVAR7}
         @{" Special variables                                        " link ARx_Elements2.ag/SPECVAR   }
            @{" RC                                                    " link ARx_Elements2.ag/RC        }
            @{" RESULT                                                " link ARx_Elements2.ag/RESULT    }
            @{" SIGL                                                  " link ARx_Elements2.ag/SIGL      }
         @{" 'Natural' data typing in ARexx                           " link ARx_Elements2.ag/VARTYPE}
      @{" Function call                                               " link ARx_Elements3.ag/FUNCTION }
         @{" Internal functions                                       " link ARx_Elements3.ag/PROGFUNC }
         @{" Built-in functions                                       " link ARx_Elements3.ag/BLTFUNC  }
         @{" Library/Host functions                                   " link ARx_Elements3.ag/LIBFUNC  }
         @{" External functions                                       " link ARx_Elements3.ag/EXTFUNC  }
         @{" Function arguments                                       " link ARx_Elements3.ag/FUNCARG  }
      @{" Operations                                                  " link ARx_Elements3.ag/OPERATION}
         @{" Concatenation                                            " link ARx_Operator.ag/CONCATENATION }
         @{" Arithmetic                                               " link ARx_Operator.ag/ARITHMETIC }
         @{" Comparative                                              " link ARx_Operator.ag/COMPARISON }
         @{" Logical                                                  " link ARx_Operator.ag/LOGICAL }
         @{" Conditional expressions                                  " link ARx_Elements3.ag/CONDITIONAL  }
      @{" Avoiding accidental commands from expressions               " link ARx_Elements3.ag/ACICMD }
   @{" Clauses                                                        " link ARx_Elements3.ag/CLAUSE }
      @{" Assignment clauses                                          " link ARx_Elements3.ag/ASSIGNMENT }
      @{" Instructions                                                " link ARx_Elements3.ag/INSTRUCTION  }
      @{" Command clauses                                             " link ARx_Elements3.ag/COMMAND  }
         @{" Command host: what is it?                                " link ARx_Elements3.ag/HOST       }
         @{" The default host                                         " link ARx_Elements3.ag/DEFHOST    }
         @{" Determining the initial host                             " link ARx_Elements3.ag/INITHOST   }
         @{" Entering commands in a script                            " link ARx_Elements3.ag/CMDSTRING  }
         @{" Example script                                           " link ARx_Elements3.ag/TTXCOMMAND }
      @{" Label clauses                                               " link ARx_Elements3.ag/LABEL        }
      @{" Null clauses                                                " link ARx_Elements3.ag/NULL     }

Instruction keywords:
      @{" ADDRESS                                                     " link ARx_Instr.ag/ADDRESS   }
      @{" ARG                                                         " link ARx_Instr.ag/ARG       }
      @{" BREAK                                                       " link ARx_Instr.ag/BREAK     }
         @{" Breaking structure                                       " link ARx_Instr.ag/BREAKSTRUCT }
      @{" CALL                                                        " link ARx_Instr.ag/CALL      }
      @{" DO                                                          " link ARx_Instr.ag/DO        }
         @{" <num>                                                    " link ARx_Instr.ag/DOOPT1}
         @{" Index variable/TO/BY                                     " link ARx_Instr.ag/DOOPT2}
         @{" FOR                                                      " link ARx_Instr.ag/DOOPT3}
         @{" WHILE/UNTIL                                              " link ARx_Instr.ag/DOOPT4}
         @{" FOREVER                                                  " link ARx_Instr.ag/DOOPT5}
         @{" END                                                      " link ARx_Instr.ag/END       }
      @{" DROP                                                        " link ARx_Instr.ag/DROP      }
      @{" ECHO                                                        " link ARx_Instr3.ag/SAY       }
      @{" EXIT                                                        " link ARx_Instr.ag/EXIT      }
      @{" IF                                                          " link ARx_Instr.ag/IF        }
         @{" ELSE                                                     " link ARx_Instr.ag/IF        }
      @{" INTERPRET                                                   " link ARx_Instr.ag/INTERPRET }
      @{" ITERATE                                                     " link ARx_Instr.ag/ITERATE   }
      @{" LEAVE                                                       " link ARx_Instr.ag/LEAVE     }
      @{" NOP                                                         " link ARx_Instr.ag/NOP       }
      @{" NUMERIC                                                     " link ARx_Instr2.ag/NUMERIC   }
      @{" OPTIONS                                                     " link ARx_Instr2.ag/OPTIONS   }
      @{" PARSE                                                       " link ARx_Instr2.ag/PARSE     }
         @{" ARG                                                      " link ARx_Instr2.ag/PARSESRC1 }
         @{" PULL                                                     " link ARx_Instr2.ag/PARSESRC2 }
         @{" EXTERNAL                                                 " link ARx_Instr2.ag/PARSESRC3 }
         @{" NUMERIC                                                  " link ARx_Instr2.ag/PARSESRC4 }
         @{" SOURCE                                                   " link ARx_Instr2.ag/PARSESRC5 }
         @{" VERSION                                                  " link ARx_Instr2.ag/PARSESRC6 }
         @{" VALUE / WITH                                             " link ARx_Instr2.ag/PARSESRC7 }
         @{" VAR                                                      " link ARx_Instr2.ag/PARSESRC8 }
         @{" Templates                                                " link ARx_Instr2.ag/PARSETMP1}
            @{" Tokenization                                          " link ARx_Instr2.ag/PARSETMP2 }
                  @{" Placeholder { . } token                         " link ARx_Instr2.ag/PARSETMP2 46}
            @{" Pattern markers                                       " link ARx_Instr2.ag/PARSETMP3 }
            @{" Positional markers                                    " link ARx_Instr2.ag/PARSETMP4 }
            @{" Using variables as template markers                   " link ARx_Instr2.ag/PARSETMP5 }
            @{" Combining different types of markers                  " link ARx_Instr2.ag/PARSETMP6 }
            @{" Using multiple templates                              " link ARx_Instr2.ag/PARSETMP7 }
      @{" PROCEDURE                                                   " link ARx_Instr3.ag/PROCEDURE }
         @{" EXPOSE                                                   " link ARx_Instr3.ag/EXPOSE    }
      @{" PULL                                                        " link ARx_Instr3.ag/PULL      }
      @{" PUSH                                                        " link ARx_Instr3.ag/PUSH      }
      @{" QUEUE                                                       " link ARx_Instr3.ag/QUEUE     }
         @{" PUSH, QUEUE and REXX data-stream I/O                     " link ARx_Instr3.ag/PUSHNOTE }
      @{" RETURN                                                      " link ARx_Instr3.ag/RETURN    }
      @{" SAY                                                         " link ARx_Instr3.ag/SAY       }
      @{" SELECT                                                      " link ARx_Instr3.ag/SELECT    }
         @{" WHEN                                                     " link ARx_Instr3.ag/WHEN      }
         @{" OTHERWISE                                                " link ARx_Instr3.ag/OTHERWISE}
      @{" SIGNAL                                                      " link ARx_Instr3.ag/SIGNAL    }
         @{" ON | OFF <interrupt>                                     " link ARx_Instr3.ag/SIGTRAP }
            @{" BREAK_C                                               " link ARx_Instr3.ag/BREAK_C  }
            @{"| BREAK_D                                              " link ARx_Instr3.ag/BREAK_   }
            | BREAK_E
            | BREAK_F
            @{" ERROR                                                 " link ARx_Instr3.ag/ERROR    }
            @{" FAILURE                                               " link ARx_Instr3.ag/FAILURE  }
            @{" HALT                                                  " link ARx_Instr3.ag/HALT     }
            @{" IOERR                                                 " link ARx_Instr3.ag/IOERR    }
            @{" NOVALUE                                               " link ARx_Instr3.ag/NOVALUE  }
            @{" SYNTAX                                                " link ARx_Instr3.ag/SYNTAX   }
         @{" <label name>                                             " link ARx_Instr3.ag/SIGTRAN }
      @{" TRACE                                                       " link ARx_Instr3.ag/TRACE     }
         @{" Trace options                                            " link ARx_Instr3.ag/TRACEOPT}
         @{"? -- interactive tracing                                  " link ARx_Instr3.ag/TRACEOPT1}
         @{"! -- command inhibition                                   " link ARx_Instr3.ag/TRACEOPT2}
      @{" UPPER                                                       " link ARx_Instr3.ag/UPPER     }

ARexx functions:
      @{" Comparison functions                                        " link ARx_Func.ag/CMPRLIST   }
         @{" ABBREV                                                   " link ARx_Func.ag/ABBREV()    }
         @{" COMPARE                                                  " link ARx_Func.ag/COMPARE()   }
         @{" FIND                                                     " link ARx_Func.ag/FIND()      }
         @{" INDEX                                                    " link ARx_Func.ag/INDEX()     }
         @{" LASTPOS                                                  " link ARx_Func.ag/LASTPOS()   }
            @{" Locating file names with LASTPOS() and MAX()          " link ARx_Notes.ag/FILENAME }
         @{" POS                                                      " link ARx_Func.ag/POS()       }
         @{" VERIFY                                                   " link ARx_Func.ag/VERIFY()    }
            @{" Checking unique datatypes with VERIFY()               " link ARx_Notes.ag/VERIFYNOTE  }
      @{" String manipulation                                         " link ARx_Func.ag/STRLIST    }
         @{" CENTER                                                   " link ARx_Func.ag/CENTER()    }
         @{" COMPRESS                                                 " link ARx_Func.ag/COMPRESS()  }
            @{" Counting characters using COMPRESS()                  " link ARx_Notes.ag/COUNTCHAR }
         @{" COPIES                                                   " link ARx_Func.ag/COPIES()    }
         @{" DELSTR                                                   " link ARx_Func.ag/DELSTR()    }
         @{" INSERT                                                   " link ARx_Func.ag/INSERT()    }
         @{" LEFT                                                     " link ARx_Func.ag/LEFT()      }
            @{" Formatting output with RIGHT(), LEFT(), and TRUNC()   " link ARx_Notes.ag/FORMATNOTE }
         @{" LENGTH                                                   " link ARx_Func.ag/LENGTH()    }
         @{" OVERLAY                                                  " link ARx_Func.ag/OVERLAY()   }
         @{" REVERSE                                                  " link ARx_Func.ag/REVERSE()   }
         @{" RIGHT                                                    " link ARx_Func.ag/RIGHT()     }
         @{" STRIP                                                    " link ARx_Func.ag/STRIP()     }
         @{" SUBSTR                                                   " link ARx_Func.ag/SUBSTR()    }
         @{" TRANSLATE                                                " link ARx_Func.ag/TRANSLATE() }
         @{" TRIM                                                     " link ARx_Func.ag/TRIM()      }
         @{" UPPER                                                    " link ARx_Func.ag/UPPER()     }
         @{" XRANGE                                                   " link ARx_Func.ag/XRANGE()    }
      @{" Word manipulation                                           " link ARx_Func2.ag/WORDLIST   }
         @{" DELWORD                                                  " link ARx_Func2.ag/DELWORD()   }
         @{" SPACE                                                    " link ARx_Func2.ag/SPACE()     }
         @{" SUBWORD                                                  " link ARx_Func2.ag/SUBWORD()   }
         @{" WORD                                                     " link ARx_Func2.ag/WORD()      }
         @{" WORDINDEX                                                " link ARx_Func2.ag/WORDINDEX() }
         @{" WORDLENGTH                                               " link ARx_Func2.ag/WORDLENGTH()}
         @{" WORDS                                                    " link ARx_Func2.ag/WORDS()     }
      @{" Char/Num translation                                        " link ARx_Func2.ag/TRANLIST   }
         @{" B2C                                                      " link ARx_Func2.ag/B2C()       }
         @{" C2B                                                      " link ARx_Func2.ag/C2B()       }
         @{" C2D                                                      " link ARx_Func2.ag/C2D()       }
         @{" C2X                                                      " link ARx_Func2.ag/C2X()       }
         @{" D2C                                                      " link ARx_Func2.ag/D2C()       }
         @{" D2X                                                      " link ARx_Func2.ag/D2X()       }
         @{" X2C                                                      " link ARx_Func2.ag/X2C()       }
         @{" X2D                                                      " link ARx_Func2.ag/X2D()       }
      @{" Number manipulation                                         " link ARx_Func2.ag/NUMLIST    }
         @{" ABS                                                      " link ARx_Func2.ag/ABS()       }
         @{" HASH                                                     " link ARx_Func2.ag/HASH()      }
         @{" MAX                                                      " link ARx_Func2.ag/MAX()       }
         @{" MIN                                                      " link ARx_Func2.ag/MIN()       }
         @{" RANDOM                                                   " link ARx_Func2.ag/RANDOM()    }
         @{" RANDU                                                    " link ARx_Func2.ag/RANDU()     }
         @{" SIGN                                                     " link ARx_Func2.ag/SIGN()      }
         @{" TRUNC                                                    " link ARx_Func2.ag/TRUNC()     }
      @{" Informational                                               " link ARx_Func2.ag/INFOLIST   }
         @{" DATE                                                     " link ARx_Func2.ag/DATE()      }
            @{" DATE() Options                                        " link ARx_Func2.ag/DATESUB     }
         @{" SHOW                                                     " link ARx_Func2.ag/SHOW()      }
         @{" SHOWDIR                                                  " link ARx_Func2.ag/SHOWDIR()   }
         @{" SHOWLIST                                                 " link ARx_Func2.ag/SHOWLIST()  }
            @{" SHOWLIST() Options                                    " link ARx_Func2.ag/SHOWLISTSUB }
         @{" TIME                                                     " link ARx_Func2.ag/TIME()      }
            @{" TIME() Options                                        " link ARx_Func2.ag/TIMESUB     }
            @{" The elapsed time counter                              " link ARx_Notes.ag/TIMENOTE }
      @{" File input/output                                           " link ARx_Func3.ag/FILEIOLIST  }
            @{" Overview of I/O functions                             " link ARx_Notes.ag/IOFUNC }
            @{" Setting the logical file name                         " link ARx_Notes.ag/LOGFILE}
            @{" Using I/O functions other devices                     " link ARx_Notes.ag/OTHERIO}
            @{" Standard I/O files                                    " link ARx_Notes.ag/STDIO  }
         @{" CLOSE                                                    " link ARx_Func3.ag/CLOSE()     }
         @{" EOF                                                      " link ARx_Func3.ag/EOF()       }
         @{" LINES                                                    " link ARx_Func3.ag/LINES()     }
         @{" OPEN                                                     " link ARx_Func3.ag/OPEN()      }
         @{" READCH                                                   " link ARx_Func3.ag/READCH()    }
         @{" READLN                                                   " link ARx_Func3.ag/READLN()    }
         @{" SEEK                                                     " link ARx_Func3.ag/SEEK()      }
         @{" WRITECH                                                  " link ARx_Func3.ag/WRITECH()   }
         @{" WRITELN                                                  " link ARx_Func3.ag/WRITELN()   }
      @{" File management                                             " link ARx_Func3.ag/FILEMGTLIST}
         @{" DELETE                                                   " link ARx_Func3.ag/DELETE()    }
         @{" EXISTS                                                   " link ARx_Func3.ag/EXISTS()    }
         @{" MAKEDIR                                                  " link ARx_Func3.ag/MAKEDIR()   }
         @{" RENAME                                                   " link ARx_Func3.ag/RENAME()    }
         @{" STATEF                                                   " link ARx_Func3.ag/STATEF()    }
      @{" ARexx control                                               " link ARx_Func3.ag/ARXLIST    }
         @{" ADDRESS                                                  " link ARx_Func3.ag/ADDRESS()   }
         @{" ADDLIB                                                   " link ARx_Func3.ag/ADDLIB()    }
         @{" ARG                                                      " link ARx_Func3.ag/ARG()       }
         @{" DATATYPE                                                 " link ARx_Func3.ag/DATATYPE()  }
            @{" DATATYPE() Options                                    " link ARx_Func3.ag/DATATYPESUB }
         @{" DELAY                                                    " link ARx_Func3.ag/DELAY()     }
         @{" DIGITS                                                   " link ARx_Func3.ag/DIGITS()    }
         @{" ERRORTEXT                                                " link ARx_Func3.ag/ERRORTEXT() }
         @{" FORM                                                     " link ARx_Func3.ag/FORM()      }
         @{" FUZZ                                                     " link ARx_Func3.ag/FUZZ()      }
         @{" GETCLIP                                                  " link ARx_Func3.ag/GETCLIP()   }
            @{" Using the clip list                                   " link ARx_Notes.ag/CLIPLIST }
         @{" PRAGMA                                                   " link ARx_Func3.ag/PRAGMA()    }
         @{" REMLIB                                                   " link ARx_Func3.ag/REMLIB()    }
         @{" SETCLIP                                                  " link ARx_Func3.ag/SETCLIP()   }
         @{" SOURCELINE                                               " link ARx_Func3.ag/SOURCELINE()}
            @{" In-line data                                          " link ARx_Notes.ag/INLDATA }
         @{" SYMBOL                                                   " link ARx_Func3.ag/SYMBOL()    }
         @{" TRACE                                                    " link ARx_Func3.ag/TRACE()     }
         @{" VALUE                                                    " link ARx_Func3.ag/VALUE()     }
            @{ " Using VALUE()                                        " link ARx_Notes.ag/VALUENOTE}
      @{" Message ports                                               " link ARx_Func4.ag/PORTLIST   }
            @{" Using ports in ARexx programs                         " link ARx_Notes.ag/PORTXMP }
         @{" CLOSEPORT                                                " link ARx_Func4.ag/CLOSEPORT()}
         @{" GETARG                                                   " link ARx_Func4.ag/GETARG()   }
         @{" GETPKT                                                   " link ARx_Func4.ag/GETPKT()   }
         @{" OPENPORT                                                 " link ARx_Func4.ag/OPENPORT() }
         @{" REPLY                                                    " link ARx_Func4.ag/REPLY()    }
         @{" TYPEPKT                                                  " link ARx_Func4.ag/TYPEPKT()  }
         @{" WAITPKT                                                  " link ARx_Func4.ag/WAITPKT()  }
      @{" Memory management                                           " link ARx_Func4.ag/MEMLIST    }
         @{" ALLOCMEM                                                 " link ARx_Func4.ag/ALLOCMEM()  }
         @{" BADDR                                                    " link ARx_Func4.ag/BADDR()     }
         @{" EXPORT                                                   " link ARx_Func4.ag/EXPORT()    }
         @{" FORBID                                                   " link ARx_Func4.ag/FORBID()    }
         @{" FREEMEM                                                  " link ARx_Func4.ag/FREEMEM()   }
         @{" FREESPACE                                                " link ARx_Func4.ag/FREESPACE() }
         @{" GETSPACE                                                 " link ARx_Func4.ag/GETSPACE()  }
         @{" IMPORT                                                   " link ARx_Func4.ag/IMPORT()    }
         @{" NEXT                                                     " link ARx_Func4.ag/NEXT()      }
         @{" NULL                                                     " link ARx_Func4.ag/NULL()      }
         @{" OFFSET                                                   " link ARx_Func4.ag/OFFSET()    }
         @{" PERMIT                                                   " link ARx_Func4.ag/PERMIT()    }
         @{" STORAGE                                                  " link ARx_Func4.ag/STORAGE()   }
      @{" Bit-wise operations                                         " link ARx_Func4.ag/BITLIST    }
         @{" BITAND                                                   " link ARx_Func4.ag/BITAND() }
         @{" BITCHG                                                   " link ARx_Func4.ag/BITCHG() }
         @{" BITCLR                                                   " link ARx_Func4.ag/BITCLR() }
         @{" BITCOMP                                                  " link ARx_Func4.ag/BITCOMP()}
         @{" BITOR                                                    " link ARx_Func4.ag/BITOR()  }
         @{" BITSET                                                   " link ARx_Func4.ag/BITSET() }
         @{" BITTST                                                   " link ARx_Func4.ag/BITTST() }
         @{" BITXOR                                                   " link ARx_Func4.ag/BITXOR() }

ARexx operators:
      @{" Concatenation                                               " link ARx_Operator.ag/CONCATENATION }
      @{" Arithmetic                                                  " link ARx_Operator.ag/ARITHMETIC    }
         @{" Table of arithmetic operators                            " link ARx_Operator.ag/ARITHTABLE    }
      @{" Comparison                                                  " link ARx_Operator.ag/COMPARISON    }
         @{" Table of comparison operators                            " link ARx_Operator.ag/CMPRTABLE     }
      @{" Logical                                                     " link ARx_Operator.ag/LOGICAL       }
         @{" Table of logical operators                               " link ARx_Operator.ag/LOGTABLE      }
      @{" About operator precedence                                   " link ARx_Operator.ag/PRIORITY      }

AmigaDOS command programs:
      @{" RexxMast                                                    " link ARx_Cmd.ag/REXXMAST    }
      @{" RXC                                                         " link ARx_Cmd.ag/RXC         }
      @{" RX                                                          " link ARx_Cmd.ag/RX          }
      @{" HI                                                          " link ARx_Cmd.ag/HI          }
      @{" RXLIB                                                       " link ARx_Cmd.ag/RXLIB       }
      @{" RXSET                                                       " link ARx_Cmd.ag/RXSET       }
      @{" TCO                                                         " link ARx_Cmd.ag/TCO         }
      @{" TCC                                                         " link ARx_Cmd.ag/TCC         }
      @{" TS                                                          " link ARx_Cmd.ag/TS          }
      @{" TE                                                          " link ARx_Cmd.ag/TE          }
      @{" WaitForPort                                                 " link ARx_Cmd.ag/WAITFORPORT }

   Useful tools:
      @{" WShell                                                      " link ARx_Cmd.ag/WSHELL      }
      @{" EXECIO                                                      " link ARx_Cmd.ag/EXECIO      }

@{" GLOSSARY                                                          " link GLOSSARY }
@{" INDEX                                                             " link ARx_Index/MAIN }
Interactive examples
   @{" Registration form                                              " system "rx ARx_IactExamples.rexx ARx_Reg.rexx" }
   @{" Comparison demonstration                                       " system "rx ARx_IactExamples.rexx ARx_Cmpr.rexx" }
   @{" NUMERIC demonstration                                          " system "rx ARx_IactExamples.rexx ShowNumeric" }
   @{" TRACE demonstration                                            " system "rx ARx_Trace.rexx" }
   @{" Standard I/O demonstration                                     " system "rx ARx_IactExamples.rexx ShowStdIO" }
   @{" Break-key demonstration                                        " system "rx ARx_IactExamples.rexx DoBreak" }


@EndNode
@Node TUTOR "ARexxGuide | TURORIALS"
@NEXT ARx_PrgUcr.ag/UCREXPLAN 
@PREV MAIN 
   AN AMIGAGUIDE® TO ARexx                 Edition: 1.0
   by Robin Evans

   @{" UnCrunch.rexx " link ARx_PrgUcr.ag/UCREXPLAN } A shell-based program to undo archives made
                   with different archiving utilities.

   Each line of code in the program is explained in the accompanying
   tutorial sections.

   More tutorials will be made available in the future. Be sure to specify
   what you'd like to see covered when you register.



                 Copyright © 1993, Robin Evans.  All rights reserved.

    This guide is @{" shareware " link REG}. If you find it useful, please register.

@EndNode
@Node GLOSSARY " ARexxGuide | GLOSSARY (Press -Retrace- to return to previous node)

Boolean value        Either true or false, which -- in ARexx -- is
      considered to be 1 for true and 0 for false. Named after the
      mathematician George Boole.

CON:                 Or: Console Window. A @{" logical device " link GLOSSARY 45} that creates a
      text window on the Workbench or other public screen. This device can
      be used as the <filename> with the @{" file I/O " link ARx_Func3.ag/FILEIOLIST} functions to direct
      output to a window opened by the script.

Control structure    A programming construct that allows a series of
      statements to be executed as part of a block. The instructions @{" DO " link ARx_Instr.ag/DO},
      @{" SELECT " link ARx_Instr3.ag/SELECT}, and @{" IF " link ARx_Instr.ag/IF} create control structures in ARexx.

Debug                To search for and eliminate (eventually) problems or
      'bugs' in a program. The @{" TRACE " link ARx_Instr3.ag/TRACE} instruction aids debugging in ARexx.

Dyadic               Having two parts. In ARexx, the term refers to
      operations that have two operands (2 + 2, for instance). Some
      operations have only one operation (-1, for instance) and are
      referred to here as 'prefix' operations. The more technical name for
      the opposite of a dyadic operation is unary operation.

Egregious            It means "very bad," but use of this word shows that
      the writer has spent too much time in the company of lawyers. (Which
      may be the same thing, come to think of it.)

Interpreter          A program that translates source code (what you write
      an an ARexx script) into machine instructions each time the program
      is run. @{" RexxMast " link ARx_Cmd.ag/REXXMAST} is the name of the interpreter program for ARexx.

I/O                  Input/Output. The term refers to the various methods
      of obtaining data and displaying or saving it. The I/O system on the
      Amiga includes disk drives, windows, and requesters.

Iteration            A program-ese synonym for 'repetition'. To a human
      the instruction to "Do forever" would be a Sysephean punishment. To
      a computer, it is just another task. In ARexx, iteration is performed
      by a single instruction, @{" DO " link ARx_Instr.ag/DO}, which has a wide range of options to
      give the programmer control over when the iteration stops.

Keyword              The word that identifies an ARexx instruction or the
      option to an instruction. Keywords and instructions are detailed in
      the @{" Instruction reference " link ARX_INSTR.AG/MAIN}.

Logical device       A part of the computer system defined through
      software. In AmigaDOS, logical devices intervene between the
      application program (including ARexx) and such hardware devices as
      disk drives, printers, and the monitor screen.

Loop                 A section of program code that is repeated (or
      @{" iterated " link GLOSSARY 35}). Looping in ARexx is controlled by the @{" DO " link ARx_Instr.ag/DO} instruction.

Mantra               In Hinduism, a sacred formula, repeated over and
      over again, that is believed to posses special power. (Looking up
      this word demonstrates one of two things: either the user wasn't
      around for the 60's or wasn't paying attention. < put ;-) smiley
      here > )

Nested               To place one thing within another just as an egg is
      placed in a bird's nest. A nested function is one function used as
      an argument to another function as in RIGHT(TRUNC(Amount, 2), 6).
      Here the @{" TRUNC() " link ARx_Func2.ag/TRUNC()} function, which truncates the decimal points on a
      number, is nested within the @{" RIGHT() " link ARx_Func.ag/RIGHT()} function, which right-
      justifies the resulting number.

NIL:                 A logical device recognized by AmigaDOS that will
      throw away input or output directed to it.

Preferences          A series of programs that are part of the Amiga OS.
      They allow the user to customize most aspects of the system.

Prototyping          The process of developing an initial version of a
      software application in one language to test the logic of the code
      and the usefulness of contemplated options.

PRT:                 A logical device recognized by AmigaDOS which directs
      output to the printer currently defined in @{" Preferences " link GLOSSARY 69}. This
      device can be used as the <filename> with the @{" file I/O " link ARx_Func3.ag/FILEIOLIST} functions
      to direct output to a printer.

Reserved             A @{" token " link ARx_Elements.ag/TOKEN} that serves a specialized purpose in the
      language and cannot be used for any other purpose. REXX has a
      limited set of reserved tokens. The single characters representing
      @{" operators " link ARx_Elements3.ag/OPERATION} and @{" special characters " link ARx_Elements.ag/SPECCHAR} are reserved in all situations.
      @{" Instruction " link ARx_Elements3.ag/INSTRUCTION} @{" keywords " link GLOSSARY 41} and sub-keywords are reserved only within
      the limited range of the instruction itself. The variables [x] and
      [b] -- although they are not technically reserved -- should be avoided
      because they can cause a conflict with @{" hex and binary strings " link ARx_Elements.ag/HEXSTRING}.

STDERR               Standard error device. This is the @{" logical name " link ARx_Notes.ag/LOGFILE}
      assigned to a device to which ARexx will send error messages and the
      output of @{" tracing " link ARx_Instr3.ag/TRACE}. If the @{" trace console " link ARx_Cmd.ag/TCO} is open, that will
      become STDERR. The @{" PARSE EXTERNAL " link ARx_Instr2.ag/PARSESRC3} instruction retrieves input from
      this device.

STDIN                Standard input device. This is the @{" logical name " link ARx_Notes.ag/LOGFILE}
      assigned to a device from which ARexx will retrieve input then the
      @{" PARSE PULL " link ARx_Instr2.ag/PARSESRC2} instruction is used. It is usually the shell from which
      a program was launched, although a script started from another
      environment will often have STDIN assigned to @{" NIL: " link GLOSSARY 66}.

STDOUT               Standard output device. This is the @{" logical name " link ARx_Notes.ag/LOGFILE} of
      the device to which ARexx will output the expression used in a @{" SAY " link ARx_Instr3.ag/SAY}
      instruction. It is usually the shell from which a program was
      launched, although a script started from another environment will
      often have STDOUT assigned to @{" NIL: " link GLOSSARY 66}.

Subroutine           A section of code separated from the main body of a
      program. In ARexx, subroutines are identified by @{" labels " link ARx_Elements3.ag/LABEL} and
      usually serve as @{" internal functions " link ARx_Elements3.ag/PROGFUNC}.


























@EndNode
