INDEX
1.1  +>
1.2  +?
1.3  ->
1.4  -?
1.5  $MACHINE VARIABLE
1.6  COMMAND NOT AVAILABLE IN THIS SYSTEM -- CALL SPIRES
1.7  CONSULTING
1.8  EVERYTHING
1.9  FIXED-REQ statement
1.10  NO BUILD SPACE
1.11  OUTPUT COMMAND
1.12  SERIOUS ERROR
1.13  SET ACTIVE COMMAND
1.14  SEVERE PASS ERROR
1.15  SHOW SEARCH TERMS COMMAND
1.16  SPIRES CONSULTING
1.17  STR-NAME STATEMENT
1.18  TYPE=PTR STATEMENT
1.19  UNRECOGNIZED
1.20  VARYING-REQ statement
1.21  WARNING ERROR
1.22  WYLBUR
1.23  X+>
1.24  X+?
1.25  X->
1.26  $ACTIVE VARIABLE
2.1  X-?
2.2  RECORD NAME NOT VALID
2.3  INVALID SPECIFIC FILE DATA
2.4  FRAME DIMENSIONS TOO LARGE
2.5  REMELEM ILLEGAL IF USAGE = FULL
2.6  FILE IN FORMAT DEF DOES NOT EXIST
2.7  DISPLAY ATTRIBUTES ERROR
2.8  INVALID EMPHASIS LEVEL
2.9  TOO MANY UPROCS IN LABEL-GROUP
2.10  NO FORMATS DEFINED
2.11  INVALID BREAK CHARACTERS INPUT
2.12  FILE DATA NOT ALLOWED
2.13  LONG VARIABLE HAS OCC > 1
2.14  BAD LEN FOR VARIABLE TYPE
2.15  STATIC VARIABLE NOT FOUND
2.16  VARIABLE NOT SUBSCRIPTED
2.17  SUBSCRIPT TOO LARGE
2.18  UNKNOWN VARIABLE TYPE
2.19  VGROUP TABLE TOO LARGE. TRY DYNAMIC TYPE
2.20  MORE THAN ONE SOURCE VALUE IN LABEL GROUP
2.21  INPROC ERROR (DIAGNOSTIC MESSAGE)
2.22  OUTPROC ERROR (DIAGNOSTIC MESSAGE)
2.23  FMTPROC ERROR (diagnostic message)
2.24  <FRAME name> IS NOT DEFINED BY A FRAME-ID
2.25  INDIRECT FRAME-ID NOT FOUND
3.1  VALUE ILLEGAL FOR OUTPUT DIRECTION
3.2  INVALID ELEM MNEMONIC
3.3  INVALID SCAN OPTION
3.4  VALUE ILLEGAL FOR INPUT DIRECTION
3.5  ELEM IS NOT STRUCTURE OR WITHIN SUBTREE
3.6  STATIC GROUP NOT FOUND
3.7  LABEL TABLE OVERFLOW
3.8  UNDEFINED BRANCH TERM
3.9  JUMP ONLY IN LABEL GROUP
3.10  INVALID BREAK-LEVEL
3.11  INVALID PUTELEM USAGE
3.12  MISSING BREAK-LEVELS
3.13  SORT ARRAY TOO LARGE
3.14  ELEM ILLEGAL IN FRAME TYPE
3.15  INVALID RESTRICTIONS DATA
3.16  WRONG DIRECTION FOR INDIRECT FRAME
3.17  RECORD-NAME NOT SPECIFIED
3.18  TOO MANY VALUES IN EXPRESSION
3.19  EXPRESSION TABLE OVERFLOW
3.20  MES must be 0, 1, 2 or 3
3.21  SET REPORT IN STARTUP FRAME ONLY
3.22  WARNING: DUPLICATE LABEL NAME
3.23  REPORT VALUE NOT INTEGER
3.24  BREAK LEVEL ONLY ALLOWED IN SUMMARY FRAME
3.25  COMPILED RECORD TOO LARGE
4.1  SUBTREE RECORD NAME NOT FOUND
4.2  ILLEGAL USE OF PATH VALUE
4.3  ILLEGAL USE OF FLUSH UPROC
4.4  INVALID IND STRUCTURE CALL TO NON REFERENCE FRAME
4.5  EXPLAIN SF COMMAND
4.6  @
4.8  USE OF @-SIGN IGNORED
4.10  COMBINED INDEX
4.11  VIEW TABLE ERROR
4.12  DEQUEUE ALL COMMAND
4.13  DUPLICATE ALLOCATE STATEMENT
4.15  PRISM
4.16  USERPROC ERROR MESSAGES
4.17  WARNING: STRING WITH NO RELATION
4.18  BATCH COMMAND IN SPIBILD
4.19  MERGE COMMAND IN SPIBILD, OUTSIDE OF GLOBAL FOR
4.20  RESULT/STACK MUST BE CLEARED
4.21  ERROR IN VGROUPINIT FUNCTION
4.22  ABNORMAL BATCH INPUT TERMINATION
4.23  DID NOT COMPILE PROTOCOL
4.24  DUPLICATE LABEL
4.25  LABEL TOO LONG
5.1  UNDEFINED LABEL
5.2  NO ACCOUNTS DEFINED
5.3  INVALID COMMAND OPTION: UPDATE
5.4  NON UNIQUE SUBFILE REQUEST IN SUBGOAL
5.5  LIMITS IN SPIRES
5.6  COMPILE TERMINATED
5.7  NO RECORDS COMPILED
5.8  WARNING: IMMEDIATE INDEX IS ALSO IMMEDIATE GOAL
5.9  WARNING: INFORMATION PACKET NOT FOUND: <NAME>
5.10  WARNING: LARGE ENTRIES IN <TABLE-NAME>
5.11  WARNING: RESIDUAL VALUE IS INVALID, RESET TO 1
5.13  WARNING: SUBFILE MAY NEED TO BE RE-ESTABLISHED
5.14  WARNING: TYPE INCONSISTENT WITH INPROC'S TYPE
5.15  FULL-SCREEN EXPLAIN
5.16  $SYSXEQ FUNCTION
5.16a  $SYSXEQ FUNCTIONS
5.17  FILE MUST HAVE A CKPT DATA SET
5.18  SET NOSPIRES SYMBOLS COMMAND
5.19  SET SPIRES SYMBOLS COMMAND
5.20  PHANTOM ELEMENT MUST BE TYPE STRUCTURE
5.21  TYPE STRUCTURE MUST BE PHANTOM
5.22  $SEARCH.UNIVID PROC
5.23  $SYSEVAL FUNCTION, UNIX EMULATOR
5.23.1  $SYSEVAL ACTIVE OPTION, UNIX EMULATOR
5.24  ACTIVE FILE WITH FILE AREA, UNIX EMULATOR
5.25  XEXP PROTOCOL
5.26  PERFORM EXPLAIN
6.3  MAILTO COMMAND, UNIX EMULATOR
6.4  OPEN COMMAND, UNIX EMULATOR
6.5  PERCENT PREFIX, UNIX EMULATOR
6.7  SET EXCEPTION, UNIX EMULATOR
6.8  SET HEIGHT, UNIX EMULATOR
6.9  SET PREFIX COMMAND, UNIX EMULATOR
6.10  SET WDSR COMMAND, UNIX EMULATOR
6.11  SCRATCH COMMAND, UNIX EMULATOR
6.12  USE COMMAND, UNIX EMULATOR
6.13  FILENAME, UNIX EMULATOR
6.14  SAVE COMMAND, UNIX EMULATOR
6.15  WYLBUR VARIABLES
6.16  WYLBUR COMMANDS, UNIX EMULATOR

1.1  +>

This is one form of the SPIRES standard prompt.

 (1) + means Global FOR mode, i.e., a FOR command is in effect.
 (2) > means UPLOW case in effect.

1.2  +?

This is one form of the SPIRES standard prompt.

 (1) + means there is a FOR command in effect.
 (2) ? means UPPER case in effect.

1.3  ->

This is one form of the SPIRES standard prompt.

 (1) -- means normal command mode, no FOR in effect.
 (2) > means UPLOW case in effect.

1.4  -?

This is one form of the SPIRES standard prompt.

 (1) -- means normal command mode, no FOR in effect.
 (2) ? means UPPER case in effect.

1.5  $MACHINE VARIABLE

The $MACHINE variable, if non-null, contains the first 8 characters of the name of the current HOST, such as 'SYSA' or 'lindy' or 'sunspi3'.

1.6  COMMAND NOT AVAILABLE IN THIS SYSTEM -- CALL SPIRES

This message is issued when you are in a special version of SPIRES designed for a particular application. In such versions, not all of the standard SPIRES commands are available. You must be in "normal" SPIRES to issue the command that caused the message. So CALL SPIRES before issuing that command again.

1.7  CONSULTING

Support for SPIRES is provided through the SPIRES Colaboration. Each member of the Colaboration has a technical representative, who is authorized to call the Colaboration Support Office for assistance. You should first see your technical representative for help.

1.8  EVERYTHING

The EXPLAIN command provides summaries of the syntax and use of SPIRES commands. There are also explanations of topics like abbreviations and error messages. Almost three thousand explanations are available.

The general form of the command is:

 EXPLAIN term

You may specify the first one or more characters of the term you want explained. If more than one explanation is available for the term you specify, you are shown a list of alternatives and then are given the opportunity to specify one term from the list.

For example, you could see all of the explanations that are available about the TYPE command, and then choose the one explanation that is closest to your interest. This would be done as follows:

 -? explain type
 -Terms with the same stem:
 1. TYPE COMMAND
 2. TYPE COMMAND, ELEMENT-LIST OPTION
 3. TYPE COMMAND, KEEP OPTION
 4. TYPE COMMAND, PAUSE OPTION
 5. TYPE=XEQ STATEMENT
 -WHICH NUMBER? 1
 <-- The explanation for the TYPE command is displayed.

If you put a period (.) after the term you wish explained, you will not be shown a list of terms, and SPIRES will give you an explanation only if the exact term you specified is found.

Many subfiles have explanations of their content and purpose which can be obtained using the command:

If any of the above are preceded by:

the explanation is put into the active file.

1.9  FIXED-REQ statement

This is an alias for the FIXED statement. EXPLAIN FIXED STATEMENT for details.

1.10  NO BUILD SPACE

This error message means that more internal space is needed to build a record under partial processing. Issue the SET SUPERMAX command to increase the space available.

Another possibility is that the currently referenced record was established with the NOUPDATE or RESTRICT option on the REFERENCE command. Trying to update such a record will give you this error message too.

1.11  OUTPUT COMMAND

The OUTPUT command is equivalent to the TYPE command with the IN ACTIVE prefix. EXPLAIN those terms for more information.

1.12  SERIOUS ERROR

When this phrase is appended to an error message it indicates that the command will be aborted because some condition has been seriously violated.

1.13  SET ACTIVE COMMAND

This command is a temporary measure being implemented for RLIN. It is only available in SPIBILD. Batch input comes from the specified ORVYL file in place of the active file. Only EDIT or FIXED files may be specified (LRECL <= 235).

The syntax is:

1.14  SEVERE PASS ERROR

During SPIBILD processing, a single, large goal record containing too much data to be indexed has caused the pass stack to overflow. The limit is about 2000 occurrences being passed to a simple index, not exceeding a total of 32K bytes. See your SPIRES consultant as soon as possible to correct the problem. You should not do any more record entry into the subfile until the problem has been corrected.

1.15  SHOW SEARCH TERMS COMMAND

The SHOW INDEXES command is now used instead of the SHOW SEARCH TERMS command. EXPLAIN SHOW INDEXES for more information.

1.16  SPIRES CONSULTING

You can be directed to SPIRES consulting help by the Help Desk at 725-8181. Type HELP CONSULTING for their available hours. Online, you can issue a HelpSU request.

1.17  STR-NAME STATEMENT

This is an alias for the STRUCTURE statement. EXPLAIN STRUCTURE STATEMENT for details.

1.18  TYPE=PTR STATEMENT

This statement has been replaced by TYPE=LCTR, though TYPE=PTR is still a valid form. EXPLAIN TYPE=LCTR STATEMENT.

1.19  UNRECOGNIZED

The portion of the command following -UNRECOGNIZED: is unrecognizable by the system. Either you have included something not allowed in the command, have a syntax error, or have a spelling error.

1.20  VARYING-REQ statement

This is an alias for the REQUIRED statement. EXPLAIN REQUIRED STATEMENT for information.

1.21  WARNING ERROR

When this phrase is appended to an error message it indicates that some condition has been violated, but not seriously enough to abort the command.

1.22  WYLBUR

The following is meant to be a very brief introduction to WYLBUR.

To create a message, use the COLLECT command. If you want to add to the end of an existing message, say COLLECT END. If you want to start a new message say COLLECT CLEAR. WYLBUR will prompt you with line numbers, after which you can enter text. To abort a line while you are typing it, press the ATTN key. To stop collecting text, press the ATTN key at the beginning of a new line. A scenario follows:

  -? collect
      1.  ?  here is a message for dave.
      2.  ?  here is some more of it,
      3.  ?  and here is thee last line, with a misspelling.
      4.  ?  ***  <--ATTN pressed
  -?

To replace or delete an existing line, use the REPLACE or DELETE command, specifying the line number of the line you want to affect.

  -? replace 3
      3.  ?  and here is the last line, with a new missspelling.
  -?

