Sections
Sections are in two parts, either of which may be empty. The first part is the text to be displayed, ended by a line starting with )
. Lines after the )
are J sentences that are executed. If no )
line is given, the section is assumed to be text only.
For example, the following is a lab section named "Numbers":
Lab Section Numbers The integer function (i.) generates numbers: ) i.10 NB. first 10 numbers i.4 3 NB. first 12 numbers in a 4 by 3 table
The lab system responds advance by reading the next section, displaying the text, and executing the J sentences. All display is normal output to the active jx window, and the user has complete access to the J session.
Section Keywords
Lines in the second part of a Lab Section (the J sentences to be executed) may begin with one of the keywords SCRIPT
, PREPARE
or SOUND
.
SCRIPT
allows you to enter a character string that will be stored in the global variable SCRIPT
, in the jlab
locale. For example, this can be used to build up an example script.
PREPARE
allows you to enter sentences that will be run silently before the rest of the section is run.
>.
The SCRIPT
and PREPARE
keywords are used to delimit text or sentences to be run before the rest of the section, and must occur at the beginning of the section. Any text on the same line as the keyword is ignored. For example, you can use these facilities to define the global SCRIPT
, or load required code, and check whether it is OK to continue the lab.
To prevent further execution of the section, signal an error. The utility assert_lab_
may be used for this purpose; the left argument is the message to display when a 0 occurs in the right argument.
For example:
Lab Section Printing The following prints the result: ) PREPARE read in print fns ------------ load 'print' load 'myutils' ERRORMSG=. 'Unable to load myutils',LF,LF,'Check they are installed' ERRORMSG assert_lab_ 3=nameclass <'myprintfn' PREPARE ------------------------------ myprint RESText Width
If LABWRAP is set on, text beginning at the left margin is automatically wrapped to width LABWIDTH when it is written to the J execution window. To avoid this, for example when including J code, indent text by one or more spaces.
Ignored Lines
The system ignores any lines beginning NB. ==
.