



                          [42mARexx Book Review[0m


[3m                     By Arthur R. Tov von Heffen[0m

                     [33mTitle: [32mMastering Amiga ARexx
                         [33mAuthor: [32mPaul Overaa
                     [33mPublisher: [32mBruce Smith Books
                         [33mISBN: [32m1-873308-13-2
           [33mPrinting: [32m1st Edition, 1st Printing, April 1993


     
    Ed: Arthur is a video professional and can be contacted for work
    commissions in any kind of multimedia. Find him through Megadisc.
    Thanks to Bruce Smith Books for this and other books.


[0m
[32m    36 -+- 36 -+- 36 -+- 36 -+- 36 -+- 36 -+- 36 -+- 36 -+- 36 -+- 36 [0m


[33mDescription of the Package[0m

      A book containing 333 pages, written by someone with a wealth of
    experience in the subject, gained through years of programming the
    Amiga at the levels of C and assembler, and from providing
    intelligent and in depth technical support for many readers of the
    British Amiga journals, throughout the same period.

      A disk containing source for the programmes in the book is
    advertised as available from the publishers, upon receipt of a
    cheque/postal order for £1.50p.  I have not as yet seen the disk,
    or know if it is available in Australia.

[33mIntroduction[0m

Part 1: The Language
Part 2: ARexx Communications
Part 3: Inside ARexx

[33mIntroduction - the Entree[0m

      The introduction starts with a brief history of Rexx as a
    language, and the history of ARexx on the Amiga.  Then the notion
    of the ARexx Language's particularly special and quite unique
    feature - that of being able to communicate with other programmes
    running concurrently in a multi-tasking environment, and 'glue' or
    integrate them into coordinated systems greater than the parts -
    is introduced.

      A brief discourse on computer structure and different levels of
    computer programming (and therefore languages), then places ARexx
    as a High Level language, and presents the relative merits of
    programming the Amiga in a high level language.

      A description of what is required for producing an ARexx
    programme is followed by an outline of the software components
    that comprise the ARexx software package.

[33mThe Introduction is followed by a menu of three courses:[0m

      Firstly The contents of the ARexx programming language - ie the
    capacity of ARexx to store and process data as a programming
    language in it's own right.  After a brief overview with some
    short examples to familiarize the reader with the format and
    layout of ARexx programmes, the author defines the components of
    the ARexx language with a complete description of the language's
    elements, followed by an explanation of how the ARexx interpreter
    functions.  Data elements and operators are explained, followed
    with clause construction, a glossary of ARexx's keywords, and some
    short, runable examples to exemplify the descriptions.

      The use and value of using functions follows, illustrated with
    more examples, with a discussion covering parameter passing,
    return values, global variables, the exposing of variables, and
    finally external functions.  A description of each of ARexx's
    built-in functions is then followed by an explanation of 'function
    libraries' and 'function hosts', and the differences between them.

      A chapter on 'Flow Control' follows, which covers the options
    ARexx provides for switching and looping within programmes.
      The next chapter covers hints and techniques for developing a
    consistant and effective programming style, and the advantages of
    doing so.
      A programme is then described which presents a menu to a shell
    window, and discussion on this leads into file access and
    handling, via input and output to the shell.
      ARexx's unusual but effective method of holding and referencing
    sets of related data is explained in the section describing
    Compound Variables.

      A recurring theme in the Paul Overaa "Programming the Amiga"
    series of books is the value of using programming design
    techniques in the process of developing a programme.  This book
    contains a chapter describing several different algorithm design
    and planning methodologies, including Data-Structured Design,
    Data-Flow Oriented Design and Warnier Diagrams.

      Parsing is the technique of splitting a sentence or phrase into
    a number of components.  As ARexx is heavily based on using
    strings for holding data, it is only natural that ARexx would have
    a large complement of tools for unpacking and manipulating them,
    and a chapter effectively describes the many different approaches
    which ARexx provides.

      An overview of File I/O is followed by explained examples
    showing file opening and closing, reading from and writing to
    files, and seek-locating within them.
 
     Then a project is presented, with explained ARexx source, which
    describes how to create a fully-functional, multi-field database
    with record entry, edit, store and display functions.  This is the
    largest ARexx programme in the book, and displays many of the
    programme writing hints and techniques given throughout the book.
      This first section concludes with a section covering interrupt
    detection, tracing facilities and debugging techniques.

      The Second section extends the first by covering the extensions
    to ARexx provided by ARexx compatible Amiga applications, and
    details of the methods used for Inter-Process Communication are
    introduced - with music-playing examples from Octamed, Bars and
    Pipes and Superjam; and several examples for text editing, using
    SASC's LSE editor, which display the advantages and freedoms of
    defining macros for an application using a 'full-blown'
    programming language.

      The Third `course' is truly the 'meat' in this sandwich.  Called
    "Interprogram Communications - The Inside Story", this 30 page
    chapter is a description of the essential mechanism of ARexx's
    message passing facility.  Whereas up til now the author has been
    wading in the pool of ARexx capability, creating craft which
    manouvre on the surface, here he dives beneath the surface to
    uncover and show the structures and processes which occur when
    programmes interact via ARexx, but viewed from the lower levels of
    C and assembler.
[32m        a)[0m Firstly the data structures, ie message packets, which will
    be encountered are described, followed by the functions provided
    to process them ie construct, send, receive, and interpret
    messages.
[32m        b)[0m The source to two example programmes then follow - one in
    assembler and the other in C.
[32m        c)[0m The first example is called ShowRexx.s.  This assembly code
    opens a window and an ARexx port (called 'ShowRexx'), displays the
    programme's title in the window, then waits for an ARexx message
    containing the instruction 'Quit'.
[32m        d)[0m The second example, 'ShowRexx2', is compiled from three
    pieces of source code - 'general.h', 'ShowRexx2.h' and
    'ShowRexx2.c'.  A window is opened on it's own screen, which
    provides a menu allowing the user to change the background window
    colour and to quit.  An ARexx interface provides the ability to
    select the menu's functions with ARexx messages of the form
    'SELECT MENU Fx', where x is the number of the function's menu
    item.
  
      Both examples are clearly presented, and both are designed to
    provide simple devices, complete within themselves, yet seeking
    extension as the path to further understanding.

     Several appendices close the book, giving further background
    information about ARexx and its link with Commodore, references to
    ARexx in the Fish Public Domain library (disks 227 to 466), an
    extensive glossary, and a bibliography of books generally useful
    to Amiga programmers.

[33mReview:[0m

      An excellent book by one of the few who could be called the
    Masters of Amiga Programming.  The author's rigourous approach and
    attention to detail, typical of an effective programmer, create a
    very resourceful volume.  The absolute beginner may find the going
    a bit difficult, as the book is written with certain programming
    conventions understood.  For those for whom ARexx is a second
    language, this book should be quite sufficient.  For those who
    have outgrown their first ARexx book, this one makes a perfect
    complement.

[3mErrata:[0m
[3m1. Page 27, Line 24: 'rexxlib.library' should read 'rexxsyslib.library'[0m


[32m    36 -+- 36 -+- 36 -+- 36 -+- 36 -+- 36 -+- 36 -+- 36 -+- 36 -+- 36 [0m