To insert a new line, use the INSERT command, specifying a line number that is not already in your "active file." For example:

  -? insert 1.1
      1.1 ?  this line is going between lines 1 and 2.
  -? insert 1.11
      1.11?  up to three decimals are allowed in a line number.
  -?

To see what the text you have "collected" looks like, you may use the LIST command, specifying a range of line numbers to be listed (such as LIST 3/5), a particular line number to be listed (such as LIST 4), or a string that is to occur in the line(s) to be listed (such as LIST 'ee'). For example:

  -? list
      1.     here is a message for dave.
      1.1    this line is going between lines 1 and 2.
      1.11   up to three decimals are allowed in a line number.
      2.     here is some more of it,
      3.     and here is the last line, with a new missspelling.
      4.     ***  <--ATTN pressed
  -? list 'sss'
      3.     and here is the last line, with a new missspelling.
  -? list 1/2
      1.     here is a message for dave.
      1.1    this line is going between lines 1 and 2.
      1.11   up to three decimals are allowed in a line number.
      2.     here is some more of it,
  -?

Three other editing commands are available to make changes to characters in a line or lines without replacing the entire line. These commands are: CHANGE, MODIFY, and EDIT. Since the MODIFY and EDIT command are somewhat similar, let's look at those two first.

The EDIT command allows you to change a fixed number of characters in a line to other characters. In no case can you change the length of a line by inserting more characters than you delete, or vice versa. You specify a line number when you issue the EDIT command, and when you have no more edits to make, just press the carriage return. If you want to abort the changes you have made so far, just press the ATTN key in response to the EDITS? prompt. For example:

  -? edit 3
      3.     and here is the last line, with a new missspelling.
     EDITS?      x            y    z
      3.     and xere is the lyst lzne, with a new missspelling.
     EDITS?  <--carriage return is pressed
  -?

The MODIFY command is similar, in that you do editing underneath the line, where you get a "MODS?" prompt instead of the "EDITS?" prompt. But you can change the length of a line with the MODIFY command, since it allows you to insert, delete, and replace characters. In the EDIT command, you could change several parts of a line at once; with the MODIFY command, you can only alter a single section of a line each time. Let's look at the insert, delete, and replace functions of the MODIFY command separately, then combine them.

The INSERT function of the MODIFY command is accomplished by typing an 'i' under the character before which the insert is to take place. You immediately follow this 'i' by the character(s) to be inserted. For example:

  -? modify 3
      3.     and xere is the lyst lzne, with a new missspelling.
   MODS  ?       i-so, dave, -
      3.     and -so, dave, -xere is the lyst lzne, with a new missspelling.
      3.     and -so, dave, -hxere is the lyst lzne, with a new missspelling.
   MODS  ?  <--carriage return is pressed
 -?

The REPLACE function of the MODIFY command allows you to replace, on for one, a string of characters with another string of characters. You simply specify an 'r' under the character at which you wish the replacement to start. For example:

 -? modify 3
      3.     and -so, dave, -hxere is the lyst lzne, with a new missspelling.
   MODS  ?                                rlast line
      3.     and -so, dave, -hxere is the last line, with a new missspelling.
   MODS  ?  <--carriage return is pressed
 -?

The DELETE function of the modify command allows you to delete a group of characters from the line you are modifying. To do this, you type a 'd' under each character you want deleted. Note that the deleted characters must be in a contiguous string, that is, you can't delete a character from column 5 and a character from column 25, but only all of the characters from column 5 through 25. For example:

 -? modify 3
      3.     and -so, dave, -hxere is the last line, with a new missspelling.
   MODS  ?       dddddddddddd
      3.     and hxere is the last line, with a new missspelling.
   MODS  ?        d
      3.     and here is the last line, with a new missspelling.
   MODS  ?  <--carriage return is pressed
 -?

It is possible to specify any two of these functions on the same line after the MODS ? prompt, so long as the block of characters you want to modify is "contiguous." For example:

 -? modify 3
      3.     and here is the last line, with a new missspelling.
   MODS  ?                        ddddiof the lines
      3.     and here is the last of the lines, with a new missspelling.
   MODS  ?  <--carriage return is pressed
 -?

In this example the "ddddiof the lines" specifies that four characters above the "d"'s are to be deleted, and the string "of the lines" is to be inserted in the hole that they left.

Just as you can specify a string, such as "missspelling", on a LIST command, you can specify a string instead of a line number in the MODIFY and EDIT commands. Then, all lines in which the string you specify appears will be prompted for modifications, one by one.

The CHANGE command is quite powerful, but only its simplest form is shown here. Basically, the CHANGE command allows you to specify that all occurrences of one string are to be changed to another string. In a more advanced form, you can restrict those changes to a particular range of lines, or to certain lines that contain other strings. Here are some examples:

 -? change 'ss' to 'xx '
      1.     here is a mexx age for dave.
      3.     and here is the last of the lines, with a new mixx spelling.
 -? change 'xx ' to 's' in 'spelling'
      3.     and here is the last of the lines, with a new misspelling.
 -? change 'xx ' to 'ss' in 1
      1.     here is a message for dave.
 -?

There is also a very useful feature of the Stanford system that allows you to send a message to any user who is logged on. This message appears immediately at the user's terminal. The command is called the "TO" command; it sends the one line message you type, which is typed on the same line as the TO command. To use the command, follow the word "TO" with the account (in the form UUU$GQ) of the person for whom the message is intended. For example, to send a message to account SPI$GA, type

 -? to spi$ga  hi john, are you there?

If you get the message

 SPI$GA: NOT LOGGED ON

then the account (SPI$GA in the above example) is not currently logged onto the system. If the message goes through, you will get a command prompt. To see if a particular account is logged on, use the SHOW LINE command. For example:

 -? SHOW LINE SPI$GA

This would tell you whether account SPI$GA was logged on.

1.23  X+>

This is one form of the SPIRES standard prompt.

 (1) X means a protocol is active, and you are in a BREAK XEQ state.
 (2) + means there is a Global FOR in effect.
 (3) > means UPLOW case in effect.

1.24  X+?

This is one form of the SPIRES standard prompt.

 (1) X means a protocol is active, and you are in a BREAK XEQ state.
 (2) + means there is a FOR command in effect.
 (3) ? means UPPER case in effect.

1.25  X->

This is one form of the SPIRES standard prompt.

 (1) X means a protocol is active, and you are in a BREAK XEQ state.
 (2) -- means normal command mode, no FOR in effect.
 (3) > means UPLOW case in effect.

1.26  $ACTIVE VARIABLE

The $ACTIVE variable, if non-null, contains the name of the dataset associated with the current active file. This is usually the name given by the "USE" command associated with the current active file.

2.1  X-?

This is one form of the SPIRES standard prompt.

 (1) X means a protocol is active, and you are in a BREAK XEQ state.
 (2) -- means normal command mode, no FOR in effect.
 (3) ? means UPPER case in effect.

2.2  RECORD NAME NOT VALID

The RECORD-NAME value specified in the format definition does not match the name of any record-type of the given file.

2.3  INVALID SPECIFIC FILE DATA

A value has been supplied in a general file format (GEN-FILE) or non-file format (GLOBAL) that is valid only when the specific file and record name are known. This diagnostic may be caused by:

1) giving RECORD-NAME when the FILE is not known; or

2.4  FRAME DIMENSIONS TOO LARGE

The dimensions of the given frame are larger than the maximum size allowed for a frame. The value of "nrows" times the value of "ncols" must not exceed 65,535 (64K-1).

2.5  REMELEM ILLEGAL IF USAGE = FULL

The REMELEM statement can only be coded in an input frame with a usage of MERGE. The value of the USAGE statement must not be FULL.

2.6  FILE IN FORMAT DEF DOES NOT EXIST

The SPIRES file named by the FILE statement of the format definition does not exist. The name given must be the file name (not a subfile name), which begins with the file owner's account number, e.g., "GQ.DOC.ALMANAC".

2.7  DISPLAY ATTRIBUTES ERROR

The DISPLAY statement in the given label-group has duplicate attribute types. For example, two EMPHASIS values may have been specified.

2.8  INVALID EMPHASIS LEVEL

The value coded for the EMPHASIS attribute in the DISPLAY statement is invalid. The EMPHASIS level must be between 0 and 63.

2.9  TOO MANY UPROCS IN LABEL-GROUP

An internal compiler table used to collect UPROC values within a label-group has been filled up. A simple way to solve this problem is to split the UPROC values up between two or more label-groups (while maintaining their order of execution).

2.10  NO FORMATS DEFINED

The format definition record contains no occurrences of the FORMAT-DEC structure (i.e., no FORMAT-NAME statements are coded).

2.11  INVALID BREAK CHARACTERS INPUT

A BREAK value of TRUNC or NONE was supplied along with a second BREAK character.

2.12  FILE DATA NOT ALLOWED

The format has been defined as a non-file (GLOBAL) format, since no FILE or RECORD-NAME statements were given, yet file accesssing is being attempted in the format. Specifically, neither DATA nor STRUCTURE is allowed as a value for the FRAME-TYPE statement. GETELEM, PUTELEM, REMELEM, IND-STRUCTURE, SUBTREE and BREAK-ELEM are not allowed in the frame definitions either.

2.13  LONG VARIABLE HAS OCC > 1

A variable coded for a given vgroup has a LEN > 253 and has an OCC value greater than one, a combination that is not allowed.

2.14  BAD LEN FOR VARIABLE TYPE

A LEN value coded for a variable is invalid for the given variable type.

2.15  STATIC VARIABLE NOT FOUND

A static variable specified in the given format could not be located in the allocated static vgroups.

2.16  VARIABLE NOT SUBSCRIPTED

A subscript was supplied for a singly occurring static variable.

2.17  SUBSCRIPT TOO LARGE

The subscript supplied for a static variable was larger than the number of occurrences allowed for the variable.

2.18  UNKNOWN VARIABLE TYPE

An invalid type was given for a static variable.

2.19  VGROUP TABLE TOO LARGE. TRY DYNAMIC TYPE

The total length to be allocated for a variable group is larger than the system maximum. Try defining the vgroup variables with TYPE=DYNAMIC, or split the vgroup into several vgroups. The maximum size of the data in any one vgroup is 64K bytes. The maximum number of vgroups that can be in use by a format or protocol is 16.

2.20  MORE THAN ONE SOURCE VALUE IN LABEL GROUP

More than one source has been specified for the given label group. Unless subgoal processing is being requested, only one of the statements GETELEM, VALUE, IND-FRAME, or GETDATA may appear within a single label group.

Under subgoal processing, both a VALUE and IND-FRAME statement may appear. In addition, the indirect frame that's called must include either a SUBFILE or a SUBTREE statement. If neither appears, SPIRES will display this message, since it does not understand that you want subgoal processing.

2.21  INPROC ERROR (DIAGNOSTIC MESSAGE)

These messages are produced whenever one of several types of errors is discovered in an INPROC rule string. If the diagnostic appears, other data will probably appear, showing the part of the string that failed to parse properly, or that failed specific tests.

Possible diagnostic messages are:

 INVALID ACTION SYNTAX
 INVALID ACTION CODE
 INVALID ACTION GROUP
 AET BUILD TABLE OVERFLOW
 BAD CHAR STRING LENGTH
 INVALID NUMBER FIELD
 BAD :P1 PARAMETER VAL

2.22  OUTPROC ERROR (DIAGNOSTIC MESSAGE)

These messages are produced whenever one of several types of errors is discovered in an OUTPROC rule string. If the diagnostic appears, other data will probably appear, showing the part of the string that failed to parse properly, or that failed specific tests.

Possible diagnostic messages are:

 INVALID ACTION SYNTAX
 INVALID ACTION CODE
 INVALID ACTION GROUP
 AET BUILD TABLE OVERFLOW
 BAD CHAR STRING LENGTH
 INVALID NUMBER FIELD
 BAD :P1 PARAMETER VAL

2.23  FMTPROC ERROR (diagnostic message)

The format compiler generates internal processing rule strings similar to INPROC or OUTPROC strings. When errors occur during string generation, messages similar to those for INPROC ERRORS may be displayed.

The diagnostic

 PROCESSING RULE TABLE OVERFLOW

indicates that the total size of all label groups for all frames in a given format is too large. The user should split the format into two formats (using the load format capability) or otherwise decrease the overall format size. The number of label groups, their size, and the length and complexity of processing rules coded in the format contribute to the "size" of the format. Reducing any of these may eliminate the diagnostic.

2.24  <FRAME name> IS NOT DEFINED BY A FRAME-ID

The frame whose name is given in the FORMAT-DEC structure of the formats definition record is not defined in the FRAME-DEF structure with a matching FRAME-ID value.

2.25  INDIRECT FRAME-ID NOT FOUND

The frame specified could not be located among the frames previously compiled for this format or was not marked as an indirect frame-type. If the name is correct, make sure that frame was compiled before the frame that called it.

3.1  VALUE ILLEGAL FOR OUTPUT DIRECTION

An invalid label group statement was coded for an output frame (e.g., GETDATA, PUTELEM).

3.2  INVALID ELEM MNEMONIC

The value given in either the LABEL, GETELEM, PUTELEM, IND-STRUCTURE or REMELEM statement is not a valid mnemonic for a data element of the current record-type or SUBTREE.

