Google
 

Trailing-Edge - PDP-10 Archives - bb-d549g-sb - scn7b.doc
There are no other files named scn7b.doc in the archive.


SCAN.DOC -- Changes from V7A to V7B(572)
June 1975






























Copyright (C) 1972,1974,1977
Digital Equipment Corporation, Maynard, Mass.


This software is furnished under a license for use only  on  a  single
computer system and may be copied only 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 except for
use on such system and to one  who  agrees  to  these  license  terms.
Title  to  and  ownership of the software shall at all times remain in
DEC.

The information in this software is subject to change  without  notice
and  should  not  be  construed  as  a commitment by Digital Equipment
Corporation.

DEC assumes no responsibility  for  the  use  or  reliability  of  its
software on equipment which is not supplied by DEC.
SCN7B.DOC                                                       Page 2


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 3


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 4


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 5


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 6


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 7


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 8


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 9


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 10


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 11


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 12


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 13


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 14


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 15


     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 16


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 17


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 18


     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 19


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 20


(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 21


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 22


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 23


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 24


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 25


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 26


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 27


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 28


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 29


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 30


     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 31


     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 32


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 33


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]