SCAN.DOC -- Changes from V7B(572) TO V7D(630) January, 1982 COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1972,1974,1977,1981,1982,1986. ALL RIGHTS RESERVED. THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. SCN7D.DOC Page 2 SCAN.DOC -- Changes from V7B(572) TO V7D(630) January, 1982 1.0 SUMMARY This is a maintenance release of SCAN necessary to correct scanning errors in LINK, DIRECT, LOGIN, BACKUP, and other utility programs. Corrections were selected based upon the dual requirements of having high value and low risk. This fixes all SPRs received through December, 1981. Note that SCAN version 7C was not shipped. All version 7C edits are included in version 7D. SCAN version 7D runs on all supported monitors. It has been tested on TOPS-10 V7.01 and TOPS-20 V4. SCAN version 7D depends on WILD version 7D. There are no known deficiencies. SCAN version 7D is documented implicitly in the software notebook description of DIRECT, LINK, and MAKLIB. Supporting documentation can be found in the .DOC files for WILD version 7D. 1.1 FUNCTION OF SCAN SCAN is designed to be used as a subroutine by programs needing a command scanner. It supports four basic types of commands. One is the traditional form of output device(s) = input device(s). In this case, options are controlled by switches preceded by a slash. The switches are an abbreviated word. Values for the switch are indicated by following the switch name by a colon and the value. The second type of command structure is that each line consists of a verb followed by arguments (values). To indicate this type of command string, the prompt character has been made a slash. The third type of command structure is used when the caller issues a prompt, typically a dialogue question, and then needs to scan a particular construct. The fourth type of command structure can be used with the above three to read the user's profile and change the defaults. For convenience, SCAN includes a moderate error message facility and a comprehensive set of type-out routines. 2.0 CHANGES FROM SCN7B TO SCN7D 573 SPR #10-18959 Restore .RBPPN after indirect file lookup for SFD's. 574 Make .CNVDT routines round time instead of truncating. SCN7D.DOC Page 3 575 SPR #10-19065 Since /XYZ:(A , B ) is legal, allow /XYZ:( A , B ) 576 SPR #10-19852 When specifying date/times with weekdays, allow times a full week into the future, and not more than a full week into the past. 577 SPR #10-21716 Disallow multiple ='s on the same line (cancel edit 515), since they don't work and can't be fixed (local switches). 600 SPR # 10-21465 LCR 21-JAN-77. Stop SCAN from resetting the starting address stored in .JBSA when running a program from the CCL entry point. The MONITOR no longer offsets the address at .JBSA when the offset is 0 or 1. NOTE: C was changed to MACTEN. areas affected: RESTRT:, E.IFL. 601 SPR # 10-21869 CLRH 17-MAR-77 Correction to edit 570 to not wipe out /BEFORE switch. 602 SPR # 10-24777 Remove a useless HALT in .QSCAN routine 603 SPR # 10-24773 WCL JUNE-27-78 Fix command scanning for SFD's; avoid use of quoting Areas affected: FILDR3 604 SPR # 10-26448 WCL AUG-24-78 Rethink Edit 603; it broke error reporting of non-existant SFD's if * or ? specified Areas affected: FILDR3, .TISQT 605 GMU 09-Oct-78 If new bit FS.IFI is set in flags word of .ISCAN call, make indirect file invocations illegal. Used by the File Daemon. 606 SPR # 10-25056 BBE 12/16/78 Last SFD spec getting dropped with multiple level searches with cmd line of the form DIR [A,B,C,D] E.F,G.H,I.J 607 GMU 3/3/80 Fix off-by-one bug if .TRDXW was called with a radix greater than 10. 610 SPR # 10-29905 RKB 8/19/80 Allow null SFD specs to be filled in with PATH. UUO change "?Null SFD illegal" to "?Null SFD beyond depth of PATH" currently under an off conditional, not supported. 611 Change version scheme to allow customer edits greater than 3. SCN7D.DOC Page 4 612 PY 17-Mar-81 Remove the FS.NCM flag from /MESSAGE, /OPTION, and /NOOPTION 613 TARL 30-May-81 Add entry point .TOFEB to perform same function as .TOLEB, but using a pointer to a FILOP block. 614 SPR # 10-31175 PY 29-Jun-81 Fix problem with [-] if edit 610 is installed. 615 SPR # 10-30948 PY 29-Jul-81 Remove the SCNNFT and SCNNPS errors. If a future date is requested and the date typed is really in the past or vice versa, allow the date as there are many cases where it is useful to do so. 616 SPR # 10-31381 PY 5-Aug-81 Fix TYIIGC to keep B.INDC accurately as the number of characters. This fixes an off by one bug with TMPCOR files which lose the last character if they end on a word boundary. 617 PY 7-Aug-81 Fix sequence numbers and page marks in indirect files to work even if they span a block. 620 SPR # 10-31399 PY 18-Aug-81 Fix bug in edit 610 which affects five deep SFDs and /BEFORE or /SINCE. 621 PY 18-Aug-81 Search UUOSYM, MACTEN instead of C. Update compilation instructions. 622 PY 19-Aug-81 If CCL, check the left half of the name if the right half is zero. This prevents COMPIL class commands from getting lost if TMP is assigned or a path. 623 PY 20-Aug-81 When using a byte pointer for a switch, check for exact match with the value instead of the mask. 624 PY 24-Sep-81 Fix edit 623 so that switches with multi-word byte pointers are compared properly. 625 PY 19-Oct-81 Once more with multi-word byte pointers. Either zero or minus one is acceptable to indicate that a switch has not been seen. Seperate out the multi-word tests so the code is shorter and less complex. SCN7D.DOC Page 5 626 PY 24-Nov-81 With edit 622 installed, the TMPCOR file name may be in the left half of .RBPPN instead of the right half. Check for this case when deleting the TMPCOR file. 627 PY 27-Dec-81 Add the global symbol .OPTN, same value as local symbol OPTION. 630 PY 28-Dec-81 Fix bug when printing out numbers in .TRDXW with a radix greater than ten. 3.0 KNOWN BUGS AND DEFICIENCIES None. 4.0 INSTALLATION INSTRUCTIONS To install in any program, relink that program using the new SCAN.REL All programs which are to use SCAN version 7D should be checked to insure that they request SCAN, and not a specific version of SCAN, such as SCN7B. Note that although there are several programs which use SCAN and WILD, we will not necessarily rebuild all of them when SCAN is released. If the customer experiences a problem with a program which is fixed by the new versions of SCAN and WILD, he may rebuild the product at his discretion. 5.0 SUGGESTIONS Allow use of an extended channel to be used instead of time-sharing channel 0. Allow long file names on TOPS-20 in a format acceptable to the COMPT. UUO. Permit SCAN to run or be called from extended sections. Add a HELP command, similar to HELP:SWITCHES which will describe the keywords and/or arguments to the switches. Support PATH names. Allow nested indirect files. [SCN7B.DOC is appended as an integral part of SCN7D.DOC] SCN7B.DOC Page 6 SCAN.DOC -- CHANGES FROM V7A TO V7B(572) JUNE 1975 1.0 SUMMARY This is a maintenance release of SCAN necessary to correct command scanning errors in LINK-10 and to support BACKUP. Corrections were selected based upon the dual requirements of having high value and low risk, however, it is recommended that this version NOT be used to build other programs. There are no functional changes from version 7A. This fixes all SPRs received through 10-16,159 (June, 1975). SCAN version 7B runs on all monitors. It has been tested on 5.10/6.02. SCAN version 7B depends on WILD version 7 or later. There are no known deficiencies. This version fully supports the DATE75 project. SCAN version 7B is documented implicitly in the software notebook description of DIRECT and DUMP. Supporting documentation can be found in the .DOC files for WILD version 7 and DIRECT version 4. 1.1 Function of SCAN SCAN is designed to be used as a subroutine by programs needing a command scanner. It supports four basic types of commands. One is the traditional form of output device(s) = input device(s). In this case, options are controlled by switches preceded by a slash. The switches are an abbreviated word. Values for the switch are indicated by following the switch name by a colon and the value. The second type of command structure is that each line consists of a verb followed by arguments (values). To indicate this type of command string, the prompt character has been made a slash. The third type of command structure is used when the caller issues a prompt, typically a dialogue question, and then needs to scan a particular construct. The fourth type of command structure can be used with the above three to read the user's profile and change the defaults. For convenience, SCAN includes a moderate error message facility and a comprehensive set of type-out routines. 2.0 CHANGES FROM SCN7A TO SCN7B 555 Call FILSTK in .OSCAN to memorize SWITCH.INI defaults. 556 Set verb mode flag FLVERB in .VSCAN before calling SETPR4. 557 Store first value for /LENGTH in P.XXX area. 560 if UFD appears as -1, typeout as [*,*]. SCN7B.DOC Page 7 561 Prevent OSCAN from copying remaining sticky switches to all files in T-mode. 562 (10-15,267) Edit 515 fails at monitor level. 563 (10,16,159) PSCAN sometimes types too any prompts. 564 Use 6.02 table if available to get login time. 565 (10-15,694) Correct use of .PTMAX. 566 Allow spaces after comma on multiple values for switches 567 Add TENEX feature test code 570 Correct length of BLT transfer in FILSTK so date swithces will not get clobbered when a directory is typed. 571 Don't defeat ^O before dispatching to user prompt routine. Let user routine do it itself if needed. 572 Make .TYPRE (preemptive input ) work reasonably. Basically, ignore /RUN and CCL or command mode if preemptive input. (So preemptive call to .TSCAN won't exit or do a run.) 3.0 KNOWN BUGS AND DEFICIENCIES None. 4.0 INSTALLATION INSTRUCTIONS With version 7, the dummy low-segment file SCANDM has been removed since LINK-10 version 2 (released on the July, 1974 distribution tape) has a switch /ONLY:LOW which can achieve the same effect and ensures the correct low segment is included. Thus, all commands which reference SCANDM should be changed to SCAN/ONLY:LOW. Note that although there are several programs which use SCAN and WILD, we will not necessarily rebuild all of them when SCAN is released. Typically, the various utilities such as DIRECT and QUEUE and DUMP will be rebuilt, but major products such as LINK and FORTRAN will not be rebuilt until their next release. If the customer wishes to rebuild, he may, but usually the changes to SCAN and WILD do not warrent the cost of rebuilding and testing. Software products are supported only with the version of SCAN and WILD with which they have been released, because they have not been tested with other versions. SCN7B.DOC Page 8 5.0 SUGGESTIONS Allow indirect files to nest. This would make their behavior be more like COMPIL. This would also allow the option file to be used while using @ files. Implement iteration loops with (). Implement the pattern "x 'TO' y" in TSCAN. Implement 'LIST' and 'OBJECT'. Make SCAN (and perhaps WILD) be a separate segment which can be GETSEGged when needed. Add a routine which can input a SIXBIT symbol name (i.e., allowing % $ and .). SPR 10S-031) Add a standard switch to specify the number of lines per page. Add a routine like .SWMAX which would verify that the result is in a specified range (.SWMAX only allows the range 0-max). Add a routine to issue system-wide standard messages, such as FNF FILE NOT FOUND. Add an option to .OSCAN to allow the caller to specify a secondary key (or list of secondary keys) and allow .OSCAN to match these against ranges in the SWITCH.INI file. This could allow a program such as LOGIN to select a different line depending upon which terminal the user was using. QAR 1975) Add an option to the /MESSAGE switch to suppress the constant text portions and just output the parameters. Change .OSCAN so that it will not look for SWITCH.INI on LIB:. SPR 10-13457) Allow the caller to optionally specify a permanent channel to use for indirect files so that channel 0 does not have to be time-shared. Change the setting of FT$UEQ to remove "_". Have "?" not match null characters. Implement some form of dialogue mode. Remove the current use of space as a separator within a file specification. Remove the old defaulting mechanism triggered by the file name. [End of SCN7B.DOC] [SCN7A.DOC is appended as an integral part of SCN7B.DOC] SCN7A.DOC Page 9 SCAN.DOC -- Changes from V7 to V7A March 1975 1.0 SUMMARY This is a maintenance release of SCAN necessary to correct command scanning errors in LINK-10 and to support BACKUP. Corrections were selected based upon the dual requirements of having high value and low risk, however, it is recommended that this version NOT be used to build other programs. There are no functional changes from version 7. This fixes all SPRs received through 10-15,266 (February, 1975). SCAN version 7A runs on all monitors. It has been tested on 5.07/6.01. SCAN version 7A depends on WILD version 7 or later. There are no known deficiencies. This version fully supports the DATE75 project. SCAN version 7A is documented implicitly in the software notebook description of DIRECT and DUMP. Supporting documentation can be found in the .DOC files for WILD version 7 and DIRECT version 4. 1.1 Function of SCAN SCAN is designed to be used as a subroutine by programs needing a command scanner. It supports four basic types of commands. One is the traditional form of output device(s) = input device(s). In this case, options are controlled by switches preceded by a slash. The switches are an abbreviated word. Values for the switch are indicated by following the switch name by a colon and the value. The second type of command structure is that each line consists of a verb followed by arguments (values). To indicate this type of command string, the prompt character has been made a slash. The third type of command structure is used when the caller issues a prompt, typically a dialogue question, and then needs to scan a particular construct. The fourth type of command structure can be used with the above three to read the user's profile and change the defaults. For convenience, SCAN includes a moderate error message facility and a comprehensive set of type-out routines. 2.0 CHANGES 542 (SPR 10-15001) Detect illegal date-time formats before defaults are filled in. Thus, the phrase "following word" will be more understandable to the user. 543 (SPR 10-15,266) When handling a parenthesis pair surrounding a set of file specifications, delay clearing the sticky defaults until they have been applied to the last file specification within the parentheses. SCN7A.DOC Page 10 544 (SPR 10-15135 on LINK) Create a new (internal) facility in SCAN which allows the caller to preempt the current input source, and force all characters for editing to come from the user terminal. 545 Clear core at the very start of .ISCAN instead of on the second page. 546 Define the global symbol "%%%SCN" which is the current major version number. 547 Correct a bug introduced by edit 357. In verb mode, allow file switches to appear as verbs whether or not they have values. 550 If the caller of .TSCAN declares both multiple outputs and that inputs and outputs can be mixed, then do not require a =. This is needed for proper functioning of LINK. 551 In verb mode, at end of each line, clear any sticky devices, etc. Only sticky switches are kept across lines. 552 Corect a bug in edit 551. Clear non-switch flags in P.MOD and P.MODM between lines. 553 Make .CLSNS routine internal. 554 Clear negative flag before reading a UFD. 3.0 KNOWN BUGS AND DEFICIENCIES None. 4.0 INSTALLATION INSTRUCTIONS With version 7, the dummy low-segment file SCANDM has been removed since LINK-10 version 2 (released on the July, 1974 distribution tape) has a switch /ONLY:LOW which can achieve the same effect and ensures the correct low segment is included. Thus, all commands which reference SCANDM should be changed to SCAN/ONLY:LOW. Note that although there are several programs which use SCAN and WILD, we will not necessarily rebuild all of them when SCAN is released. Typically, the various utilities such as DIRECT and QUEUE and DUMP will be rebuilt, but major products such as LINK and FORTRAN will not be rebuilt until their next release. If the customer wishes to rebuild, he may, but usually the changes to SCAN and WILD do not warrent the cost of rebuilding and testing. Software products are supported only with the version of SCAN and WILD with which they have been released, because they have not been tested with other versions. SCN7A.DOC Page 11 5.0 SUGGESTIONS Allow indirect files to nest. This would make their behavior be more like COMPIL. This would also allow the option file to be used while using @ files. Implement iteration loops with (). Implement the pattern "x 'TO' y" in TSCAN. Implement 'LIST' and 'OBJECT'. Make SCAN (and perhaps WILD) be a separate segment which can be GETSEGged when needed. Add a routine which can input a SIXBIT symbol name (i.e., allowing % $ and .). SPR 10S-031) Add a standard switch to specify the number of lines per page. Add a routine like .SWMAX which would verify that the result is in a specified range (.SWMAX only allows the range 0-max). Add a routine to issue system-wide standard messages, such as FNF FILE NOT FOUND. Add an option to .OSCAN to allow the caller to specify a secondary key (or list of secondary keys) and allow .OSCAN to match these against ranges in the SWITCH.INI file. This could allow a program such as LOGIN to select a different line depending upon which terminal the user was using. QAR 1975) Add an option to the /MESSAGE switch to suppress the constant text portions and just output the parameters. Change .OSCAN so that it will not look for SWITCH.INI on LIB:. SPR 10-13457) Allow the caller to optionally specify a permanent channel to use for indirect files so that channel 0 does not have to be time-shared. Change the setting of FT$UEQ to remove "_". Have "?" not match null characters. Implement some form of dialogue mode. Remove the current use of space as a separator within a file specification. Remove the old defaulting mechanism triggered by the file name. [End of SCN7A.DOC] [SCN7.DOC is appended as an integral part of SCN7A.DOC] SCN7.DOC Page 12 SCAN.DOC -- Changes from V6 to V7 September 1974 1.0 SUMMARY This release adds the concept of guide words which allow the language to be somewhat more general and mnemonic. Together with changes to WILD, this release generalizes the wild-card matching so the user can or and and specifications to match. The user can also exclude certain patterns of files from the match. This release also lays more groundwork to evolve SCAN to agree with the proposed DEC standard command language. This fixes all SPRs received through 10-13,999 (September, 1974). SCAN version 7 runs on all monitors. It has been tested on 5.07/6.01. SCAN version 7 depends on WILD version 7 or later. There are no known deficiencies. This version fully supports the DATE75 project. SCAN version 7 is documented implicitly in the software notebook description of DIRECT and DUMP. Supporting documentation can be found in the .DOC files for WILD version 7 and DIRECT version 4. 1.1 Function of SCAN SCAN is designed to be used as a subroutine by programs needing a command scanner. It supports four basic types of commands. One is the traditional form of output device(s) = input device(s). In this case, options are controlled by switches preceded by a slash. The switches are an abbreviated word. Values for the switch are indicated by following the switch name by a colon and the value. The second type of command structure is that each line consists of a verb followed by arguments (values). To indicate this type of command string, the prompt character has been made a slash. The third type of command structure is used when the caller issues a prompt, typically a dialogue question, and then needs to scan a particular construct. The fourth type of command structure can be used with the above three to read the user's profile and change the defaults. For convenience, SCAN includes a moderate error message facility and a comprehensive set of type-out routines. 2.0 CHANGES 401 (QAR 2424) Fix edit 365 so that the DIRECT and QUEUE commands with no arguments work correctly. 402 (SPR 10-13,999) Same fix as edit 530. 501 (SPR 10-13597) Make .TSTRG reentrant so it can be used recursively. SCN7.DOC Page 13 502 (QAR 2384) Let @ work to DECtapes. 503 Allow the user to specify /MESSAGE:(ALL,NOxx) to mean all except xx. Similarly, allow the user to specify /MESSAGE:(NONE,xx) to mean only xx. This syntax works for all bit-valued switches. 504 (QAR 2439) Allow /RUN to be specified on a monitor command line and have it work correctly. 505 Add :LOGIN as a mnemonic date-time to mean the time this user last logged in. For example, /SINCE:LOGIN would refer to all those files since the last LOGIN. Note that if there are several jobs logged in under a particular ppn, then this will be the last one to have logged in. 506 Add standard switch /EXIT which works just like /RUN except that the program will exit to the monitor when all work is done. 507 Add the concept of guide words as defined in the proposed DEC standard command language. These are standard mnemonic words which are always enclosed within asingle quotes. Internally, they are treated as a single meta-character. Edits 510 and 523 start to define actual guide words. 510 Add three file specification separators as guide words. These may be used to combine several file specifications into one concatenated file specification. It is the concatenated file specification which actually is used by WILD to match against a file. The separator 'AND' means that the conditions on both sides of the separator must both be met for the file to match. The separator 'OR' means that either condition may be met in order to match. The separator 'NOT' means that the condition to the left must me met and that the condition to the right can not be met for the file to match. 'AND' and 'NOT' are of the same precedence and are evaluated before 'OR' is. This follows the normal Boolean precedence rules. Note that the standard file constraint switches such as /SINCE are part of the analysis of whether a file matches a particular specification. Note that in DIRECT and QUEUE, "+" had the meaning of 'OR'. This is still true in version 7 of WILD but will be changed in version 10. All existing files which depend on this should be converted to use 'OR' before that release. Note that most programs will not care about the difference, nor will most users. 511 Lay the groundwork to remove "_" as a separator which means the same thing that "=" does. The code to remove it is under the conditional FT$UEQ. In a future release the conditional will be changed to remove "_". 512 Allow "*" to be used at the end of a file name, etc.. This means the same as specifying enough "?" to fill out the field. For now, the meaning of "?" will be left the same, but in the future "?" will be changed to not match null. Therefore, all cases where null should validly be matched should be changed to use "*" instead (it is also easier to type). SCN7.DOC Page 14 513 Add routine .OSDFS to apply the SWITCH.INI (.OSCAN) defaults to a file specification itself. By calling this for each file specification, calling programs can allow all file specification switches to be supplied from SWITCH.INI. 514 Allow everything except partial file specifications to appear before the "@". Anything so specified will be concatenated onto the first line of the indirect file. Similarly, allow the indirect file specification to be followed by other commands. Anything so specified will be processed after the last line of the indirect file. These changes allow the DIRECT and QUEUE monitor commands to have a syntax much closer to that of the COMPILE-class commands. 515 (QAR 1975) Allow several equal signs on the same command line. When this happens, the treatment is exactly the same as if the separator before the file specification preceeding all but the first equal sign on a line was end-of-line. 516 Don't set the default DSK: if only global switches were specified. This requires that the global switches be flagged with FS.NFS in the SWTCHS macro. 517 Remove the vestiges of dialogue mode since it violates the proper use of escape and was never implemented. Leave as a research project determining the best way to implement a dialogue mode. 520 Add mnemonic date-times of NOON and MIDNIGHT. NOON always refers to noon of today; MIDNIGHT refers to 00:00 or 24:00 depending on whether the switch takes past or future values. Thus, for example, "/SINCE:MIDNIGHT" refers to last midnight and "/AFTER:MIDNIGHT" refers to midnight tonight. 521 (SPR 10-13,836) Improve the .SAVEn routines to save six locations and to store the flags on the stack without increasing the execution time. 522 In order to conform with the proposed DEC standard command language, accept "%" as a prefix for a component of a file specification known as an attribute. Since TOPS-10 has no such concept currently, ignore any such field. 523 Add the additional guide words of 'TO', 'FROM', 'INPUT', 'OUTPUT', 'SOURCE', 'LIST', and 'OBJECT'. These are defined by the proposed DEC standard command language to preceed the file specifications of the appropriate meaning. Within the current algorithms in SCAN only 'FROM', 'INPUT', and 'SOURCE' are meaningful, and these are only useable as synonyms for "=". Thus, it is now possible for the user to say ".COPY x 'FROM' y", but it is not yet possible for him to say ".COPY y 'TO' x". 524 Remove a possible HALT after errors within an indirect file. 525 (SPR 10-13,818) Remove a minor piece of internal confusion on the prompting logic. SCN7.DOC Page 15 526 (SPR 10-13,818) Remove an internal flag which was redundant. 527 (SPR 10-13,817) Do not suppress the leading spaces at the start of a continuation line. 530 (SPR 10-13,999) Fix a bug introduced in version 5 which did not allow a monitor command to be continued. 531 Allow or-bit value switches to take a default. In particular, default /MESSAGE occuring without any values to be :(PREFIX,FIRST,CONTINUATION). 532 Add a new switch, /TMPFIL. This switch takes a pair of values in the form /TMPFILE:name:string. The string is stored in the TMPCOR or .TMP file named in the command. The .TMP file name is prefixed with the job's number to follow the CCL conventions. This can be used to setup one or more CCL files prior to a /RUN. This would typically be done in a SWITCH.INI or indirect file. 533 (SPR 10-13,943) In programs which take multiple output specifications such as FORTRAN-10, detect as an error the absence of an "=" in the command line. The message is "?SCNESM EQUAL SIGN MISSING". 534 In order to move closer to the proposed DEC standard command language, introduce the notation of parentheses to indicate the scope of user specified defaults. In particular, any components of a file spec typed just before the left parenthesis become defaults for those specs within the parentheses. For example, typeing "X:FOO(.A,.B)" stands for "X:FOO.A,X:FOO.B". In the next version of SCAN, the old practice of components of a spec typed before the file name becoming defaults will be removed. Thus, and .CTL and .CCL files should be modified to the new notation. This new notation also removes the need to allow spaces within a file spec; so these should also be removed since a future version of SCAN may disallow spaces within the spec. Spaces adjacent to other separators such as "=" and "," will still be legal. 535 Allow several indirect files to be specified on the same command line. Thus, for example, ".DIRECT@A,@B" will now work as expected. 536 Add additional density values of 1600 and 6250 to agree with the assignments in the 5.07 and 6.02 MTCHR. UUO. 537 In the new routine .OSDFS, do not default anything except switches. 540 Correct bug in edit 535. 541 Don't recognize quide words within a quoted string. SCN7.DOC Page 16 2.1 SCNMAC Changes 101 Add guide words as characters 4000-4002. 102 Clarify the meaning of FS.NFS to indicate that the switch has global reference, rather than being part of a file specification. Add the flag FS.NCM which is to be used internally within SCAN to indicate that a particular switch does not constitute a command. 103 Add guide word characters 4003-4011. 104 Remove the ASK macro which was never implemented. 105 Expand FX.DEN to three bits to match the MTCHR. UUO. This requires moving it left in the word. 3.0 KNOWN BUGS AND DEFICIENCIES None. 4.0 INSTALLATION INSTRUCTIONS The dummy low-segment file SCANDM has been removed since LINK-10 version 2 (released on the July, 1974 distribution tape) has a switch /ONLY:LOW which can achieve the same effect and ensures the correct low segment is included. Thus, all commands which reference SCANDM should be changed to SCAN/ONLY:LOW. Note that although there are several programs which use SCAN and WILD, we will not necessarily rebuild all of them when SCAN is released. Typically, the various utilities such as DIRECT and QUEUE and DUMP will be rebuilt, but major products such as LINK and FORTRAN will not be rebuilt until their next release. If the customer wishes to rebuild, he may, but usually the changes to SCAN and WILD do not warrent the cost of rebuilding and testing. Do not reload Queue with this version of SCAN as there is an obscure bug awhich will not let Queue automatically print out a log file at KJOB Time. Also, do not reload CREDIR with this version of SCAN, because reloading gives inconsistent symbol definitions. Other CUSP's dependent on SCAN have been reloaded and are included on the October Monitor Tape. SCN7.DOC Page 17 5.0 SUGGESTIONS Allow indirect files to nest. This would make their behavior be more like COMPIL. This would also allow the option file to be used while using @ files. Implement iteration loops with (). Implement the pattern "x 'TO' y" in TSCAN. Implement 'LIST' and 'OBJECT'. Make SCAN (and perhaps WILD) be a separate segment which can be GETSEGged when needed. Add a routine which can input a SIXBIT symbol name (i.e., allowing % $ and .). SPR 10S-031) Add a standard switch to specify the number of lines per page. Add a routine like .SWMAX which would verify that the result is in a specified range (.SWMAX only allows the range 0-max). Add a routine to issue system-wide standard messages, such as FNF FILE NOT FOUND. Add an option to .OSCAN to allow the caller to specify a secondary key (or list of secondary keys) and allow .OSCAN to match these against ranges in the SWITCH.INI file. This could allow a program such as LOGIN to select a different line depending upon which terminal the user was using. QAR 1975) Add an option to the /MESSAGE switch to suppress the constant text portions and just output the parameters. Change .OSCAN so that it will not look for SWITCH.INI on LIB:. SPR 10-13457) Allow the caller to optionally specify a permanent channel to use for indirect files so that channel 0 does not have to be time-shared. Change the setting of FT$UEQ to remove "_". Have "?" not match null characters. Implement some form of dialogue mode. Remove the current use of space as a separator within a file specification. Remove the old defaulting mechanism triggered by the file name. [End of SCN7.DOC] [SCN5.DOC is appended as an integral part of SCN7.DOC] SCN5.DOC Page 18 SCAN.DOC -- Changes from V4 to V5 May 1974 1.0 SUMMARY This release supports the error message standard and introduces the /MESSAGE level switch. This release also adds switches to constrain wild-carding by access date and file size. It also adds switches to specify output file's estimated size and version number. It adds two new types of switches, one stores bits in the value, the other takes the prefix "NO". One CMCO and a number of bugs and deficiencies have been fixed including all SPRs recieved through April 25, 1974 (10-13045). SCAN version 5 runs on all monitors. It has been tested on 5.06 and 5.07/6.01. SCAN version 5 depends on WILD version 6 or later. There are no known deficiencies. This version fully supports the DATE75 project. SCAN version 5 is documented implicitly in the software notebook description of DIRECT and DUMP. Supporting documentation can be found in the .DOC files for WILD version 6 and DIRECT version 4. 1.1 Function of SCAN SCAN is designed to be used as a subroutine by programs needing a command scanner. It supports four basic types of commands. One is the traditional form of output device(s) = input device(s). In this case, options are controlled by switches preceded by a slash. The switches are an abbreviated word. Values for the switch are indicated by following the switch name by a colon and the value. The second type of command structure is that each line consists of a verb followed by arguments (values). To indicate this type of command string, the prompt character has been made a slash. The third type of command structure is used when the caller issues a prompt, typically a dialogue question, and then needs to scan a particular construct. The fourth type of command structure can be used with the above three to read the user's profile and change the defaults. For convenience, SCAN includes a moderate error message facility and a comprehensive set of type-out routines. 2.0 CHANGES 276 Move .PTWRD to SCAN from WILD. Put it and .GTWRD and .MKMSK into a separate, new module named .GTPUT. These are simple utility routines which may be useful without all of SCAN. 277 Add a new type of switch value. This type is indicated by the flag FS.OBV and has the property that the result is OR-ed into the value word. The left half will end with a mask of what was SCN5.DOC Page 19 controlled and the right half will have a 1 if the value was set. If the value is a list of keywords, then also allow "ALL" or "NONE" to set all bits or clear all bits. These can not be abbreviated. 300 Add a new switch, /MESSAGE. This takes values which are or-ed together to control the verbosity of error messages. The values to /MESSAGE are: PREFIX include 6-character error mnemonic FIRST include text from first line of message CONTIN include continuation lines of message Each of these can be preceeded by "NO" to complement its effect. The default setting is obtained from the monitor where it is set by LOGIN version 55. The default typically is /MESSAGE:(PREFIX,FIRST). Also add the location .FLVRB which contains the setting from the /MESSAGE switch. Add routine .VERBO which returns in AC1 right adjusted the bits from /MESSAGE after defaults have been applied. 301 Modify the routine .CLRFL to take an argument which suppresses clearing switches. This solves a problem when scanning a switch which takes a file as an argument. 302 Add a new option bit to .TSCAN which allows input and output specifications to be mixed. This is useful for programs which may need input files on the left of = or output files to the right. 303 Convert all SCAN error messages to include a standard prefix as determined by /MESSAGE. 304 Allow a device to preceed the command name on a rescan. 305 Add mnemonic dates of "yesterday", "today", and "tomorrow". 306 Add new type-out routine, .TVERW which types a value in the .JBVER format. 307 Change .SAVEn routines to be reentrant, interruptable, and slightly faster. 310 In .GTNOW routine, if the GETTAB is available, use it instead. 311 Include a slightly cleaner form of date conversion. 312 Make the symbol ".MYPPN" internal for the convenience of LOGIN. 313 Correct a number of deficiencies when .PSCANing including the handling of ^Z and RUN xyz (...). 314 Improve messages which include "following word" to always give the right format. SCN5.DOC Page 20 315 Add a new typeout routine, .TDTYM, which types a word in internal "universal" date/time format. 316 Add a new switch macro, "SN", which takes value one unless the word is prefixed by "NO", in which case the value is 0. With this macro, the user can also give the switch name with value 0 or "NO" to indicate "not the switch" (same as /NOswitch) or 1 or "YES" to indicate the switch (same as /switch). The NO or YES can be abbreviated. 317 (SPR 10-12400) Don't allow /RUN when not logged in. 320 Fix the handling of the indirect file on non-directory devices to handle multiple buffers. 321 Add a further option to /MESSAGE, namely :ADDRESS, which will cause SCAN's error printer to include the address of the error message routine for debugging convenience. 322 Extend edit 313 to handle multiple .PSCAN calls correctly. 323 Correct edit 312. 324 (SPR 10-12439) Avoid error messages if the CCL file is missing. If the cause is missing directory, etc., the message will be suppressed. 325 Allow duplicate switches with the same value without giving an error message. 326 (SPR 10-12416) Correctly diagnose time values with the hours greater than or equal to 24 as an error. 327 Add an entry point, .QSCAN, which is to be used when .PSCANing for all but the main question. It doesn't initialize quite as strongly. 330 (SPR 10-12,344) Improve the error message when there is junk after the indirect file spec in an indirect specification. 331 Detect the case that /BEFORE and /SINCE don't overlap with the result that nothing could ever match. Issue a new message for this case. 332 Create routine .STOPB which is like .STOPN but has the path block as an argument. This is in a separate module to allow it to be loaded in separate segments from SCAN. 333 Add a new routine .ERMSG which will issue the prefix and initial text of an error message. 334 Change ".SCNDC" to "$SCNDC". 335 More of edit 327. SCN5.DOC Page 21 336 Add routine to type out a value which is a core size. It verifies that the value is an exact number of pages or K (depending upon processor type) and then outputs it with a P or K suffix. If the number is not exact, it is output as words with a W suffix. The core-size input routine has been expanded to allow W as a suffix to mean words. Similarly, it will also allow a suffix of B to mean blocks (128-words). 337 Add routines .BLOKW/C and .TBLOK to input and output units of file size. On input, the same suffixes that can be used for core input are valid (W, B, P, or K), with the value defaulting to blocks if no suffix is specified. The output routine will type the number as blocks with a B suffix if exact; otherwise, it will type it as words with a W suffix. 340 Add routine .TOLEB to type out a file specification in OPEN/LOOKUP format. 341 More of edit 277. 342 More of edit 316. 343 To aid the users, make a compatible change to invoke switch processors with a PUSHJ. If the processor wants the value range-checked, it still must call .SWMAX. Otherwise, it can non-skip return to store the value (same as calling .SWDPB) or skip-return to not store (same as .SWDON). a344 Add option to .OSCAN to supply a list of the primary option file keys. Thus, for example, QUEUE could specify both QUEUE and PRINT on a .PRINT command so the user can specify different defaults for different commands. 345 To correctly support edit 344, read and process all lines of the SWITCH.INI file. Previously, the first matching line terminated the processing. Now, every matching line will be processed. This is consistent with the handling of other .INI files in the system. 346 Add several new switches and associated error messages. /ABEFORE and /ASINCE are exactly like /BEFORE and /SINCE except that they constrain the access date rather than the creation date. /LENGTH takes two file sizes separated by a colon to constrain the file size. The first size is the minimum file length which will match, and the second is the maximum. If the first is omitted, 0 is the lower limit; if the second is omitted together with its preceeding colon, then +infinity is the upper limit. If the minimum is greater than the maximum, SCAN will issue the message SCNLVI to indicate that the lengths are inconsistent. There are also three new output switches: /ERSUPERSEDE, /VERSION, and /ESTIMATE. /ESTIMATE specifies the estimated file size, and /VERSION specifies the file version (contents of .RBVER). The /VERSION switch uses a new input routine, .VERSW, which accepts a standard version pattern as input. /ERSUPERSEDE SCN5.DOC Page 22 works only on 5.07/6.01 and later monitors and will result in an error if the file already exists (would be superseded). 347 Compute the logged in status dynamically for LOGIN. There is a new routine, .ISLOG, which does this. 350 Fix a deficiency which did not handle end of file at the end of an indirect specification correctly. 351 (SPR 10-13,045) Correct a bug which happened if DEBUG=0. 352 (QAR 1975) Fix bug in edit 316. 353 (QAR 1975) Allow .VSCAN to use .OSCAN at startup time. 354 (QAR 1975) Clear ^O on the first fatal error message. 355 (QAR 1975) Define a sub-module, .TNEWL, which is called from the error message module. It will force the output to the beginning of the line. The routine supplied in SCAN currently just calls .TCRLF. If the user has supplied his own routine, then load SCAN in /SEARCH mode to eliminate this one. 356 Define two error message entry points. E.DSI issues the message that double switch is illegal. If the option file is being processed, then it does not issue an error message. E.SVR issues the message that switch value is required. 357 In verb mode, allow a file specification to include switches which modify file specs. Thus, for example, the DUMP command INPUT, which takes one file spec as its value, can include switches such as /PHYSICAL, but not such as /RUN. The legal switches are those commands which point to the SCAN or user file-specific regions as defined in the call to .VSCAN. Also, when a file-modifying switch is given as a verb, have it become the sticky default. Remove the old hack of preceeding a verb with "." to indicate default. 360 In verb mode, allow a command call via the RUN command. If the program has a monitor command, or if the user invokes it with (...) on the command, then treat any unquoted / as separating verbs (i.e., the same as end of line). Thus, for example, DUMP can be invoked as: .RUN DUMP (/IN:FOO /DUMP:ALL) to dump all of file foo. 361 More of edit 352. 2.1 SCNMAC CHANGES 71 Define FS.OBV. SCN5.DOC Page 23 72 Define symbols of the form JWW.?? which are the values returned by the routine .VERBO. 73 Define FS.MIO for .TSCAN calls. 74 Fix the test for maximum default to correctly allow -1. 75 Add switch type SN. 76 Add the SCAN words .FXABF, .FXASN, .FXFLI, .FXFLM, .FXEST, and .FXVER for the switches /ABEFORE, /ASINCE, /LENGTH, /ESTIMATE, and /VERSION. Add the byte FX.SUP for the switch /ERSUPERSEDE. 3.0 KNOWN BUGS AND DEFICIENCIES None. 4.0 INSTALLATION INSTRUCTIONS Note that although there are several programs which use SCAN and WILD, we will not necessarily rebuild all of them when SCAN is released. Typically, the various utilities such as DIRECT and QUEUE and DUMP will be rebuilt, but major products such as LINK and FORTRAN will not be rebuilt until their next release. If the customer wishes to rebuild, he may, but usually the changes to SCAN and WILD do not warrent the cost of rebuilding and testing. 5.0 SUGGESTIONS Allow indirect files to nest. This would make their behavior be more like COMPIL. This would also allow the option file to be used while using @ files. Allow .OSCAN to handle default file switches as well as general switches. Implement iteration loops with (). Implement verbal separators to allow commands such as "COPY A TO B" or "COPY B FROM A". Make SCAN (and perhaps WILD) be a separate segment which can be GETSEGged when needed. Add a routine which can input a SIXBIT symbol name (i.e., allowing % $ and .). Add a switch which causes an exit to the monitor. This would occasionally be useful in indirect files. SCN5.DOC Page 24 (SPR 10S-031) Add a standard switch to specify the number of lines per page. Add a routine like .SWMAX which would verify that the result is in a specified range (.SWMAX only allows the range 0-max). Add a routine to issue system-wide standard messages, such as FNF FILE NOT FOUND. Add an option to .OSCAN to allow the caller to specify a secondary key (or list of secondary keys) and allow .OSCAN to match these against ranges in the SWITCH.INI file. This could allow a program such as LOGIN to select a different line depending upon which terminal the user was using. (QAR 1975) Add an option to the /MESSAGE switch to suppress the constant text portions and just output the parameters. (QAR 1975) Treat the command .XXX A=B, C=D as two separate commands (lines). [End of SCN5.DOC] [SCN4.DOC is appended as an integral part of SCN5.DOC] SCN4.DOC Page 25 SCAN.DOC -- Changes from V3 to V4 November 1973 1.0 SUMMARY This release gives the caller more control of the environment when SCAN is running. It also add support for quoted strings and multiple switch values. A number of bugs and deficiencies have been fixed including all SPRs recieved through October 10, 1973 (10-11663). This version incorporates fixes to problems found during the testing of FORTRAN-10 and LINK-10. SCAN version 4 runs on all monitors. It has been tested on 5.06. SCAN version 4 depends on WILD version 4 or later. There are no known deficiencies. This version fully supports the DATE75 project. SCAN version 4 is documented implicitly in the software notebook description of DIRECT and DUMP. Supporting documentation can be found in the .DOC files for WILD version 4 and DIRECT version 3. A formal specification for SCAN is under development. 1.1 Function of SCAN SCAN is designed to be used as a subroutine by programs needing a command scanner. It supports four basic types of commands. One is the traditional form of output device(s) = input device(s). In this case, options are controlled by switches preceded by a slash. The switches are an abbreviated word. Values for the switch are indicated by following the switch name by a colon and the value. The second type of command structure is that each line consists of a verb followed by arguments (values). To indicate this type of command string, the prompt character has been made a slash. The third type of command structure is used when the caller issues a prompt, typically a dialogue question, and then needs to scan a particular construct. The fourth type of command structure can be used with the above three to read the user's profile and change the defaults. For convenience, SCAN includes a moderate error message facility and a comprehensive set of type-out routines. 2.0 CHANGES 174 Add switches /NOSTRS, /NOPHYSICAL, and /ERNONE which are the defaults and the opposite of /STRS, /PHYSICAL, and /OKNONE. 175 Add /NOOPTION switch to suppress option file logic. 176 Fix a bug in .PSCAN which came up if the program was invoked by a monitor command and had no arguments. SCN4.DOC Page 26 177 Add a defensive HALT to ensure that .OSCAN is called only at end of line. 200 (Many SPRs) Detect the user error of giving "0" as project or programmer number. 201 Add code to clear sticky defaults on each line of .VSCAN and .PSCAN. 202 Make two more error messages (E.INCL and E.ILSC) be declared INTERN. 203 Correct a bug in handling of directories in switches which take a file specification as their value. 204 Add code to pre-clear the .NMUL area on each switch. 205 Fix /HELP:SWITCHES to give a clean printout if the caller has supplied no switches. Also, declare .SWHLP to be INTERN for .PSCAN callers. 206 (SPR 10-9709) Add code to print wild project and programmer numbers with "*" and "?" instead of "7". 207 (SPR 10-10004) Rework /RUN code for better consistency. In particular, if commands appear on the same line as the /RUN switch, process those commands before the switch. This then allows the /RUN switch to appear in the option file, SWITCH.INI. Switches which take files as arguments will now go to the caller's exit routine if specified. N.ZER and N.EZER are now INTERN for .PSCAN callers. 210 Correct a bug which incorrectly tested multiple word switches for duplication. 211 Add code and a new error message to distinguish in keyword switch values the difference between unknown values and ambiguous values. 212 Remove tests for old style alt-modes. 175 and 176 will now be legitimate characters. The old behaviour can be restored with the unsupported feature test FTALT==1. 213 Set FX.NDV even if no file specification is typed. 214 (SPR 10-10123) Remove PURESW since it does not work, is unsupported, and /H to LOADER is easier. 215 Create a dummy file SCANDM.MAC which can be loaded with other overlays of multi-segment programs to reserve SCAN's low-seg area. This will be updated with each release of SCAN. 216 Support FS.NFS (see SCNMAC edit 55). 217 Support FS.LRG (see SCNMAC edit 56). SCN4.DOC Page 27 220 Change symbol U.MOUT to FS.MOT. 221 Add routines .CKNEG and .SENEG. Declare them INTERN for caller's special numeric scan routines. 222 Implement a new routine .STOPN to convert file specifications from SCAN format to OPEN and LOOKUP format. This routine disallows wild-cards, but fully supports SFDs and the /DENSITY /PARITY and /PHYSICAL switches. Use this routine for indirect files and /RUN processing. 223 Add code to handle commands on the same line as the monitor commands R, RUN, or START. If the program is started with one of these and the same line has a left parenthesis, then the text within parentheses will be the command to the program. After finishing this command, SCAN will return to monitor command level. Thus, for example, the user can type: .RUN DIRECT (/F/W) and get the same effect as running the program and giving it the command /F/W and then typing ^C. 224 Add code to accept device TMPxxx: for indirect files. If the device does not exist, try TMPCOR using the first three characters of the file name. If that fails, try DSKxxx:nnnaaa.TMP where nnn is the job number in decimal with leading zeroes and aaa is the first three characters of the file name. 225 Add new routines for the caller, .PSH4T and .POP4T which push and pop the four temporary ACs. 226 Add new routines to scan a single core argument with optional K and P suffixes (.COREW and .COREC). Add switch routine .SWCOR for a switch which takes a core argument as its value. Add switch /RUNCORE:core arg which sets the core size to be used in the next /RUN switch. 227 Support FS.NUE (see SCNMAC edit 61). 230 Add new routines to handle quoted strings. .TICQT and .TISQT will set quote mode (usually to be on a double quote (")). In quote mode, all characters are passed literally including multiple spaces. pairs of the quote character represent the quote character. End of line will terminate the quote. Thus, for example, to represent the string -- 2+3"5 -- the user would type "2+3""5". Allow file names and extensions to be quoted. Add routines .SIXQW and .ASCQW to read quoted strings. If the string starts with neither quote, then it can contain only alphabetics and numerics. Add routines .SWASQ and .SWSXQ to handle switches with quoted string values. 231 Add routine .KLIND for LINK-10 to call on a /GO switch; it kills off the indirect file including deleting TMP files. Call this routine on a /RUN switch. SCN4.DOC Page 28 232 Add multiple switch values in .TSCAN and .PSCAN modes. These are exercized by the user typing /switch:(val1,val2,...valn). These require the calling program to accept the values via the special switch value exit routine. 233 Handle lower case in .TICAN. 234 Add routine .REEAT to cause the last character to be seen again (reeaten). 235 Require that switch values end with a non-alphanumeric. 236 Add switches /OKPROTECTION and /ERPROTECTION for WILD. 237 Support FS.VRQ (SCNMAC edit 65). 240 Make all errors during .OSCAN appear as warning messages. 241 Handle .VSCAN sticky values for multiple word values except for file verbs. 242 Change user's apply sticky routine to be called before allocating space. 243 Add routine .CLRFL which the caller can call to clear the file area. 244 Internal change only. 245 In .TSCAN mode, recognize @ only at start of line. 246 Add another argument to .ISCAN to allow the caller to control (issue) all prompt characters. 247 Cancelled by edit 271. 250 Correct a bug in the date defaulter. This bug had the effect that if the user typed /AFTER:21 at 21:10, meaning "after 2100 tomorrow", the result was actually "after 2200 today". The correct meaning is now implemented. 251 Correct a bug in the MONRT. logic which resulted in a bug when called from QUEUE and not logged in. 252 For the convenience of 2741 users, allow < and > as synonomous to [ and ]. 253 On an indirect file with no extension specified, if the .CCL file is not found, try the extension .CMD before trying the null extionsion. 254 Fix bug introduced in edit 200. SCN4.DOC Page 29 255 (SPRs 10-11399, 10-11423) Correct a bug which kept the values of the /BEFORE and /SINCE switches from applying to all succeeding files when typed before the file name. 256 In the type-out routine, correctly type all 5 SFDs. 257 Handle years greater than 2000 in the date typer. 260 Fix bug introduced in edit 224. 261 (SPR 10-11663) Allow Jan-1-1964 in dates. 262 (QAR 1400) Print "." after ".KJOB". 263 Add new routine .MNRET which always returns to the monitor. 264 Change .PSCAN to never handle the /RUN switch automatically. Add a routine .RUNCM which will handle the /RUN switch if typed and return otherwise. 265 Modify edit 230. 266 Correct a bug in .PSCAN when called in the middle of a line. 267 (QAR 1396) When in command line mode (from a monitor command such as ".DIRECT") if the command is continued, issue the prompt. 270 Modify edit 223. 271 Cancel edit 247. 272 Adopt "!" as an alternate comment character to agree with the standard DEC language commenting character. 273 When scanning an octal value, allow a trailing "." to force decimal. Ignore a trailing "." on decimal values. 274 Add a new error message when the user omits the value of a date/time switch: "Value missing in date/time". 275 Correct a bug introduced in edit 207. 2.1 SCNMAC Changes 53 Add comments to the definitions of .FX... area to indicate under what conditions each field is 0. 54 Add defensive PRINTXs to the SWTCHS macro. 55 Add flags concept to the switch tables. Implement FS.NFS for switches which do not constitute a command such as /RUN. 56 Add FS.LRG to allow default and maximum values which are greater than 2**17. SCN4.DOC Page 30 57 Add FS.MOT definition for flags on call to .TSCAN. 60 Add definition of flags to .TDIRB call. 61 Add FS.NUE to suppress caller exit on this switch. 62 Clean up listing of first page. 63 Allow * construction in keyword values to indicate that a single letter abbreviation is acceptable. 64 Add FX.PRT for /OKPROTECTION switch. 65 Add FS.VRQ to indicate a switch for which the value is required. 66 Remove the symbol FX.ADD which was obsoleted by edit 50 in version 3. 67 Test bad arguments to the SWTCHS macro only during pass 2. This eliminates some pass 1 error messages. 70 More of 67. 3.0 KNOWN BUGS AND DEFICIENCIES None. 4.0 INSTALLATION INSTRUCTIONS None. SCN4.DOC Page 31 5.0 SUGGESTIONS Add an output-only switch, /VERSION, which would take standard -10 format version numbers as argument. This would then be used to specify .RBVER when the file is ENTERed. Allow indirect files to nest. This would make their behavior be more like COMPIL. Allow .OSCAN to handle default file switches as well as general switches. Implement iteration loops with (). Implement verbal separators to allow commands such as "COPY A TO B" or "COPY B FROM A". Make SCAN (and perhaps WILD) be a separate segment which can be GETSEGged when needed. [End of SCN4.DOC] [SCN3.DOC is appended as an integral part of SCN4.DOC] SCN3.DOC Page 32 SCN3.DOC -- Changes from V2 to V3 October 1972 1.0 SUMMARY This release adds two new modes of command scanning. The first is "PSCAN", which handles partial line scanning, such as dialogue programs. The second is "OSCAN" which is sed during all SCANs to read optional user defaults from a user profile file. In addition, the /BEFORE and /SINCE switches have been added. These allow the user to subset wild-file selection to cover only those files created before and/or since a specific date-time. Many internal changes have been made and all SPR's have been answered. Many internal routines have been made available to the caller. SCAN version 3 runs on all monitors. It has been tested on 5.04A, and 5.05. SCAN version 3 depends on WILD version 4. There are no known deficiencies. SCAN version 3 is documented implicitly in the software notebook description of DIRECT and DUMP. Supporting documentation can be found in the .DOC files for WILD version 4 and DIRECT version 3. A formal specification for SCAN is under development. 1.1 Function of SCAN SCAN is designed to be used as a subroutine by programs needing a fairly complex command scanner. It supports four basic types of commands. one is the traditional form of OUTPUT DEVICE(s) = INPUT DEVICE(s). In this case, options are controlled by switches preceded by a slash. The switches are an abbreviated word. Values for the switch are indicated by following the switch name by a colon and the value. The second type of command structure is that each line consists of a verb followed by arguments (values). To indicate this type of command string, the prompt character has been made a slash. The third type of command structure is used when the caller issues a prompt, typically a dialogue question, and then needs to scan a particular construct. The fourth type of command structure can be used with the above three to read the user's profile and change the defaults. For convenience, SCAN includes a moderate error message facility and a comprehensive set of type-out routines. 2.0 CHANGES 130 (INTERNAL) All internal statements have been removed. All routines which seemed at all useful to the caller have been defined with "::". 131 (SPR 10-7212) When indirect files had continuation lines, spurious "#" were output. This is fixed. SCN3.DOC Page 33 132 (SPR 10-7212) "@TTY:" worked for only one line. The test has been changed to restrict only dectapes to a single block indirect file. 133 (INTERNAL) Tab equivalence testing is now a separate routine from the other equivalences (which are all control characters). This allows specialized handlers, such as quoted string scanners, to take advantage of the control equivalences. The new entry point is .TICHT. 134 (INTERNAL) A trivial bug in .CNVDT was fixed. 135 Add the inverse routine to .CNVDT. The new routine, called .CNTDT converts an internal format date-time word to the system format date and MSTIME. 136 Create .PSCAN to implement SCAN for callers which need partial or dialogue scanning. The first program to use this mode will be LOGIN, which is currently under development. This mode requires the caller to issue the prompt (which might be a question) and then call the various routines to SCAN an element of the result, such as a file spec or a sixbit name. 137 Change ALLDON to .ALDON so that calling programs can handle end of file. (Useful primarily in PSCAN mode). 140 (INTERNAL) When a CLRBFI is issued, the SCANPC is cleared so that blank discarding (beginning of line), etc., are reset. 141 (INTERNAL) Range tests were added to .CNVDT and .CNTDT to defend against junk arguments consistently. 142 Add two more arguments to .ISCAN call. one is the address of a routine to do TTY input (unless SCAN is reading from an indirect file). The other is the address of a routine to do a MONRET (exit if error or ^z). 143 (INTERNAL) Change all references to use .FX symbols in SCNMAC and change the name of the run argument storage area to N.XXX. 144 Add /BEFORE and /SINCE switches. Both require arguments of general date-time format, restricted (and defaulting) to the past. The effect is to constrain wild-card lookups to fail unless the selected file was created in the range of /SINCE through /BEFORE. If either is not specified, /BEFORE defaults to +INFINITY and /SINCE to 1-Jan-64. SCN3.DOC Page 34 DATE-TIME is of the following general format: An optional sign (+ or -), an optional date, and an optional time. if a sign is specified, it indicates past or future. (Both /BEFORE and /SINCE imply past, so + is illegal and - is ignored but accepted.) If both date and time are present, a colon separates the two fields. Spaces are illegal from the start of the switch through the end of its value (as with all switches). Two basic meanings of the argument are allowed: RELATIVE and ABSOLUTE. Relative specifies a distance from now, absolute specifies a specific date and time. A relative value is of the form: optional number of days followed by a "D", required hours, optional minutes, and optional seconds (seconds implies minutes). If days are absent, the time must be preceeded by a "+" or "-". Subfields are separated by colons. Thus, "-3D:4:27:21" means three days four hours twenty seven minutes and twenty one seconds ago. Similarly, "+4" means four hours from now. An absolute value is of the form: optional weekday or date, and optional time of day specification. A time of day is of the form hour (twenty four hour clock), optional minute, and optional second. Fields are separated by colons. Weekdays are the days of the week or any unique abbreviation. Dates are of the form: day of month, hyphen, mnemonic month; or mnemonic month, hyphen, day of month; or month of year, hyphen, day of month. The month can be abbreviated. Each of the three forms of date can be followed by an optional year specification of the form: hyphen followed by one, two, or four digits. Given the knowledge that a date is in the past or future (either implicit from the switch or specified by "+" or "-"), any unspecified subfields are filled in so that the result is the "next or last occurance of the specified date". In this case, if the time is omitted, it means 00:00:00 if past or 23:59:59 if future. Thus, for example: /AFTER:SAT After 23:59:59 Next Saturday /DATE:-WED Date of 00:00:00 Last Wednesday /SINCE:JUL-3-70:12 Since 3-July-1970 at Noon. /BEFORE:25-FEB Before Last Feb 25th. 145 Cancelled by 153. 146 Null file specifications are no longer flushed. Previously this resulted in poor results in queue which will be cured when queue is updated to call SCAN. 147 (INTERNAL) More of 144. 150 Add .OSCAN which handles option files. When called, OSCAN reads file "DSK:SWITCH.INI[,]/PHYSICAL" (i.e., the user's profile) (mnemonic for switch initialization) to find user specific defaults. This file consists of lines of the form program name followed by an optional colon and option name. The program name is an argument to .OSCAN (default is from .GTPRG) and the option name is the value of the /OPTION switch (see 151). No abbrebviations are allowed to the program name or option name. SCN3.DOC Page 35 The rest of the line is switches with optional values separated by "/", ",", or " ". These switches supply defaults for switches not specified by the user, but are ignored if the user specifies the switch explicity. The list of switches which the user can type need not be the same as the list from the profile file, but usually they should be the same. For example, if the user decided that he normally prefered /FAST format directory listings, he could create a line in the file named SWITCH.INI in his UFD. This line would be: "DIRECT /fast" and all his directory listings would be in /FAST format unless he typed /NORMAL or /SLOW (the complements of /FAST in direct). Similarly, if the user found that the DUMP defaults were not to his liking, he could create a line "DUMP/IRADIX:8/ORADIX:8" and DUMP would always start off in octal mode. He could then add a line "DUMP:DECIMAL/IRADIX:10/ORADIX:10" and he could use the command "/OPTION DECIMAL" to DUMP in order to switch it to decimal radix. 151 Add new switch /OPTION:OPTION-NAME to specify the default option of this program (see 150). 152 Add entry .SWFIL to SCAN a file specification for a file switch. 153 Cancel edit 145. 154 Correct bugs in 150 when option file is missing. The lookup error can be 0, 1, 23, or 24 to avoid an error message. 155 Add routine .TERRP which types the leading question mark and text of error messages 156 Split SCAN into four sub-modules--.SCAN, .TOUTS, .CNTDT, and .SAVE to handle scanning, typing, date conversion, and preserved AC saving. There is still one source and one .REL file, but a subset of modules can be selected by library searching SCAN.REL. 157 Create universal SCNDCL to pass parameters to the four submodules. 160 Handle numbers in the illegal character message. 161 Update LASCHR on string input (.TIGET) to handle EOF in a string correctly for DUMP. 162 Define .SCANZ, .SCANL, .TOUTZ, .TOUTL as start and length of low segments for SCAN and TOUTs. 163 Clean up EXTERNs by running GLOB.SNO. All EXTERN statements have been removed (and INTERNs) and each occurence has been replaced with ## (and ::). 164 Give the caller exit only on the caller's switches. 165 Add .TTABC routine to type a tab, etc. SCN3.DOC Page 36 166 Allow for partial word in last word of indirect file buffer. If this word is incomplete, then bit 35 should not be examined to look for sequencing. 167 Add .TTIME, .TDATE to type out date and time. 170 Make multi-word area handle worst case (30. WORDS). 171 Correct a bug in .TRDXW to handle an argument of 1B0 in the general radix output routine. 172 Correct a bug in .NAME to correctly recognize a six-character input name (SWITCH) when matching "*" entry (e.g., "NORMAL" in direct). 173 Correct a bug in .FMSGX which would foul up the push-down pointer under .TSCAN mode. This routine is called on errors and /HELP switches. 2.1 Changes to SCNMAC.MAC 50 (INTERNAL) Add symbols for all the words and lengths in the SCAN block. Add FX.TRM and FX.DFX for WILD. Introduce .FXTRA, .FXTRO, .FXTRN, and .FXTRC. Obsolete FX.ADD. 51 (INTERNAL) Add FX.NDV for the /RUN processing. 52 Make SCNMAC useable as a universal file (the same techniques as C.MAC). Define %.C==-3 to use as a universal. 3.0 KNOWN BUGS AND DEFICIENCIES Sub file directories and the /PHYSICAL switch are not supported in run and indirect processing. Error routines type 777777 instead of * for WILD directories, etc. The routine .TDIRB needs to be improved to handle the directory mask words. 4.0 INSTALLATION INSTRUCTIONS None. 5.0 SUGGESTIONS Change "+" to "!" for the inclusive or function. Use "+" only for file concatenation. SCN3.DOC Page 37 Allow indirect files to nest. This would make their behavior be more like COMPIL. Implement the separator "-" to mean "EXCEPT", the way "+" means "INCLUSIVE OR". Thus, A.*-A.B would mean all files named a except A.B. Implement iteration loops with <> or (). Implement verbal separators to allow commands such as "COPY A TO B" or "COPY B FROM A". Implement the operator service style command SCAN. This is essentially a verb SCAN except that the job will run when"WAITING" for a command. This is indicated by the prompt character !. Make SCAN (and perhaps WILD) be a separate segment which can be GETSEGGed when needed. Allow .OSCAN to handle default file switches as well as general switches. [End of SCN3.DOC] [End of SCN7D]