3.3  INVALID SCAN OPTION

A scan option contained invalid syntax.

3.4  VALUE ILLEGAL FOR INPUT DIRECTION

An invalid label group statement was coded for an input frame (e.g., GETELEM, PUTDATA, TITLE).

3.5  ELEM IS NOT STRUCTURE OR WITHIN SUBTREE

A data element specified as a structure element for SUBTREE or IND-STRUC is not a structure element.

3.6  STATIC GROUP NOT FOUND

A static variable group specified in an ALLOCATE statement could not be located. If the static group is not defined as part of the format record, the definer should check that the record was added to the static variable subfile VGROUPS and was compiled without error. The user should also validate that the spelling of the VGROUP name was correct and that account number prefixes are included as appropriate.

3.7  LABEL TABLE OVERFLOW

An internal table used for collecting labels used as branch values is not large enough for the current application. If this diagnostic appears during format compilation, please report it to your SPIRES consultant.

3.8  UNDEFINED BRANCH TERM

A value given as the branch point in a JUMP or GOTO Uproc is not a valid value. The value must correspond to a LABEL value within the current frame.

3.9  JUMP ONLY IN LABEL GROUP

A JUMP, GOTO, or ASK Uproc was coded in the FORMAT-DEC structure. These statements are only allowed within frame definitions.

3.10  INVALID BREAK-LEVEL

The value given in the summary information setup for a BREAK-LEVEL number was greater than the highest allowed by SPIRES, which is 10.

3.11  INVALID PUTELEM USAGE

A PUTELEM or REMELEM value was coded within a label group that also specified an IND-STRUCTURE value. That is not allowed.

3.12  MISSING BREAK-LEVELS

BREAK-LEVEL values given during summary frame information setup must form an ascending sequential set of numbers starting at BREAK-LEVEL=1.

3.13  SORT ARRAY TOO LARGE

A sort space declaration is too large. Currently the maximum size value is 64 (for 64K bytes).

3.14  ELEM ILLEGAL IN FRAME TYPE

Certain frame types are expected at times when record data elements may or may not be available. Therefore, GETELEM, PUTELEM, and IND-STRUCTURE should not be coded for these frames (HEADER, FOOTER, INITIAL, ENDING).

3.15  INVALID RESTRICTIONS DATA

The USAGE entry given for the frame was not appropriate for the direction of the frame, e.g., "USAGE = DISPLAY" was coded for an input frame.

3.16  WRONG DIRECTION FOR INDIRECT FRAME

The frame specified by an IND-FRAME statement does not have the same DIRECTION value as the current frame.

3.17  RECORD-NAME NOT SPECIFIED

The FILE name was defined in a format definition record, but no RECORD-NAME statement was included.

3.18  TOO MANY VALUES IN EXPRESSION

An expression coded in a UPROC or used to specify a value to be computed during format processing has too many parameters. This diagnostic often results from failure to enclose a string in apostrophes.

3.19  EXPRESSION TABLE OVERFLOW

The expression processor table can accept no more data. Too many arithmetic or string concatenation expressions or function calls exist in the source. Unless you can condense the code by combining or eliminating some of the expressions, you will continue to get this error. For formats, you may wish to split off some code into a separate load format.

3.20  MES must be 0, 1, 2 or 3

An invalid value was coded for a SET MESSAGE Uproc. Valid message level codes are in the range 0 through 3.

3.21  SET REPORT IN STARTUP FRAME ONLY

The SET REPORT Uproc is only allowed to be coded in the startup frame. Alternatively, the user may issue the SET REPORT command once the format is set.

3.22  WARNING: DUPLICATE LABEL NAME

The frame has two or more label groups with the same name. This is allowed as long as you do not use the name in JUMP or GOTO or XEQ PROC Uprocs elsewhere in the frame.

3.23  REPORT VALUE NOT INTEGER

A SET Uproc is trying to assign a non-integer value to one of the report mode integer variables, such as $HDRLEN, $COLUMNS, $LINEPP, etc.

3.24  BREAK LEVEL ONLY ALLOWED IN SUMMARY FRAME

The BREAK-LEVEL statement is only allowed in the frame declaration section for frames declared FRAME-TYPE = SUMMARY.

3.25  COMPILED RECORD TOO LARGE

Although the format definition compiled properly, it is too large in its compiled version for the FORCHAR subfile. Try moving some of the definition into load formats, or, if possible, make the format definition smaller, combining label groups, eliminating unnecessary Uprocs, etc.

4.1  SUBTREE RECORD NAME NOT FOUND

The record-name given in the SUBTREE statement could not be found by re/compile processor. Be sure the record-type exists and that the name is spelled correctly.

4.2  ILLEGAL USE OF PATH VALUE

The PATH option used on a GETELEM, IND-STRUC or BREAK-ELEM statement was improperly used.

4.3  ILLEGAL USE OF FLUSH UPROC

The FLUSH Uproc is not allowed in input frames nor in the frame declaration section of a format definition. It may only be in the frame definitions of frames of direction OUTPUT.

4.4  INVALID IND STRUCTURE CALL TO NON REFERENCE FRAME

In a frame of USAGE = REFERENCE, a label group containing an IND-STRUCTURE and an IND-FRAME statement has called a frame that does not have USAGE = REFERENCE coded. That combination is not allowed. If you want to retrieve element values from the structure, you must code REFERENCE for the USAGE statement for that indirect frame.

4.5  EXPLAIN SF COMMAND

This command has been replaced by the SHOW SUBFILE DESCRIPTION command. The purpose of these commands is to provide the user with a description of a subfile, its structure and contents. This description must be supplied by the file owner.

4.6  @

The "at sign" (@) may be used in four different contexts in SPIRES, with four different meanings. They are:

For example,

tells SPIRES to display the COMMENT element within the PHONE structure within the DEPARTMENT structure of the goal record. Any other COMMENT element in the goal record (i.e., others not on that structural path) would not be displayed. This form often appears in TYPE, SET ELEMENTS, SET FORMAT $REPORT and SET FORMAT $PROMPT commands, but it may appear elsewhere too.

indicating that all elements with the name COMMENT should be set, along every structural path in the goal record. (By default, only the occurrences of first COMMENT element found by traversing the structural paths from the record level down is set.)

Records satisfying the WHERE-clause criteria must have at least one occurrence of the structure containing GRADE and SCHOOL that satisfies those conditions. If the at sign is omitted, a record containing an occurrence of the structure where GRADE is 12 and another occurrence where SCHOOL is "Madison High" would satisfy the WHERE clause. For more details, [EXPLAIN WHERE CLAUSE, SAME-STRUCTURE PROCESSING.]

Instead of a specific value to compare ADD.DATEs to, SPIRES is asked to compare each record's ADD.DATE with its UPDATE.DATE. EXPLAIN INTER-ELEMENT RELATIONS for more information.

4.8  USE OF @-SIGN IGNORED

The @-sign was used to indicate 'same structure' when:

 1) data elements were not in the same structure.
 2) record level elements were involved.
 3) logical OR was used as a connective.
 4) no logical operator was known because of parentheses.
 5) the @element was a structure element.
 6) the element preceeding @element used OCCURS option.

4.10  COMBINED INDEX

Combined indexes are now called "compound indexes". EXPLAIN COMPOUND INDEX for more information.

4.11  VIEW TABLE ERROR

RE/compile has detected one of the following errors in the view definition tables:

4.12  DEQUEUE ALL COMMAND

The DEQUEUE ALL command may not be issued outside of Global FOR processing. This command has been replaced by the ZAP DEFQ command. EXPLAIN ZAP DEFQ for information about that command.

DEQUEUE ALL is still valid within Global FOR.

EXPLAIN DEQUEUE COMMAND, IN GLOBAL FOR for more information.

4.13  DUPLICATE ALLOCATE STATEMENT

The format definition contains more than one ALLOCATE statement allocating the same vgroup. The duplicate statements should be condensed into one statement.

4.15  PRISM

Prism is an online collection of files and services for Stanford's administrative community. Prism offers searching and, for many files, reporting and data entry as well -- for instance, the Stores Orders file lets participating departments enter orders for Stores items online.

To enter Prism, type the command PRISM at the command line. Within Prism, you can type SELECT to see a menu of current files and services, or go right to the file you want by typing SELECT followed by its name. At any time in Prism, you can type HELP for advice on your current options, or OPTIONS for a complete list of your available options.

For general introductory information, use the EXPLAIN command. For information on creating your own Prism file, see the help screens in "Prism Applications" and the "Screen Definer".

4.16  USERPROC ERROR MESSAGES

Userprocs can set the processing-rule error flag explicitly, using the SET ERROR Uproc (described in the next section). But unforseen problems can occur with a Userproc that will also cause the error flag to be set. The list below describes the kinds of errors that can happen, preceded by a "message" that appears as part of the system error message:

4.17  WARNING: STRING WITH NO RELATION

The warning message "String with no relation" appears after commands testing compound conditions, when one of the conditions lacks a relational operator. For example, the following statement causes this warning message:

With no equals sign in front of it, "jones" is a string with no relation, which SPIRES interprets as always being "true" -- so the THEN statement would always execute no matter what the value was for #NAME. The statement should be rewritten in one of the two following ways:

 -> if #name = martin or #name = jones then ...
 -> if #name = martin or = jones then ...
 <--(note the equals sign)

For more information, EXPLAIN IF...THEN COMMAND.

4.18  BATCH COMMAND IN SPIBILD

SPIBILD's BATCH command is being phased out. It has been replaced by two sets of commands, the choice being determined by the type of work you want to do.

To batch multiple records into a subfile using the standard SPIRES format, you use these SPIBILD commands:

ESTABLISH subfile.name
INPUT BATCH

You can use the EXPLAIN command to find out about those commands individually, or EXPLAIN INPUT BATCH PROCEDURE IN SPIBILD to learn how to use them together.

To add multiple new records to a subfile using a custom format, you use these SPIBILD commands:

SET FORMAT format.name
ESTABLISH subfile.name
INPUT ADD

You can also use the EXPLAIN command to find out more about them; to learn how to use them together, EXPLAIN INPUT ADD PROCEDURE IN SPIBILD.

The BATCH command will continue to work in SPIBILD for the time being, but you should begin using the ESTABLISH and INPUT commands instead.

4.19  MERGE COMMAND IN SPIBILD, OUTSIDE OF GLOBAL FOR

SPIBILD's MERGE command outside of Global FOR is being phased out. It has been replaced by the ESTABLISH and INPUT MERGE commands. The MERGE command under Global FOR in SPIBILD continues to be supported.

To merge data into multiple records of a subfile using a custom format, where the keys of the records to be updated are contained within the input data, you use these SPIBILD commands:

SET FORMAT format.name
ESTABLISH subfile.name
INPUT MERGE

You can use the EXPLAIN command to find out more about these commands; to learn how to use them together, EXPLAIN INPUT MERGE PROCEDURE IN SPIBILD.

The MERGE command will continue to work in SPIBILD outside of Global FOR for the time being, but you should begin using the ESTABLISH and INPUT MERGE commands instead.

4.20  RESULT/STACK MUST BE CLEARED

Either

If #1, then you must CLEAR STACK before issuing the STACK command, or, you can convert the original stack to have keys via FOR STACK//STACK ALL, then issue additional STACK commands as necessary.

If #2, and you wish to establish search modifiers, use the SHOW SEARCH MODIFIER command to determine any existing modifiers, then enter CLEAR RESULT and retype the SET SEARCH MODIFIER command.

4.21  ERROR IN VGROUPINIT FUNCTION

This error occurs when SPIRES cannot locate the vgroup named in the $VGROUPINIT function. It probably indicates that the name has been misspelled, or that the appropriate account number prefix has been omitted from the vgroup name. EXPLAIN $VGROUPINIT FUNCTION for more information.

4.22  ABNORMAL BATCH INPUT TERMINATION

The input command failed to read all the data from your active file during execution. This is most likely caused by an extra semicolon in the input, perhaps following a REMOVE command. For example, an input line like "REMOVE 32; ;" would cause this error, because of the extra semicolon.

4.23  DID NOT COMPILE PROTOCOL

The named protocol was not compiled due to errors listed prior to this message.

4.24  DUPLICATE LABEL

Multiple label groups share the same name. All label groups in the protocol must have different names for the compilation to succeed.

4.25  LABEL TOO LONG

The label's name exceeds 16 characters, the maximum label name length.

5.1  UNDEFINED LABEL

A JUMP, GOTO, or XEQ PROC command has named a label group that doesn't exist.

5.2  NO ACCOUNTS DEFINED

This error message means that none of the accounts named in the SET METACCT command you just issued have given your account any METACCT access to SPIRES subfiles. It may mean that no records exist in the METACCT subfile for those accounts, or that records exist but none gives you access.

5.3  INVALID COMMAND OPTION: UPDATE

SPIRES gives you this message when you are trying to use the ADDUPDATE command in a situation where it is not valid. The UPDATE portion of the command is ignored; SPIRES will try to ADD the record.

ADDUPDATE is not allowed when either secure switch 10 or 13 is set for the selected subfile, or if any of the elements in the subfile are designated as HIDDEN or NOUPDATE elements to you.

5.4  NON UNIQUE SUBFILE REQUEST IN SUBGOAL

The specified subfile name was not unique. Two or more subfiles with that same name are available to your account. You can precede the subfile name with the file name in the form "&gg.uuu.filename" to identify a specific one.

5.5  LIMITS IN SPIRES

Below are listed some of the important limits in SPIRES. It isn't a complete list, but if you know of a limit that you would like to see included in this list, please suggest it to your SPIRES consultant.

-- Device Services --
- Maximum size device area 16K.
-- Searching --
- 40 search relations in a FIND/AND/NOT/OR command (39 logical ops).
- Large search limited to 1.5 Meg bytes in any out-of-core segment.
- No more than 20 large search segments.
- Large search aggregate maximum of 4 Meg bytes.
- No more than 256 bytes of values in WHERE clause.
- 30 expressions maximum in WHERE clause (EXPLAIN WHERE CLAUSE
 OVERFLOW).
-- Adding and Updating --
- 240 byte maximum record key size.
- 255 maximum LENGTH allowed for fixed length ELEMENTs.
- MAXVAL maximum length element value.
- 64K maximum size for all occurrences of an element or structure.
- 256K bytes in SPIRES pass stack
-- General Programming --
- 32 active paths (SELECT, FORMAT, VGROUP, or subgoal).
- 170 ORVYL devices (e.g., data sets) attached at once.
- 32 active filters (SET FILTER; CLR FILTER) per selected subfile.
- 56 active dynamic elements (DEFINE ELEM; DECLARE ELEM) per
  selected subfile.
- 50 subfile subgoals open at one time
- 120 nested protocols levels (XEQ FROM; ..name; XEQ PROC label).
- 160 bytes maximum input length from terminal
- 235 bytes maximum output length to terminal or Active file
- 200 transactions in a transaction group
- 8 distinct files in a transaction group
-- Sets --
- 16 sort fields
- 64 direct fields for direct sets.
- 255 maximum length of a value stored in a set.
- 255 maximum length for a dynamic element value.
- about 1000 bytes of sort data per record, as named in ELEM list.
- about 5500 bytes for the set record, including direct set data.
-- File Definition --
- 32 characters maximum SUBFILE-NAME length.
- 23 characters maximum FILE name length, excluding suffix.
- 64 RECORD-NAMEs per FILE.
- 15 tree or slot data sets per file (RECn, n=1-9, A, B, C, D, E or F).
- 8 slot record-types per file.
- 88 INDEX-NAMEs per GOALREC-NAME (that actually pass).
-- Record Definition (per RECORD-NAME) --
- 16 bytes for maximum element name length, composed of alpha-
   numerics, period, dash, underscore and dollar sign.
- 256 elements per record or structure, of which one may be KEY.
- 127 structures per RECORD-NAME, counting TYPE = STRUCTURE;
- 256 bytes maximum size of the Fixed section at record-level or
  in structure
- 10 structural element depth (s1@s2@s3@s4@s5@s6@s7@s8@s9@e10).
- 31 OUTPROC, SEARCHPROC, PASSPROC rules per element or term.
- 31 INPROC rules if no INCLOSE rules, otherwise 0 to 15 INPROC
  rules and 1 to 15 INCLOSE rules per element.
- 12K characters in element name table of any record-type.
-- Formats --
- 100 FRAME-NAME statements per FORMAT-NAME statement.
- 512 labels per frame.
- 15 subtrees per frame.
- 8 LOAD-FORMATs active per SET FORMAT; deactivate by UPROC=UNLOAD;
-- File Management --
- 16 block RECn and DEFQ tree depth.
- 65,536 blocks per tree.
- 2K or 4K bytes per block depending on file system.
- 65,536 blocks in DEFQ data set (extended DEFQ can have 434,176 blocks).
- 253 slots per slot-block.
- Approximately 250 keys per tree block, minimum of 1.
- 434,176 blocks in an extended tree.
- 425,984 blocks per Residual in ORVYL, with 13631488 maximum allowed
  for special large Residual (RLIN).
- 63 maximum entries in a residual block.
- 30 extra residuals allowed.
- 120,000 byte maximum record size.
  64K byte maximum per element
- 80K blocks maximum for an exception file

5.6  COMPILE TERMINATED

The COMPILE or RECOMPILE command you issued did not succeed. Other messages preceding this one should tell you why.

5.7  NO RECORDS COMPILED

This message occurs when you try to compile a file definition that contains an EXT-REC statement. The EXT-REC statement refers to a file definition that contains no record definitions, so this message is telling you that the compiler compiled no record-types from it. The file definition named in the EXT-REC statement must contain at least one record definition for the compilation to succeed.

5.8  WARNING: IMMEDIATE INDEX IS ALSO IMMEDIATE GOAL

The named goal record-type, which you have defined to have at least one immediate index, is also defined as an immediate index of another goal record-type. This is allowed, but can be dangerous. Be aware that any immediate indexing from the other goal record-type that creates, modifies or removes records in the current goal record-type, will not lead to immediate indexing of those records in the current goal record-type. In other words, immediate chain passing cannot occur; however, all the appropriate indexing will be completed at the next SPIBILD processing of the file. Because this can lead to confusion (some records in the deferred queue may have been immediately indexed; others may not), it is not recommended.

5.9  WARNING: INFORMATION PACKET NOT FOUND: <NAME>

The element or index shown at the end of the message was defined with a named reference to an element or index information packet that re/compile was unable to find.

Perhaps the most common occurrence of this error is when you are compiling a file definition whose record definitions are defined in an EXT-REC file definition, whose element information packets are defined at the end of the linkage section. EXT-REC only retrieves the record definitions themselves, so the information packets get left behind and hence are not found by the compiler. The packets should either be moved into the main file definition or into an EXTDEF record.

5.10  WARNING: LARGE ENTRIES IN <TABLE-NAME>

This message is warning you that an internal table, named in the message, is at 90 percent capacity or larger. Depending on what table it is, you may need to consider other programming approaches if the record you are compiling will be getting much larger.

5.11  WARNING: RESIDUAL VALUE IS INVALID, RESET TO 1

The value entered in the RESIDUAL statement in the file definition is not valid; the compiler is behaving as if you had specified the value "1". EXPLAIN RESIDUAL STATEMENT for appropriate values.

5.13  WARNING: SUBFILE MAY NEED TO BE RE-ESTABLISHED

The SPIBILD command you just issued should normally be issued prior to the ESTABLISH command in order to take effect. The message is telling you that you may need to issue the ESTABLISH command again if you want the previous command to be effective.

5.14  WARNING: TYPE INCONSISTENT WITH INPROC'S TYPE

The definition for the named element has both an INPROC statement and a TYPE statement. The type specified in the TYPE statement is not consistent with the type of value created by the INPROC. For example, if the element is defined with the $PACK Inproc rule (which creates a packed-decimal value) but the TYPE statement defines the element as INT (integer), you would get this message. Whether or not the inconsistency is significant is up to you, but it's offbeat enough that the compiler warns you about it.

5.15  FULL-SCREEN EXPLAIN

The full screen EXPLAIN facility allows you to select explanations from a menu of items, easily move back and forth among items in a menu and select items for viewing.

The PF keys are only active when displayed and have the following meanings:

PF1 -- HELP Displays this help screen.
PF2 -- RETURN Return to the previous item or menu.
PF3 -- END Quit full screen help.
PF4 -- BWD Scroll backward a screen.
PF5 -- FWD Scroll forward a screen.
PF6 -- NEXT Move to next item in the menu.
PF7 -- UP Scroll backward (up) half a screen.
PF8 -- DOWN Scroll forward (down) half a screen.
PF9 -- PREV Move to previous item in menu.

PF8 becomes TOP when you scroll to the end of an item. This allows you to start over at the top of the item, rather than scroll back.

You may tab or move the cursor to highlighted text and press the RETURN key to select the highlighted item. At the command prompt you may enter the commands which correspond to the PF keys or EXPLAIN <Term> to explain another term. If the command line is empty, RETURN acts like PF5.

5.16  $SYSXEQ FUNCTION

[This function is for SPIRES system programmers; it is not for general use.]

The $SYSXEQ function will execute the Userproc of a system RECDEF record. $SYSXEQ has a minimum of one argument, a name associated with the RECDEF key. Each RECDEF is defined as:

ID = $FUN.function;
USERPROC = PROD;
UPROC = uprocs...;
USERPROC = TEST;
UPROC = uprocs...;

The two Userprocs correspond to Production and Test versions controlled by the setting of the TMACRO flag (SET NO/TMACRO). In most cases, the TEST version is coded to be the same as the PROD version.

USERPROC = TEST;
UPROC = XEQ USERPROC PROD;
USERPROC = PROD;
UPROC functional definition;
UPROC = RETURN;

For example: $SYSXEQ(AGEOUT,'September 4, 1974') invokes the function defined by $FUN.AGEOUT. The second and subsequent parms of $SYSXEQ are passed to the function by $SETPARMS, so $FUN.AGEOUT would check $PARMCNT and retrieve the parameters with $GETPARMS. Any user-defined $SETPARMS are temporarily saved aside, and are restored when the $SYSXEQ function finishes executing.

Each function of $SYSXEQ returns a string answer with SET VAL. If no value is returned, or an error occurs before a value is returned, then a null answer is assumed. The function can use $ISSUEMSG to produce error messages, and can use $SYSEVAL and $ISSUECMD as needed. Since $FUN.function is a system-defined RECDEF, only programmers with appropriate access can define $SYSXEQ functions.

Here are two examples: AGEIN and AGEOUT.

age = $SYSXEQ(AGEOUT,date)
date = $SYSXEQ(AGEIN,age)
"age" has the form: years:months:days
"date" returned by AGEIN has the form: ccyy.mm.dd
-> SHOW EVAL $SYSXEQ(AGEOUT,'September 4, 1974')
18:3:13
-> SHOW EVAL $SYSXEQ(AGEIN,'18:3:13')
1974.09.04

Many of the $SYSXEQ pseudo-functions are defined within SPIRES as automatic calls to these USERPROCs. So instead of: $SYSXEQ(AGEIN,'09/04/1974'), you can issue: $AGEIN('09/04/1974') and get the same result.

5.16a  $SYSXEQ FUNCTIONS

All of these functions are known to Spires by their name, but actually the $SYSXEQ function executes the Userproc of a system RECDEF record with keys that start with $FUN.name, so these are all aliases. [See 5.16.]

There are three basic groups of functions: TRIG, Prism, and Utility functions. The TRIG functions are:

Each of the non-ARC functions takes either a single parm in Degrees, or takes two parms, the first of which is in Radians, and the second being a string starting with R, such as R, Rad, Radians.

These functions return a number in string form. Here are some examples:

    $sin(45) = 0.707106781
    $cos(60) = 0.5
    $tan(1,Rad) = 1.55740772

The ARC functions take one of those answers as the first parameter, and returns either Degrees or Radians (depending on the second parm). Here are some examples:

   $arcsin(0.707106781,Rad) = 0.78539816
   $arctan(1.55740772,Rads) = 0.99999999
   $arccos(0.5) = 60

These functions are primarily used by Prism/Folio. The documentation for these functions is contained in COMMENTS at the start of each $FUN.name in the RECDEF subfile. Just SELECT RECDEF and DISPLAY $FUN.name to see the COMMENTS associated with any of these $name functions.

Lastly, the following are Utility functions. Both $AGEIN and $AGEOUT are described in section 5.16. [See 5.16.] The remaining functions have separate explanations.

5.17  FILE MUST HAVE A CKPT DATA SET

The command you have issued will not work because the file of the selected subfile does not have a checkpoint (CKPT) data set. One can easily be created by first processing the file in SPIBILD and then recompiling the file definition in SPIRES, which must be done by the file owner.

5.18  SET NOSPIRES SYMBOLS COMMAND

SET SPIRES SYMBOLS is a condition that is the default, usually in effect. It tells SPIRES to look at the Shared-Symbol table to find items like system formats, vgroups, etc.

The SET NOSPIRES SYMBOLS command causes SPIRES to ignore the table and will read the items directly from the SPIRES system data bases. Name substitutions that may occur under SET SPIRES SYMBOLS (for example, changing $REPORT to its internal name) will not take place under SET NOSPIRES SYMBOLS.

The SET NOSPIRES SYMBOLS and SET SPIRES SYMBOLS commands are meant for use by SPIRES system programmers, and are only documented in the EXPLAIN file.

5.19  SET SPIRES SYMBOLS COMMAND

SET SPIRES SYMBOLS is a condition that is the default, usually in effect. It tells SPIRES to look at the Shared-Symbol table to find items like system formats, vgroups, etc.

The SET NOSPIRES SYMBOLS command causes SPIRES to ignore the table and will read the items directly from the SPIRES system data bases. Name substitutions that may occur under SET SPIRES SYMBOLS (for example, changing $REPORT to its internal name) will not take place under SET NOSPIRES SYMBOLS.

The SET NOSPIRES SYMBOLS and SET SPIRES SYMBOLS commands are meant for use by SPIRES system programmers, and are only documented in the EXPLAIN file.

5.20  PHANTOM ELEMENT MUST BE TYPE STRUCTURE

If you are using the DECLARE ELEMENT command to create a phantom structure, you must include TYPE = STRUCTURE in the definition.

5.21  TYPE STRUCTURE MUST BE PHANTOM

The only kind of structure you can define with the DECLARE ELEMENT command is a phantom structure. You must include the PHANTOM structure statements in the definition.

5.22  $SEARCH.UNIVID PROC

$SEARCH.UNIVID(searchterm,key.index.type)

searchterm -- the name of the index in the University Id file

key.index.type (default = GOAL) -- This literal parameter specifies whether the index on which the indirect link is based (your index of record keys) is a goal-index (GOAL) or a regular simple index (SIMPLE).

Examples: $SEARCH.UNIVID(NAME)
          $SEARCH.UNIVID(NAME,GOAL)

5.23  $SYSEVAL FUNCTION, UNIX EMULATOR

--------------------------------------------------
Function: $SYSEVAL
Purpose: Pass expression to system for evaluation
--------------------------------------------------

The $SYSEVAL function lets you pass an expression (for instance an environment variable or function) to the system to be evaluated. The function returns a string value that is system's evaluation of the expression. [EXPLAIN VARIABLE VALUE ASSIGNMENT.]

The form of the function is as follows:

    $SYSEVAL(expression)

where "expression" represents an expression recognizable to the system.

The returned value will be truncated to 158 characters.

Here is an example of the $SYSEVAL function:

   -> show eval $syseval('env:home')
   /u/li/guertin

In this case $SYSEVAL asks to evaluate the environment variable HOME.

Uses for $SYSEVAL

$SYSEVAL can be a handy way to pass values on to SPIRES that the end-user or application has stored in environment variables earlier in the session. (These values may well have been established before SPIRES was even called).

There are many other possible uses as well:

    -> if $syseval(lines) ~= 0 then ...   <---(tests for presence
                                              of an active file)

$SYSEVAL and the $MSGINT Variable

The system variable $MSGINT records the success or failure of $SYSEVAL. When the function succeeds, $MSGINT is set to 0 (zero); if it fails, an error message is returned and $MSGINT is set to a non-zero value. You can test the variable in your code:

    let author = $syseval(author)
    if $msgint ~= 0 then ...        <---(take action if the
                                        function fails)

The following are legal parameters of $SYSEVAL. Most have specific responses.

  TERM_ROWS        Same as THEIGHT
  THEIGHT          Number of terminal rows, default: "24"
  HEIGHT           Current SET HEIGHT, default: THEIGHT
  LENGTH           "72"
  WIDTH            "80"
  WYLBUR           "Editor" (if no WYLBUR)
                   "WYLBUR" (if WYLBUR)
                   "vi" (if WYLBUR fails)
  SAMSON           "FALSE"
  FENAME           "TTY"
  XLINE            "9"
  UNIVNAME         "Emulator"
  FE_...           "Emulator"
  VARTYPE(...      "STRING"
  MODE             "Anonymous"
  TRYID            "OK"
  LASTUSE          /*-Last USE name -*/
  PREFIX           /*-Current ACTIVE -*/
  LINES            /*-Compute lines -*/
  LAST             /*-Compute last -*/
  END              /*-Compute end -*/
  XACCT            /*-GG.UUU -*/
  ACCOUNT          /*-UUU$GG -*/
  ATCHCNT          Count of attached devices, such as: "6"
  MACHINE          Current machine name, such as: "lindy"
  TMODEL           if (full_screen) "MODEL" else "VT100"
  TRYERROR         returns last TRY error message, or null
  USERACCT:name    returns gg.uuu for name in .empath table
  USERNAME:gg.uuu  returns  username from .empath table
  USERPATH:gg.uuu  returns /pathname from .empath table
  USERHOME:gg.uuu  returns /path to gg.uuu's $HOME directory
  USERHOME:name    returns /path to name's $HOME directory
  WYLPATH:gg.uuu   returns /path to active files
  ENV:variable     returns environment variable value
  WYL:variable     returns Wylbur variable value
  ACTIVE:code      returns status of active file (or sets status)
                   code: S, W, R, C, D

Because of the colon in arguments like ENV:variable, you must enclose the argument in quotes or apostrophes, such as: $syseval('env:printer'). For more information on WYL:variable, [See 6.15.]

5.23.1  $SYSEVAL ACTIVE OPTION, UNIX EMULATOR

a. $syseval('active:sense') ; Sense the current status.

The first character of "sense" is all that is used (S or s). The function returns a one-character code, suitable for use in a subsequent call to the function.

Returns D, R, W, C codes described below:

  codes:

     D  Current status is default active file, for $actno > 0.
        For $actno = 0, the active file is either "active.file",
        one of the "actinn.file" with nn from 00 thru 99.

        You can scratch, read, write, and clear status D files.

     The following codes apply to non-"actixx.file" ($actno=0)

     R  File exists, and no output has occurred to it, and no
        commands have been send to Wylbur (other than LIST).

     W  File doesn't exist, or was set by: $syseval('active:w').
        You can scratch, read, write, and clear status W files.

     If you SCRATCH a status R or W file, it becomes status W.

     C  The file was in R-status, and is unchanged,
        but the active file is now "active.file".
        The switch from R to C is caused by any of the following:
        1.  DELETE ALL, CLEAR ACTIVE, IN ACTIVE CLEAR
            You are given an empty "active.file".
        2.  A non-LIST command is sent to Wylbur.
            The R-status file is copied to "active.file",
            and your Wylbur command is done to "active.file".
        3.  You output to the file, with commands like:
            WDSE and IN ACTIVE CONTINUE.
            The R-status file is copied to "active.file",
            and your output is appended to "active.file".

        After the switch, your file has status C, any further
        actions take place with the "active.file", which you
        can read, write, and clear.  You can SCRATCH the original
        status C file and not affect the "active.file".  Likewise,
        you must SAVE to the original status C file to replace it.
        Both SCRATCH * and SAVE * (REPLACE) are available for this.
        USE * or PICK 0 do NOT affect the file's status.  A status
        C file remains that way until a new USE dataset occurs.

b. $syseval('active:code') ; Set the status

The first character of the "code" is all that is used.

This function can also be used to set the status, but only for a status R file. The function returns the status that was set. Setting status C causes a switch to "active.file", with whatever was in "active.file". It does NOT copy the status R file.

This function is best used to preserve the state of the current $actno=0 (USE) file, so you can USE something else, and then restore the original file. Here is a recommended sequence:

   let curact = $actno  ;  Preserve current active file number
   pick 0  ;  choose the USE file.
   let usename = $syseval(lastuse)    ; obtain USE filename.
   let status = $syseval('active:s')  ; sense file status.

At this point you can USE something else, and do whatever you like, providing the saved status isn't C and you try to WRITE to the new USE file, and it was status R. That would clobber "active.file". If all you do with the new USE file is READ, or it's status is W, or it is D and not the "active.file", there's no problem.

The following would restore the original conditions:

   /use #usename   ;  USE the original file.
    eval $syseval('active:'#status)  ; restore its status.
   /pick #curact   ;  return to the original $actno

Also, if you want to USE a file, and be able to write to it:

    USE filename
    eval $syseval('active:w')

The previous eval will set status W if the file was status R. If it was status W, it remains status W. If it was status D, it remains status D. With either status W or D, you can scratch, read, write, clear, or append. If the file was status C, it remains status C. But a file wouldn't be status C immediately after USE, only after some other status setting operation or output or editing. Initially it is only D, R or W.

5.24  ACTIVE FILE WITH FILE AREA, UNIX EMULATOR

SPIRES provides a facility for doing write or read of files through the FILE area.

  ASSIGN AREA name TO file-specification options

There are three (3) basic file-specifications:

  1.  ACTIVE FILE       ;  the current $actno file.
  2.  OS FILE filename  ;  text file in active file space.
  3.  filename          ;  file in "ORVYL" file space.

Case 1:

  ASSIGN AREA areaname TO ACTIVE FILE [options]

If you choose ACTIVE FILE, then the rules are the same as for OPEN, PICK, and USE. If $actno=0, you're dealing with the USE filename, in uplow case. Just think of ASSIGN AREA name TO ACTIVE FILE as being another way to direct "IN ACTIVE", expect you specify "IN name" instead.

Note that ALL of these options for file-specification give you the ability to do input or output from a file independent of other file I/O. BUT, the ACTIVE FILE specification has a danger if you have $actno=0 when you ASSIGN AREA name to ACTIVE FILE. You can NOT do another USE until you CLOSE AREA name.

When $actno is non-zero, you are dealing with an "actinn.file".

Case 2:

  ASSIGN AREA areaname TO OS FILE filename [options]

The options are described under the ASSIGN command. [EXPLAIN ASSIGN AREA COMMAND.] OS FILE input converts external ASCII to internal EBCDIC. OS FILE output converts internal EBCDIC to external ASCII.

The assigned area can be up to 4090 bytes in length, larger than 235 character limit for active file I/O. However, only formatted output will create lines of text that are longer than 235 character per line. Even the SHOW EVAL command will break long lines into separate lines of 235 maximum characters (usually at a blank).

If you choose OS FILE filename, then your dealing with a file directly, similar to the ACTIVE FILE, but totally independent. There is no $actno associated with OS FILE. These files are placed in the same directories as active files, which is usually your $HOME directory. You can specify WYL.gg.uuu.filenames. Most importantly, all reads and writes are direct to the file. Remember, filename is always forced to UPPER case.

Case 3:

  ASSIGN AREA areaname TO filename [options]

If you choose filename, then again you're dealing with files directly. ORV.gg.uuu.filenames are allowed. These files exist in the ORVYL file space, which is the /path to where all SPIRES files are stored, like /prod/AM/SUF, or /archive/GQ/RLG Like OS FILE, reads and writes are direct to the file.

You can read or write binary files, such as CARD format object decks. You must supply a .OBJ suffix for the system to recognize an object deck, or give the CARD option.

For reading text files (input), the file name must end in .TXT such as: myfile.txt Note that although you may type the name in uplow, SPIRES always uses UPPER case for names of files in the FILE area, EXCEPT for TO ACTIVE FILE.

For output of text files, either specify a name ending in .TXT, or give the EDIT attribute. Here are a few examples:

Output case:

  -> define area out (10,235) on file
  -> assign area out to myout.txt replace
  ; defaults to output, and EDIT because of .txt ending.
  ; REPLACE option says to replace any existing MYOUT.TXT
  -> in out clr dis ...
  -> in out continue dis ...
  ; etc.
  -> close area out

If you fail to close the area, the file may be incomplete.

Another output case:

  -> define area out (10,235) on file
  -> assign area out to myfile edit
  ; defaults to output, and EDIT specification indicates this
  ; is an active file without having the .txt suffix.
  -> in out .... (same as before)
  ; etc.
  -> close area out

In both cases, the file name created is all UPPER case, which means MYOUT.TXT and MYFILE were created.

Input case:

  -> define area inp (10,235) on file
  ; You can use any area names you like.  We used 'out' and
  ; 'inp' in these examples...but you are free to choose.
  -> assign area inp to myout.txt inp
  ; File name must have .txt suffix to be recognized as EDIT.
  ; If it doesn't, and you give EDIT specification, SPIRES
  ; will complain.  The file's name takes precedence.
  -> in inp input batch; or any other input command.
  -> close area inp

Again, you must close the area to finish using the file.

We recommend using this facility for output files more so than for input files. You're better off with "use" for input files because area-names are NOT permitted for all commands that can do input. Some require formats. Thus, we strongly recommend a single "use" for input, with the possibility of multiple FILE-area files for output.

  -> use myinp
  -> define area out1(5,235) on file
  -> define area out2(5,235) on file
  ; Be sure to do all defines before doing assigns.
  -> assign area out1 to myout1.txt replace
  -> assign area out2 to myout2.txt replace
  ; OK, now you can input from "myinp" and output to
  ; either out1 or out2 in any manner you like.
  ; When done, do the following:
  -> close area out2
  -> close area out1
  ; in any order, out1 first and out2 second if you like.

At any time you can use the %% command to see what files are attached, and EDIT-format files with show as E=4 in the displayed list. Standard SPIRES files with show as F=0 or F=1. There are other types as well, like C=4 for CARD-format, V=4 for VARiable-format, and W=4 for OS FILEs

VARiable-format can be used just like Edit-format (.TXT). You simply use names ending in .VAR or use the VARiable option when assigning the file. Note that the same rules apply for .VAR files as for .TXT files. For example, file names must end in .var suffix to be recognized as VARiable format on input. For output, use both .var suffix and the VARiable option, like this:

  -> assign area x to myfile.var replace variable output

There also is a PRINT-format output, which yields the same output result. You specify LRECL=133 on ASSIGN.

Here is an example:

  -> define area print (10,133) on file
  -> assign area print to anyname lrecl=133
  ; "anyname" will be created as ANYNAME (uppercase).
  -> in print ...[output command]
  ; etc.
  -> close area print

This creates an active file just like any active.file. In fact, once created, you can "use" it as your Active. The same is true of the "anyname.txt" files you create.

So there are now several ways to create output files, by specifying EDIT, LRECL=133, or "name.TXT" outputs. The defined area should be wide enough to hold up to 133 characters for LRECL=133, and 235 characters for EDIT-format. Using 235 for a size is really too much.

Of course you can still output to the current Active. You can also input from the current Active, or input using a FILE-area as long as the file's name ends in the .TXT suffix. Even PRINT-format can be input as long as the name meets this criteria on the ASSIGN.

5.25  XEXP PROTOCOL

Two new protocols have been added to PUBLIC PROTOCOLS for obtaining explanations in full-screen mode. These protocols act differently on the explain terms supplied, but otherwise work the same.

-> ..EXP  <stem value>
-> ..XEXP <word values>

The <stem value> form in ..EXP is like the stems supplied for the regular EXPlain command. They are the prefix of the desired explanations. For example:

-> ..EXP $LOOKSUB

The <word values> form in ..XEXP acts like a title word search in a bibliographic file. Special characters are stripped from each word, except #, which may be used as a truncation indicator. The WORD index of the EXPLAIN subfile is searched with logical AND between words.

-> ..XEXP LOOK# PROC

This will find explanations with words that begin with LOOK (or $LOOK since special characters are stripped) and includes the word PROC, not PROCEDURE or PROCS, but exactly PROC. Word order is not important.

The following description applies to both protocols:

The initial screen will present you with a list of choices that match the requested search expression. If there are more choices than can fit on one screen, the range of choices on the current screen, and total number of choices available, is shown at the top right corner of the screen, such as: (1/27) of 58

Use the TAB key to navigate to the desired term, and press RETURN to select that choice. You can use either ESC TAB (typed separately) or Shift-TAB (hold shift down and hit TAB) to move backward through choices.

To move forward to see more choices, either hit RETURN when you're on the Command-line, or press function-key F5. Use F4 to scroll backward a screen.

When your chosen explanation is presented, you have the same navigational mechanisms available to you. TAB will move you to any highlighted field within the body of the explanation on the current screen. Highlighted fields are for other related explanations. Hitting RETURN when you are on a highlighted field will take you to that explanation. Hitting RETURN on the Command-line, or F5, will scroll forward through the current explanation.

On the Command-line, you can issue commands, including EXP <search value> to find another explanation. END will end your full-screen explanation, as will F3.

HELP, or F1, will give you more information about the function keys and commands. Give it a try.

If function keys don't work right on your terminal, you can use "ESC <digit>" instead. Example: F1 can be obtained by typing ESC and then 1 (above "Q"). The "home" key usually works, but ctrl-A always works.

Also note that on some terminal emulators, highlighted fields are not highlighted (bold, reverse, or color). This is a deficiency in your terminal software. You can still navigate with the TAB key to selectable fields, even if they are not highlighted in some way.

Note: The original code for these full-screen explanation facilities came from Harold Finkbeiner. Thanks Harold!

5.26  PERFORM EXPLAIN

PERform EXPlain privides full-screen explainations.

-> PERform EXPlain <word values>

The <word values> acts like a title word search in a bibliographic file. Special characters are stripped from each word, except #, which may be used as a truncation indicator. The WORD index of the EXPLAIN subfile is searched with logical AND between words.

-> PERform EXPlain LOOK# PROC

This will find explanations with words that begin with LOOK (or $LOOK since special characters are stripped) and includes the word PROC, not PROCEDURE or PROCS, but exactly PROC. Word order is not important.

The initial screen will present you with a list of choices that match the requested search expression. If there are more choices than can fit on one screen, the range of choices on the current screen, and total number of choices available, is shown at the top right corner of the screen, such as: (1/27) of 58

Use the TAB key to navigate to the desired term, and press RETURN to select that choice. You can use either ESC TAB (typed separately) or Shift-TAB (hold shift down and hit TAB) to move backward through choices.

To move forward to see more choices, either hit RETURN when you're on the Command-line, or press function-key F5. Use F4 to scroll backward a screen.

When your chosen explanation is presented, you have the same navigational mechanisms available to you. TAB will move you to any highlighted field within the body of the explanation on the current screen. Highlighted fields are for other related explanations. Hitting RETURN when you are on a highlighted field will take you to that explanation. Hitting RETURN on the Command-line, or F5, will scroll forward through the current explanation.

On the Command-line, you can issue commands, including EXP <search value> to find another explanation. END will end your full-screen explanation, as will F3.

HELP, or F1, will give you more information about the function keys and commands.

If function keys don't work right on your terminal, you can use "ESC <digit>" instead. Example: F1 can be obtained by typing ESC and then 1 (above "Q"). The "home" key usually works, but ctrl-A always works.

Also note that on some terminal emulators, highlighted fields are not highlighted (bold, reverse, or color). This is a deficiency in your terminal software. You can still navigate with the TAB key to selectable fields, even if they are not highlighted in some way.

Note: The original code for these full-screen explanation facilities came from Harold Finkbeiner. Thanks Harold!

6.3  MAILTO COMMAND, UNIX EMULATOR

The 'mailto' command is an Emulator command. The syntax is:

  -> mailto [options] EMAILADDRESS

where [options] might be: -s 'Subject'

The Emulator converts that command into a Unix Mail command:

  % Mail [options] EMAILADDRESS < Active.Name

The appended '< Active.Name' portion specifies your current active file is to be mailed to the EMAILADDRESS given. The Active.Name is the fully-qualified name of your current active file, which is what you'd see with the SHOW ACTIVE command, or what is returned by $SYSEVAL(PREFIX).

Given:

  -> set prefix /my/path
  -> use notebook
  -> mailto -s 'Notes' Yoda

Becomes: Mail -s 'Notes' Yoda < /my/path/notebook

6.4  OPEN COMMAND, UNIX EMULATOR

The Emulator has: "pick <nn>", "open", and "close" commands to provide a set of Active Files with names from "acti01.file" thru "acti99.file". Open will assign <nn> from 01 thru 99 in sequence. Close backs down. Pick <nn> will assign the specific "acti<nn>.file". Pick 0 will give you the last "use" file name, or "active.file" if you never did a "use". "use *" is an alternative to "pick 0", but it resets to the beginning.

There is a difference between "use" files and "pick" or "open" files. The "use" file may be read incrementally if it is an input file. But "pick" or "open" files always start reading from their beginning each time you "pick" or "open" them. "pick 0" resumes input from the last "use" file. "use *" resets to the beginning of the "use" file.

To learn more about Active Files, [See 6.12.]

Also, [EXPLAIN $ACTNO VARIABLE.]

6.5  PERCENT PREFIX, UNIX EMULATOR

Beside using the comma prefix to send commands to underlying systems, like Unix, you may use a percent prefix. The difference is that the percent prefix won't affect $NO, and therefore you will always get a successful completion indication from a percent prefixed command. For example:

  -> %vi active.file

Regardless of how "vi" terminates, this command will always succeed, even when "vi" is not recognized as a system command.

The percent prefix sends commands to Unix, whereas the comma prefix will first have the Emulator examine the command, and possibly pass it to Wylbur (or reject it). Therefore, you must use percent to pass a Unix JOIN command to Unix:

  -> %join file1 file2
  -> ,join 1,2            ; Wylbur command
  -> join 5,9             ; Wylbur command

6.7  SET EXCEPTION, UNIX EMULATOR

Both SPIRES and SPIBILD allow you to specify an exception file for holding rejected input records encountered during INPUT BATCH (and other forms of INPUT command), and BATCH commands. The syntax of the command is:

SET EXCeption filename

On Unix systems, you may choose any filename. For example:

SET EXCEPTION JUNE94.REJECTS

Even if the name is specified in lower case, the upper case form is what is created. You can NOT specify a /path.

SET EXCEPTION creates text output, like an active file. It goes to the /path associated with your account, similar to LOAD files. Once created, you can move the file anywhere you like.

Once an exception file is created, and possibly moved, it can be "read" by SPIRES with the "use" command just like any Active File.

On Macintosh OS9 and PC/DOS systems, the Emulator creates a VARY type. Although both SPIRES and SPIBILD write the appropriate type of data file, you won't be able to "read" it unless the Emulator knows about this special type, so for Macintosh and PC/DOS systems, you should use a filename with a ".VAR" suffix. It is the ".VAR" suffix that signals the special type. There is a COPYEXCP protocol in PUBLIC PROTOCOLS that transforms a VARY type file to a standard Active File.

6.8  SET HEIGHT, UNIX EMULATOR

SET HEIGHT n specifies that n is the maximum number of lines to be written to the terminal before a page pause. n must be an integer value from 0 to 255. The Emulator displays a colon (:) at your terminal to indicate the page pause. (A page pause means that the system pauses, allowing you to read the information displayed at your terminal.)

SET HEIGHT 0 turns off page pause. For non-zero values, the specified value must be greater than 4 or less than your actual terminal row count, otherwise the height is set to your terminal row count.

After a page pause, you can press the RETURN key to resume the output of lines. You can press the BREAK key at a page pause, or during the output, to interrupt the process. If your terminal does not have a BREAK key, you can use a backslash (\) at the page pause followed by RETURN to signal a BREAK.

SET HEIGHT has no effect on full-screen I/O or on commands executed outside the Emulator, such as Unix commands.

6.9  SET PREFIX COMMAND, UNIX EMULATOR

The Emulator has an active-file related command: SET PREFIX /path

You must spell out SET PREFIX, there is no abbreviation. The "/path" portion defines the path to be prefixed to the next "use", "open", or "pick n" Active File name, providing a specific path isn't given with the "use" command.

Examples:

  -> show active
  /main/guertin/active.file
  -> set prefix /main/guertin/files
  -> show active
  /main/guertin/active.file
  -> use x
  -> show active
  /main/guertin/files/x
  -> use /u1/x
  -> show active
  /u1/x

Note that SET PREFIX does not affect the currently defined active file. It only takes effect on the next "use", "open", or "pick n" command, and any subsequent commands until changed by another SET PREFIX command. Also, a specific /path specified in the "use" command always takes precedence over the prefix.

Both "use" and "set prefix" permit a specification that begins with "@gg.uuu", such as the following:

  -> SET PREFIX @GQ.SPI
  -> USE @LI.LXA.X

The @gg.uuu and any single character separator that follows is converted into the /path associated with the specified gg.uuu account. Thus, if LI.LXA had /u/li/files as the /path, the USE command would specify /u/li/files/X as the active file. In the SET PREFIX example, the /path for GQ.SPI would define the prefix. The next USE command that doesn't specify a /path or @gg.uuu will be assigned that prefix.

You can learn about Active File paths with $SYSEVAL function:

a. $SYSEVAL(prefix); Returns the /path/name of the current Active.

b. $SYSEVAL(lastuse); Returns the /path/name of the last "use".

EXPLAIN USE COMMAND for more information about Active Files.

6.10  SET WDSR COMMAND, UNIX EMULATOR

The SET WDSR and SET WDSW commands allow you to assign values to the $NEXTWDSR and $NEXTWDSW variables, respectively, in order to control reading from and writing into the active file. The SET WDST command lets you set the $WDST variable, which can be used as temporary storage for a line number value.

The syntax common to all these commands is:

  SET WDSx [TO|=] {line #}

The "line #" option lets you specify an explicit line number or a symbolic line number of FIRST, LAST, or END (which may be abbreviated F, L, or E).

For example:

  SET WDSR FIRST

will cause the next WDSR command to read from the beginning of the active file.

Or,

  SET WDSW END

will cause the next WDSW command to write a line at the END of the active file.

In the Unix-SPIRES system, the only meaningful values for SET WDSR and SET WDSW are those shown above. The value set for FIRST is either 0 or -1 depending upon the existence or non-existence of the active file. Likewise, the value set for END is either 50001 or -1.

Furthermore, if you are using WDSR commands to read the last USEd active file, and you switch to another active file with PICK or OPEN, then you must switch back to the original active file with PICK 0 in order to continue reading with WDSR. You should always SET WDSR FIRST to start reading. Example:

  use myfile
  set wdsr first
  while $TRUE
  wdsr end leave
  pick 1
  /wdse $ask
  pick 0
  endwhile

6.11  SCRATCH COMMAND, UNIX EMULATOR

The Emulator recognizes the "SCRATCH" command as the means for specifying a active files to be deleted from the system. The format of the command is: SCRATCH active.file.name

where the "active.file.name" is any valid name for a file on your platform. You may include directory path information on systems that support it. For example, on a Unix platform:

  SCRatch /main/myname/myfile.txt

On a Macintosh system, that might become:

  SCRatch :HardDisk:SPI-folder:myfile.txt

You may specify "SCRatch *" to delete the current "use" file. The SHOW ACTIVE command can be used to determine what is the currently known file-name by the Emulator.

6.12  USE COMMAND, UNIX EMULATOR

The Emulator recognizes a "USE" command as the means for specifying a text file for both input and output operations. The format of the command is: USE text.file.name

where the "text.file.name" is any valid name for a file on your platform. You may include directory path information on systems that support it. For example, on a Unix platform:

  USE /main/myname/myfile.txt

On a Macintosh system, that might become:

  USE :HardDisk:SPI-folder:myfile.txt

There also are: "pick <nn>", "open", and "close" commands that provide a set of Active Files with names from "acti01.file" thru "acti99.file". Open will assign <nn> from 01 thru 99 in sequence. Close backs down. Pick <nn> will assign the specific "acti<nn>.file". Pick 0 will give you the last "use" file name, or "active.file" if you never did a "use". "use *" is an alternative to "pick 0", but it resets to the beginning. For more information, [See 6.4.]

There is a difference between "use" files and "pick" or "open" files. The "use" file may be read incrementally if it is an input file. But "pick" or "open" files always start reading from their beginning each time you "pick" or "open" them. "pick 0" resumes input from the last "use" file. "use *" resets to the beginning of the "use" file.

The SHOW ACTIVE command can be used to determine what is the currently known file-name by the Emulator. This file is an ASCII "TEXT" file with each line less than 235 characters ending in '\n', the new-line indicator which may be carriage-return or carriage-return and line-feed, depending upon what is standard for your platform. Therefore, the text-file is a standard ANSI C text stream file that can be opened by "fopen".

The Emulator translates between ASCII text-files on one side, and EBCDIC data on the program side. EBCDIC is IBM's standard character set. Translation occurs on both input and output.

text-file (ASCII) <==> Emulator <==> program (EBCDIC)

The Emulator will open and read from the beginning of the file for most input operations, like ADD, UPDATE, MERGE, INPUT BATCH, etc. If the file didn't exist when the input operation was specified, an immediate EOF will occur terminating the input operation with no input. The "use" input file can be read incrementally with the WDSR command. If you "pick" or "open" some temporary acti<nn>.file, you can "pick 0" to resume reading from the "use" file. But whenever any input file is read to end-of-file, the next read will start from the beginning again. Except for WDSR, most input commands read the entire file from beginning to end. Be careful about mixing WDSR and other input commands. You might want to do "use *" to reset to the beginning of your "use" file, and "set wdsr first" to empty buffers.

The Emulator recognizes three types of active files:

  1. A scratch-pad file: active.file, or actinn.file (nn from 00 thru 99).
  2. A non-existing non-scratch-pad file.
  3. An existing non-scratch-pad file.

For all files of type 1 or 2, the following rules apply:

The Emulator will open and write from the beginning of the file for all output operations involving IN ACTIVE CLEAR or IN ACTIVE with SET CLEAR or IN ACTIVE with an affirmative response to "-OK to clear?". You can also do CLR ACTIVE to cause writing from the beginning of existing scratch-pad files.

The Emulator will open and write starting at the end of the file for all output operations involving IN ACTIVE CONTINUE or the WDSE text command. If you did CLR ACTIVE, writing will start from the beginning of the file for the first IN ACTIVE CONTINUE or WDSE.

For all files of type 3 (existing non-scratch-pad files), any attempt to output or alter the file causes the Emulator to copy the file to the "active.file", and your output or alterations occur to "active.file". If you CLEAR ACTIVE, DELETE ALL, or IN ACTIVE CLEAR, then an empty "active.file" is established. Your original "use" file is considered READ-ONLY, and is NOT changed. However, if immediately after doing the "use", you do either of the following, then your original file is treated like a scratch-pad:

  1. scratch *  ; scratch the existing file, making it non-existent.
  2. eval $syseval('active:w')  ; Declare the file "Writable".

The last command permits you to do anything, including append to the existing file with IN ACTIVE CONTINUE.

So the Emulator supports three basic text-file operations:

1.  Read an existing file from the beginning (or incrementally).
2.  Write a new or scratch-pad file from the beginning.
3.  Append to the end of a new or scratch-pad file.

The Emulator does NOT support line-range operations such as those given by the "USING line-range" options.

Sample SPIRES session:

  -Welcome to SPIRES yy.mm
  -> use myfile.def
  -> select filedef
  -> add
  -> show active
  myfile.def
  -> use newfile.def
  -> scratch *
  -> in active /display $KEY

At this point, newfile.def was either created or overwritten with the same file definition as added from myfile.def, but possibly indented differently (standard SPIRES display format) and with altered MODDATE and MODTIME elements (reflecting when the ADD took place). If the second USE command had not been given, the IN ACTIVE CLEAR prefix would have tried to write over the myfile.def file, creating "active.file" instead. If you aren't sure of the status of the current active file, you can examine its status with: $syseval('active"s'). For more information: [See 5.23.1.]

You can learn about Active File paths with $SYSEVAL function:

a.  $SYSEVAL(prefix); Returns the /path/name of the current Active.
b.  $SYSEVAL(lastuse); Returns the /path/name of the last "use".
c.  $SYSEVAL('wylpath:gg.uuu'); Returns the /path for active files
    belonging to the specified gg.uuu account.

There is also an Emulator command: SET PREFIX /path

You must spell out SET PREFIX, there is no abbreviation. The "/path" portion defines the path to be prefixed to the next "use", "open", or "pick n" Active File name, providing a specific /path isn't given with the "use" command.

Examples:

  -> show active
  /main/guertin/active.file
  -> set prefix /main/guertin/files
  -> show active
  /main/guertin/active.file
  -> use x
  -> show active
  /main/guertin/files/x
  -> use /u1/x
  -> show active
  /u1/x

Note that SET PREFIX does not affect the currently defined active file. It only takes effect on the next "use", "open", or "pick n" command, and any subsequent commands until changed by another SET PREFIX command. Also, a specific /path specified in the "use" command always takes precedence over the prefix.

Both "use" and "set prefix" permit a specification that begins with "@gg.uuu", such as the following:

  -> SET PREFIX @GQ.SPI
  -> USE @LI.LXA.X

The @gg.uuu and any single character separator that follows is converted into the /path associated with the specified gg.uuu account. Thus, if LI.LXA had /u/li/files as the /path, the USE command would specify /u/li/files/X as the active file. In the SET PREFIX example, the /path for GQ.SPI would define the prefix. The next USE command that doesn't specify a /path or @gg.uuu will be assigned that prefix.

It is also permitted to specify names with the following syntax:

  -> USE wyl.gg.uuu.dataset

The wyl.gg.uuu. portion is replaced by either the /path value, or by the $HOME path associated with the given account, which must appear in the the /path table with the Unix logon name of the user. The Emulator does the following, in this order:

On non-Unix systems, where there is no /path table, wyl.gg.uuu. and @gg.uuu. are stripped leaving just the filename.

6.13  FILENAME, UNIX EMULATOR

Filenames under Unix (USPIRES) are divided into a few simple groups.

1.  Active files (use, pick, open).
2.  USPIRES file components (created by FILEDEF).
3.  Work files like stored stacks, stored results, generate load files.
4.  SET EXCEPTION files, SYSPRINT and SYSPUNCH.
5.  Files assigned to FILE (or FILE2) areas.

1. In general, Active files are text files with line lengths limited to 235 characters per line. Any file specified in the USE command is assumed to be of this type. Output to Active files usually occurs with the IN ACTIVE command prefix, such as: IN ACTIVE DISPLAY ...

Active files can also be assigned to a FILE area with commands such as:

-> assign area <areaname> to active file {options}

See explanations for USE, PICK, OPEN, and ACTIVE FILE for more details. Input involving Active files implies conversion of lines of text from external ASCII to internal EBCDIC. Likewise, output converts EBCDIC to ASCII. The external file is simply a stream of characters with a newline character at the end of each line. Lines are limited to 235 characters.

Active files are classified as "E" in the %% display (EDIT files).

2. USPIRES file components have names that end in ".CKPT", ".MSTR", ".DEFQ", ".RECn", ".RES", ".RESn", and ".ULOG". All such filenames are upper case, such as: RESTAURANT.DEFQ

These files are treated as blocks of data, each block being 2048 bytes. Reads and writes of these blocks are done by SPIRES/SPIBILD and other SPIRES-related utilities on a block basis, starting with block 0.

These files are classified as "F" in the %% display.

3. Work files are also handled on a block basis, just like USPIRES file components. You should not end work file names with ".TXT", ".OBJ", or ".VAR" because these suffixes have special meanings as you will soon discover. These names are also upper case, even if you specify them in lower case. For example:

-> find title banana
-Result: 30 IDs
-> store result.banana

The file created will be RESULT.BANANA under your account.

These files are classified as "F" in the %% display.

4. SET EXCEPTION files should be named with ".VAR" suffix because SPIRES/SPIBILD outputs exception records in "variable" text format, and since Unix doesn't supply a means for typing a file, the suffix is the only clue that this is supposed to be a "variable" text file.

-> set exception rejects.var

Again, although specified in lower case, the file name will be all upper case: REJECTS.VAR

SET EXCEPTION files should be classified as "V" in the %% display. They are output with EBCDIC to ASCII conversion, and you can use them for input, just like Active files.

If a filename ends in SYSPRINT, it is assumed to be a fixed-length file with 133 character lines. On output, these lines are converted from EBCDIC to ASCII and trailing blanks are stripped. The result is output with an appended newline character giving you a standard text file, just like an Active file. For input, this file has all the characteristics of an Active file.

SYSPRINT files should be classified as "T" in the %% display.

If a filename ends in SYSPUNCH, it is assumed to be a fixed-length file with 80 character lines. The file is treated like a block I/O file with multiple 80-byte records per block. Block size is 2000. EBCDIC/ASCII conversions do NOT occur, and trailing blanks are not stripped. These files are considered to be "object decks".

SYSPUNCH files should be classified as "C" in the %% display.

5. Files assigned to FILE (or FILE2) areas indicate their nature by their suffix or other options associated with the ASSIGN command. All filenames are made upper case, even if specified in uplow. The assign command includes options following the filename, such as: INPut, OUTput, EDIT, CARD, PRINT, FIXED, VARiable, and LRECL=n. You must specify INPut to input from an existing file. OUTput is the default. You can REPlace or SCRatch an existing file.

a. EDIT format files, Text files

The ".TXT" suffix indicates a text file like an Active file. Likewise for the ".VAR" suffix. Both of these convert EBCDIC/ASCII between SPIRES and the file. Lines are limited to 235 characters.

-> define area image (20,235) on file
-> assign area image to myfile.txt replace

This assigns an output file called MYFILE.TXT that will be a text file, just like an Active file. These files are classified as "E" in the %% display.

You may also assign an area to the currently specified Active file.

-> assign area image to active file

In this case, whatever filename you have chosen for an Active file will be used by the area I/O. This includes an uplow filename since the name on USE commands is not forced to upper case.

b. CARD format files

-> define area cards (0,80) on file2
-> assign area cards to myfile.obj

The ".OBJ" suffix indicates an "object deck", which is a special form of output file for creating card images. NO conversions are done. The EBCDIC (or binary) information is output unchanged. Note that if you don't use the ".OBJ" suffix, you can still create an object deck by specifying a fixed-length of 80, such as:

-> assign area cards to my.cards lrecl=80

If you specify the CARD option on the assignment, it is like the LRECL=80 option. These files are classified as "C" in %% display. A filename of SYSPUNCH is assumed to be a CARD format file.

c. PRINT format files

If you specify LRECL=133 or the PRINT option, the file is assumed to represent a SYSPRINT type of file which will convert EBCDIC to ASCII like an Active file.

These files are classified as "T" in the %% display. A filename of SYSPRINT is assumed to be a PRINT format file.

d. W format files, OS FILE specification

Lastly, you can define areas of any size from 20 thru 4090 bytes and write (or read) text files which convert EBCDIC/ASCII. This is done with the OS FILE specification. For example:

-> define area <areaname> (row,cols) on file
-> assign area areaname to os file <filename> {options}

The number of rows could be 0, and the number of cols could be 2000. The area can't exceed 32760 bytes, and cols must range from 20 thru 4090. So you could have (80,400) for the (rows,cols). Most often the area is defined with (0,cols) to allow the maximum width.

The {options} typically include length specifications such as: LRECL=n, CARD (implies LRECL=80), PRINT (implies LRECL=133), and EDIT (implies LRECL=235). You can also use the REPlace or SCRatch option on output to remove the file and create a new file. You must specify the INPut option to read from these files.

These files are classified as "W" in the %% display. In a sense, these are equivalent to text files with very long line lengths. On output, trailing blanks are stripped from each output row, and a newline character is appended to the EBCDIC/ASCII converted text. On input, a line ending in the newline character has that character stripped, the text is converted from ACSII to EBCDIC, and that is placed into a row with blank padding. Truncation can occur in either direction if the target has smaller length than the source.

Filenames for OS FILE specification may be given with "WYL.gg.uuu." prefix to indicate they belong to a different user. SPIRES will lookup GG.UUU and associate the filename with the proper path.

6.14  SAVE COMMAND, UNIX EMULATOR

The Emulator recognizes a "SAVE" command as the means for specifying a text file that is to be a copy of the current active file. The format of the command is: SAVE text-file-name [options]

where the "text-file-name" is any valid name for a file on your platform. You may include directory path information on systems that support it. For example, on a Unix platform:

  SAVE /main/myname/myfile.txt

On a Macintosh system, that might become:

  SAVE :HardDisk:SPI-folder:myfile.txt

The [options] include "REPlace" or "SCRatch", and "QUIet". The Emulator does NOT support any other options, include line-range operations such as those given by the mainframe's "LINES line-range" option. The file SAVEd will be an identical copy of the current active file. If the text-file-name you specify is the current active file, or you specify * as the name, SAVE does nothing because your current active file is already saved. Thus:

  -> use x
  -> save x    ; does nothing
  -> save *    ; does nothing
  -> save y    ; copies x to y

If you don't give REPlace or SCRatch, and the target file is NOT the current active file, and that target file exists, you will be prompted:

  OK to Replace?

The QUIet option tells the system not to display a message. You can specify "QUIET" or "QUIETLY" before "SAVE" with the same effect. You can also specify "TRY" before "SAVE" to block any error condition. For example:

  -> quietly try save subdir/myfile replace

There is also an Emulator command: SET PREFIX /path

You must spell out SET PREFIX, there is no abbreviation. The "/path" portion defines the path to be prefixed to the next "save", "use", "open", or "pick n" Active File name, providing a specific path isn't given with the "save" command.

Examples:

  -> show active
  /main/guertin/active.file
  -> set prefix /main/guertin/files
  -> show active
  /main/guertin/active.file
  -> save x
  Saved: /main/guertin/files/x

Note that SET PREFIX does not affect the currently defined active file. It only takes effect on the next "save", "use", "open", or "pick n" command, and any subsequent commands until changed by another SET PREFIX command. Also, a specific /path specified in the "save" command always takes precedence over the prefix.

Both "save" and "set prefix" permit a specification that begins with "@gg.uuu", such as the following:

  -> SET PREFIX @GQ.SPI
  -> SAVE @LI.LXA.X

The @gg.uuu and any single character separator that follows is converted into the /path associated with the specified gg.uuu account. Thus, if LI.LXA had /u/li/files as the /path, the SAVE command would specify /u/li/files/X as the target file. In the SET PREFIX example, the /path for GQ.SPI would define the prefix. The next SAVE command that doesn't specify a /path or @gg.uuu will be assigned that prefix.

6.15  WYLBUR VARIABLES

The $SYSEVAL function may be used to retrieve Wylbur variables when Wylbur is active or available on your system. Wylbur is not active or available if you get a null return from $SYSEVAL('WYL:varname'), where varname is any of the variables listed below. Generally, you would use $SYSEVAL to retrieve Wylbur variables when you've just done a Wylbur Command. [See 6.16.]

Here are a few examples of how to specify the $SYSEVAL argument, both from the command line and from within a USERPROC or FORMAT (UPROC statements).

   -> point 'apple'(1) nolist
   -> let curline = $syseval('wyl:current')
   UPROC = eval $issuecmd('point ''apple''(1) nolist');
   UPROC = let curline = $syseval('wyl:current');
   UPROC = eval $set(ask,current);
   UPROC = let curline = $syseval('wyl:'$ask);

The following is a set of examples of each of these variables:

   ACCOUNT = 'UUU$GG'
   ACTNAME = 'VAREXEC'
   ACTNO = 1
   ATTN = FALSE
   ATTNINFO = ''
   ATTNID = 'NOATTN '
   BACK = 'NOBACK'
   CASE = 'UPPER'
   CHANGES = 0
   COUNT = 1
   CPROMPT = 'Command'
   CURRENT = -1
   DATE = '19:03:06 03/12/03 (03.071)'
   DATEF = '19:03:06 03/12/2003 (2003.071)'
   DAY = 'Wednesday'
   DELTA = 1
   E = 2.7182818
   EMODE = 'LINE'
   END = 168
   ERRID = 'OK'
   ERRINFO = ''
   ERRMSG = ''
   ERROR = FALSE
   ESCAPE = ''
   FIRST = 1
   FETYPE = 'VIRTUAL'
   HEIGHT = 0
   IORESULT = 'OK'
   LAST = 167
   LENGTH = 72
   LIBRARY = 'LIB'
   LINES = 167
   LNAME = ''
   LOCALHOST = 'lindy.stanford.edu'
   MACHINE = ''
   MACHINE_ACCESS = ''
   MACHINE_PRIMARY = ''
   MEMBER = ''
   NAME = ''
   NEXT = -1
   NEWNEWS = FALSE
   NEWMAIL = FALSE
   PARM = ''
   PI = 3.1415927
   PREFIX = '/main/guertin/WYLBUR.VAREXEC'
   PREVIOUS = -1
   PROJECT = ''
   PVOLUME = ''
   RANDOM = 0.633
   RETURN = 0
   SAMSON = FALSE
   SAM_OS = ''
   SAM_TYPE = ''
   SAM_VERSION = ''
   SKIP = ''
   SOF = ''
   SYSTEM = 'SunOS 5.7'
   THEIGHT = 24
   TIMEBIN = 68587
   TIMEBLOCK = 'EVENING'
   TRYATTN = FALSE
   TRYERROR = FALSE
   TRYID = 'OK'
   TRYINFO = ''
   TRYMSG = ''
   TTYPE = ''
   TWIDTH = 80
   VJOBNAME = ''
   VJOBNO = ''
   WARN = 30
   WIDTH = 80
   WYLBUR = ''
   WYLBUR_CPU = 0
   XACCOUNT = 'GG.UUU'
   XDATE = 'Wed, 12 Mar 03 19:03:07 PST'
   XDATEF = 'Wed, 12 Mar 2003 19:03:07 PST'
   XLINE = 0

6.16  WYLBUR COMMANDS, UNIX EMULATOR

Wylbur is a text editor originally developed on the IBM mainframe. It has been modified to run under Unix.

The following is a list of commands Wylbur can execute from Emulator driven programs, like SPIRES or SPIBILD. These commands are only available on systems with Wylbur installed.

  ALIGN
  CHANGE
  COPY
  DELETE
  JOIN
  JUSTIFY
  LIST
  MOVE
  NUMBER
  POINT
  PUTEND
  SHOW
  SQUASH
  L, P, CH

INDEX


<FRAME NAME> IS NOT DEFINED BY A FRAME-ID   2.24
+>   1.1
+?   1.2
$ACTIVE VARIABLE   1.26
$MACHINE VARIABLE   1.5
$SEARCH.UNIVID PROC   5.22
$SYSEVAL ACTIVE OPTION, UNIX EMULATOR   5.23.1
$SYSEVAL FUNCTION, UNIX EMULATOR   5.23
$SYSXEQ FUNCTION   5.16
$SYSXEQ FUNCTIONS   5.16a
->   1.3
-?   1.4
@   4.6
ABNORMAL BATCH INPUT TERMINATION   4.22
ACTIVE FILE WITH FILE AREA, UNIX EMULATOR   5.24
ACTIVE FILES, UNIX EMULATOR   6.12
AT SIGN   4.6
BAD LEN FOR VARIABLE TYPE   2.14
BATCH COMMAND IN SPIBILD   4.18
BREAK LEVEL ONLY ALLOWED IN SUMMARY FRAME   3.24
CLEAR ACTIVE COMMAND, UNIX EMULATOR   6.12
CLOSE COMMAND, UNIX EMULATOR   6.4
COMBINED INDEX   4.10
COMMAND NOT AVAILABLE IN THIS SYSTEM -- CALL SPIRES   1.6
COMPILE TERMINATED   5.6
COMPILED RECORD TOO LARGE   3.25
CONSULTING   1.7
DEQUEUE ALL COMMAND   4.12
DID NOT COMPILE PROTOCOL   4.23
DISPLAY ATTRIBUTES ERROR   2.7
DUPLICATE ALLOCATE STATEMENT   4.13
DUPLICATE LABEL   4.24
ELEM ILLEGAL IN FRAME TYPE   3.14
ELEM IS NOT STRUCTURE OR WITHIN SUBTREE   3.5
ERROR IN VGROUPINIT FUNCTION   4.21
EVERYTHING   1.8
EXP PROTOCOL   5.25
EXPLAIN SF COMMAND   4.5
EXPRESSION TABLE OVERFLOW   3.19
FILE DATA NOT ALLOWED   2.12
FILE IN FORMAT DEF DOES NOT EXIST   2.6
FILE MUST HAVE A CKPT DATA SET   5.17
FILENAME, UNIX EMULATOR   6.13
FIXED-REQ STATEMENT   1.9
FMTPROC ERROR (DIAGNOSTIC MESSAGE)   2.23
FRAME DIMENSIONS TOO LARGE   2.4
FULL-SCREEN EXPLAIN   5.15
FUNCTIONS, PRISM   5.16a
FUNCTIONS, TRIG   5.16a
FUNCTIONS, UTILITY   5.16a
ILLEGAL USE OF FLUSH UPROC   4.3
ILLEGAL USE OF PATH VALUE   4.2
INDIRECT FRAME-ID NOT FOUND   2.25
INPROC ERROR (DIAGNOSTIC MESSAGE)   2.21
INVALID BREAK CHARACTERS INPUT   2.11
INVALID BREAK-LEVEL   3.10
INVALID COMMAND OPTION: UPDATE   5.3
INVALID ELEM MNEMONIC   3.2
INVALID EMPHASIS LEVEL   2.8
INVALID IND STRUCTURE CALL TO NON REFERENCE FRAME   4.4
INVALID PUTELEM USAGE   3.11
INVALID RESTRICTIONS DATA   3.15
INVALID SCAN OPTION   3.3
INVALID SPECIFIC FILE DATA   2.3
JUMP ONLY IN LABEL GROUP   3.9
LABEL TABLE OVERFLOW   3.7
LABEL TOO LONG   4.25
LIMITS IN SPIRES   5.5
LONG VARIABLE HAS OCC > 1   2.13
MAILTO COMMAND, UNIX EMULATOR   6.3
MERGE COMMAND IN SPIBILD, OUTSIDE OF GLOBAL FOR   4.19
MES MUST BE 0, 1, 2 OR 3   3.20
MISSING BREAK-LEVELS   3.12
MORE THAN ONE SOURCE VALUE IN LABEL GROUP   2.20
NO ACCOUNTS DEFINED   5.2
NO BUILD SPACE   1.10
NO FORMATS DEFINED   2.10
NO RECORDS COMPILED   5.7
NON UNIQUE SUBFILE REQUEST IN SUBGOAL   5.4
OPEN COMMAND, UNIX EMULATOR   6.4
OUTPROC ERROR (DIAGNOSTIC MESSAGE)   2.22
OUTPUT COMMAND   1.11
PERCENT PREFIX, UNIX EMULATOR   6.5
PERFORM EXPLAIN   5.26
PHANTOM ELEMENT MUST BE TYPE STRUCTURE   5.20
PICK COMMAND, UNIX EMULATOR   6.4
PRISM   4.15
RECORD NAME NOT VALID   2.2
RECORD-NAME NOT SPECIFIED   3.17
REMELEM ILLEGAL IF USAGE = FULL   2.5
REPORT VALUE NOT INTEGER   3.23
RESULT/STACK MUST BE CLEARED   4.20
SAVE COMMAND, UNIX EMULATOR   6.14
SCRATCH COMMAND, UNIX EMULATOR   6.11
SERIOUS ERROR   1.12
SET ACTIVE COMMAND   1.13
SET EXCEPTION, UNIX EMULATOR   6.7
SET HEIGHT, UNIX EMULATOR   6.8
SET NOSPIRES SYMBOLS COMMAND   5.18
SET PREFIX COMMAND, UNIX EMULATOR   6.9
SET REPORT IN STARTUP FRAME ONLY   3.21
SET SPIRES SYMBOLS COMMAND   5.19
SET WDSR COMMAND, UNIX EMULATOR   6.10
SET WDST COMMAND   6.10
SET WDSW COMMAND   6.10
SEVERE PASS ERROR   1.14
SHOW ACTIVE COMMAND, UNIX EMULATOR   6.12
SHOW SEARCH TERMS COMMAND   1.15
SORT ARRAY TOO LARGE   3.13
SPIRES CONSULTING   1.16
STATIC GROUP NOT FOUND   3.6
STATIC VARIABLE NOT FOUND   2.15
STR-NAME STATEMENT   1.17
SUBSCRIPT TOO LARGE   2.17
SUBTREE RECORD NAME NOT FOUND   4.1
TOO MANY UPROCS IN LABEL-GROUP   2.9
TOO MANY VALUES IN EXPRESSION   3.18
TYPE STRUCTURE MUST BE PHANTOM   5.21
TYPE=PTR STATEMENT   1.18
UNDEFINED BRANCH TERM   3.8
UNDEFINED LABEL   5.1
UNKNOWN VARIABLE TYPE   2.18
UNRECOGNIZED   1.19
USE COMMAND, UNIX EMULATOR   6.12
USE OF @-SIGN IGNORED   4.8
USERPROC ERROR MESSAGES   4.16
VALUE ILLEGAL FOR INPUT DIRECTION   3.4
VALUE ILLEGAL FOR OUTPUT DIRECTION   3.1
VARIABLE NOT SUBSCRIPTED   2.16
VARYING-REQ STATEMENT   1.20
VGROUP TABLE TOO LARGE. TRY DYNAMIC TYPE   2.19
VIEW TABLE ERROR   4.11
WARNING ERROR   1.21
WARNING: DUPLICATE LABEL NAME   3.22
WARNING: ELEM = RESIDUAL IS INVALID, RESET TO 1   5.11
WARNING: IMMEDIATE INDEX IS ALSO IMMEDIATE GOAL   5.8
WARNING: INFORMATION PACKET NOT FOUND: <NAME>   5.9
WARNING: LARGE ENTRIES IN <TABLE-NAME>   5.10
WARNING: RESIDUAL VALUE IS INVALID, RESET TO 1   5.11
WARNING: STRING WITH NO RELATION   4.17
WARNING: SUBFILE MAY NEED TO BE RE-ESTABLISHED   5.13
WARNING: TYPE INCONSISTENT WITH INPROC'S TYPE   5.14
WRONG DIRECTION FOR INDIRECT FRAME   3.16
WYLBUR   1.22
WYLBUR COMMANDS, UNIX EMULATOR   6.16
WYLBUR VARIABLES   6.15
X+>   1.23
X+?   1.24
X->   1.25
X-?   2.1
XEXP PROTOCOL   5.25