home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / EDITOR / SFGR.ARK / SFGR.DOC < prev    next >
Text File  |  1986-10-02  |  41KB  |  1,123 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                **************************************************
  8.                *                                                *
  9.                *                    S F G R                     *
  10.                *                    -------                     *
  11.                *                                                *
  12.                *         SCREEN FORMAT GENERATOR PROGRAM        *
  13.                *                  FOR CP/M-80                   *
  14.                *                                                *
  15.                *                 VERSION  1.00                  *
  16.                *                                                *
  17.                *       Copyright (c) 1986  Harris Landsberg     *
  18.                *                                                *
  19.                *                Harris Landsberg                *
  20.                *              1350 East 5th Street              *
  21.                *                   Suite 1-J                    *
  22.                *            Brooklyn, New York 11230            *
  23.                *                                                *
  24.                *                 1-718-951-7075                 *
  25.                *                                                *
  26.                **************************************************
  27.  
  28.  
  29.                                    COPYRIGHT
  30.                                    =========
  31.  
  32.           No part of this  documentation, software system, source  code  or
  33.      technical information used in  this system may be sold,  either  stand
  34.      alone or as part of another package, without the written permission of
  35.      the author. Object produced through the program source code written by
  36.      the user  may be distributed  as the writer pleases,  but  the  author
  37.      requests a copy as a thankful gesture for program use.
  38.           It is presently intended that software may be shared freely,  but
  39.      the author requests a modest donation of $10.00 if you  find it useful
  40.      in any way. Those who make a contribution will be  entitled to support
  41.      and software updates if any should arise.
  42.           The author reserves the  right to later repackage  this  software
  43.      system for  sale with  other software. Any  alterations  made  to  the
  44.      software, source code or  documentation should be sent to  the  author
  45.      for final approval. This is done to keep the integrity  and quality of
  46.      the software at the standard the author deems fit.
  47.  
  48.                                 LIMITED WARRANTY
  49.                                 ================
  50.  
  51.           The author  warrants this product  to run under CP/M  2.2  on  an
  52.      Epson QX-10/16 with Televideo  920 terminal emulation.  Every  attempt
  53.      will be made  to isolate terminal specific  instruction,  and  provide
  54.      either an installation program or  patch instructions. See  applicable
  55.      documentation and technical information for further reference.
  56.           No other warranties are expressed or implied including warranties
  57.      of merchantibility, fitness for a particular purpose. Nothing in  this
  58.      statement shall be  construed as a written  statement  guarantee.  You
  59.      have specific legal rights, but that is only if you make the requested
  60.      contribution of $10.00. All rights reserved.
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.      Table of Contents                                            Page
  76.  
  77.        1.  Introduction . . . . . . . . . . . . . . . . . . . . .    3
  78.        2.  Screen Specifications. . . . . . . . . . . . . . . . .    4
  79.        3.  Display Specifications . . . . . . . . . . . . . . . .    6
  80.        4.  Running SFGR from CP/M-80. . . . . . . . . . . . . . .   11
  81.        5.  Error Messages . . . . . . . . . . . . . . . . . . . .   12
  82.        6.  Technical Information. . . . . . . . . . . . . . . . .   14
  83.        7.  The User Support Concept . . . . . . . . . . . . . . .   16
  84.        8.  Registration Form. . . . . . . . . . . . . . . . . . .   17
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.                                        2
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.                                   Introduction
  140.                                   ------------
  141.  
  142.           The SFGR Compiler is  intended to process  user-generated  screen
  143.      format specifications and produce a display screen format object  file
  144.      that can be loaded at  run-time by a program. SFGR is a utlity on  the
  145.      IBM System 34/36 mini-computer systems and used primarily with the RPG
  146.      language. It is also interfaced with Cobol and Basic on  those systems
  147.      running under SSP, System Support Program.
  148.           This version  is intended to  run under CP/M-80  version  2.2  or
  149.      higher. It can  be interfaced with any  language to drive  the  screen
  150.      displays, user  response,  and  input/output.  This  implimentaion  is
  151.      System  34/36 compatible, with all examples provided tested under  the
  152.      System 36 environment. Some restriction  apply and not all  attributes
  153.      have been implimented. This document will point out such discrepencies
  154.      where it is deemed appropiate.
  155.           In addition  to generating  a  screen  object  format,  SFGR  can
  156.      generate a listing, either to the screen, printer or file, listing the
  157.      source specifications and diagnostic or informational messages for use
  158.      with implimenting the screen format. These are:
  159.  
  160.           a) Output buffer description.
  161.           b) Input buffer description.
  162.           c) Indicators used.
  163.  
  164.           A utility program is provided called FVIEW that will page through
  165.      a screen format file and display output constants with output variable
  166.      as "*". The proper syntax  is FVIEW [d:]filename, with  file-extension
  167.      assumed as ".FMT".
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.                                        3
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.                              Screen Specifications
  206.                              ----------------------
  207.  
  208.           The first record in  a display format specification is  a  screen
  209.      format specification statement. This  control statement  provides  the
  210.      necessary information to the support  program that is relavent to  the
  211.      entire display screen. It sets up where the display screen  will start
  212.      and for how may lines should be cleared prior to  its display. Also it
  213.      identifies the allowable command key response allowed by the user, and
  214.      the name to call this format screen.
  215.           The following are the valid screen specification fields that  are
  216.      implimented and their meaning.
  217.  
  218.      Sequence Number (Columns 1-5)
  219.  
  220.           Columns 1 through 5 may  contain record sequence information.  It
  221.      is ignored by the SFGR  Compiler, but is listed when listing has  been
  222.      requested. This field is not required.
  223.  
  224.      Form Type (Column 6)
  225.  
  226.           Column 6 must contain the character "S" to identify that  this is
  227.      a screen specification. This is required field.
  228.  
  229.      Format Name (Coumns 7-14)
  230.  
  231.           This entry gives a unique name to the screen format that is being
  232.      defined. Duplicate names in  the same source program are  invalid  and
  233.      will be flagged by the SFGR Compiler. The first character  must not be
  234.      blank, and blanks cannot be embedded within the name. The  format name
  235.      can be  a combination  of any character  except ","  (comma)  and  "'"
  236.      (quote). The format name must be 8 characters or less.  If there is an
  237.      "*" in column 7 then that record is considered a comment.
  238.  
  239.      Start Line Number (Columns 17-18)
  240.  
  241.           The start line number  where the display will begin.  The  actual
  242.      start line number  on which a field  begins is calcuated  through  the
  243.      following equation:
  244.  
  245.                 Actual Line # = Start Line # + Display Row # -1
  246.  
  247.           Entried allowed for start line number:
  248.  
  249.           Blank     Line 1 of the display screen is assumed as start.
  250.           1-24      Specifies the line where the display is to begin.
  251.           V         Variable start line defined by within program.
  252.  
  253.      Lines to Clear (Columns 19-20)
  254.  
  255.           Specifies the number of  lines to clear prior to  displaying  the
  256.      screen format. Valid entries are between 0 and 24, with  blank assumed
  257.      as entire screen (24 lines)
  258.  
  259.  
  260.  
  261.  
  262.                                        4
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.      Lowercase (Column 21)
  272.  
  273.           Specifies whether all alphabetic characters will be displayed and
  274.      sent to the user program in lowercase or uppercase. Allowable  entries
  275.      are N (or blank)  for all alphabetic characters are  uppercase, and  Y
  276.      for alphabetic letters can be sent in lowercase.
  277.  
  278.      Sound Alarm (Columns 25-26)
  279.  
  280.           Allow the bell to  sound prior to screen display.  Valid  entries
  281.      are N (or blank) for the bell not to sound and Y for the bell cast its
  282.      lovely sound. Also allowed are indicators (an internal switch that can
  283.      be turned on  or off by the  user program) 01 through 99.  If a  valid
  284.      indicator is on, the the bell will sound.
  285.  
  286.      Enable Function Keys (Column 28)
  287.  
  288.           Allow operator to use command keys to control program  operation.
  289.      You use enable function keys  to allow command keys to be allowed.  If
  290.      functions are not  enabled then all function  keys are  disabled.  The
  291.      specific command keys to be enabled are defined in the key mask.
  292.  
  293.           Valid entries for enable function keys:
  294.  
  295.           Blank     All command keys are disabled. Key mask is ignored.
  296.           Y         Command keys identified in key mask are enabled.
  297.           N         Same as blank.
  298.           R         Retain previous mask. Not implimented.
  299.  
  300.      Key Mask (Columns 64-79)
  301.  
  302.           The key mask  is a string of  letters that identify  the  command
  303.      keys that  are enabled for  this screen. The key  mask must  begin  in
  304.      column 64 and cannot  contain embedded blanks. Letters may  be put  in
  305.      any order, though alphabetically would be easier to read.
  306.           This SFGR  Compiler has  only  implimented  10  command  keys.  A
  307.      command key is the ESC  character followed by a number from 1  through
  308.      10. On System  34/36 machines there are  24 allowable  indicators.  An
  309.      implimentation of SFGR in MS-DOS  by Lattice impliments only 10.  This
  310.      version impliments only 10,  because in most applications  written  on
  311.      System 34/36 only use the first 10 indicators.
  312.           The alphabetic letters A through  J correspond to command keys  1
  313.      through 10, respectively.
  314.  
  315.           Note: No  provision has  been  made  to  impliment  blink  cursor
  316.      function, return input, erase  input fields and function  keys.  These
  317.      were either deemed inappropriate for  CP/M-80 or lack of use by  users
  318.      of the System 34/36 environment.
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.                                        5
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.                              Display Specifications
  338.                              ----------------------
  339.  
  340.           The records that follow the screen specification are known as the
  341.      display specifications. They define a  field on the display, and  each
  342.      field must have its own record. A field can be  either constant output
  343.      or variable input/output depending on how it is defined.
  344.  
  345.      Sequence Number (Columns 1-5)
  346.  
  347.           Columns 1 through 5 may  contain record sequence information.  It
  348.      is ignored by the SFGR  Compiler, but is listed when listing has  been
  349.      requested. This field is not required.
  350.  
  351.      Form Type (Column 6)
  352.  
  353.           Column 6 must contain the character "D" to identify that  this is
  354.      a display specification. This is required field.
  355.  
  356.      Field Name (Columns 7-14)
  357.  
  358.           This entry specifies the name of the field being defined  and can
  359.      have a maximum of 8 characters. It is used for  reference only and not
  360.      included in  the screen object  format. There need not  be  any  match
  361.      between the name given and  the actual name used in your program,  but
  362.      it is  suggested, for debugging  purposes, that  they  are  identical.
  363.           An asterisk in column 7 identified this record as comment record,
  364.      except when this is a  continuation record. If the previous record  is
  365.      an output constant and requires a continuation, and has the letter "X"
  366.      in column 80, then the continuation line starts in column 7.
  367.  
  368.      Field Length (Column 15-18)
  369.  
  370.           Specifies the length of  the field. The field number  may be  any
  371.      number from 1 to 1840. The value must be right-justified  with leading
  372.      zeros allowed, but not required.
  373.           This implimentation limits the length for output variables to 250
  374.      positions. For input fields the maximum is 80 and cannot  cross screen
  375.      line boundries. For output constant the maximum is 96 characters, with
  376.      only one continuation line allowed  per field. This is sufficient  for
  377.      most applications. Also  a maximum of 250  variable input  fields  are
  378.      allowed per screen format.
  379.  
  380.      Line Number (Column 19-20)
  381.  
  382.           Specifies the number of  the line relative to the  start line  as
  383.      defined in the screen specification statement. The actual  calculation
  384.      was given by the start line definition. The actual line  number cannot
  385.      exceed the  maximum lines for  the entire screen. The  value  must  be
  386.      right-justified with leading zeros allowed, but not required.
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.                                        6
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.      Column Position (Column 21-22)
  404.  
  405.           Specifies the column number of  the first position in the  field.
  406.      Valid numbers are  between 1 through 80.  It must  be  right-justified
  407.      with leading zeros allowed, but not required.
  408.  
  409.      Output Data (Columns 23-24)
  410.  
  411.           If a "Y" is specified in column 23 and a "C" appears in column 56
  412.      then the data  specified in columns 57  through 79,  and  continuation
  413.      line if it applies, is  displayed. If a "C" does not appear in  column
  414.      56 then the data to be displayed is taken from the output buffer.
  415.           If a "N" is  specified in column 23 then  no output is  performed
  416.      for this specification statement.
  417.           If an indicator (from 01 through 99) is specified, then when that
  418.      indicator is  set on,  then information  from  the  output  buffer  is
  419.      displayed. If the indicator has not been set on, then  the data within
  420.      the buffer for the field  length of position is not displayed but  the
  421.      buffer pointer is advanced.
  422.           If an output field  is also defined as an  input field, then  the
  423.      data is moved into the  input buffer and displayed and can be  changed
  424.      by the program user.
  425.  
  426.      Input Allowed (Column 26)
  427.  
  428.           This allowes whether this field is an input field. The  allowable
  429.      type of data is defined in the data type entry.  Valid entries are "Y"
  430.      or "N". The input buffer is allocated only for "Y" entries.
  431.  
  432.      Data Type (Column 27)
  433.  
  434.           This entry defines the  type of data that can  be entered for  an
  435.      input field. This SFGR Compiler limits it to the following:
  436.  
  437.           B (or blank)   Can contain any valid typing character.
  438.           N              Numeric data only. (0-9,.,-)
  439.  
  440.           All other types are  not implimented and will be  flagged by  the
  441.      SFGR Compiler. We hope in  the future to impliment more data types  if
  442.      there is a request for them. Here is a quick  list of extra data types
  443.      available on a System  36: A - alphabetic only.  S - signed  numerical
  444.      data. R - data from magnetic tape reader. Z -  cursor moves from right
  445.      to left. D -  decimal data. K - Katakana   characters. E - mixture  of
  446.      different characters.
  447.  
  448.      Adjust Fill (Column 31)
  449.  
  450.           If Z is specified then  information entered into this field  will
  451.      be right-justified  and unused positions  will be  filled  with  zeros
  452.      before exiting field. If B is specified then information entered  into
  453.      this field will be right-justified and unused positions will be filled
  454.      with blanks before exiting field. A field exit key must  be pressed to
  455.      exit the field for it to take affect.
  456.  
  457.  
  458.  
  459.  
  460.                                        7
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.      Position Cursor (Columns 32-33)
  470.  
  471.           This field is used to explicitly position the cursor. Usually the
  472.      cursor is positioned at the first input field defined after the screen
  473.      specifications, but with this entry you can change all that.  If there
  474.      is more than one position cursor enabled at time of  display, then the
  475.      cursor is positioned at the first field that has enable indicator.
  476.           If a "Y" is specified in column 32, the cursor appears will start
  477.      at this filed, unless other fields have prior have cursor  positioning
  478.      enabled. A "N" (or blank), the cursor is not positioned in this field,
  479.      unless it is the first input field defined after the "S" specification
  480.      and no other fields have cursor positioning enabled.
  481.           If an indicator (from 01 through 99) is specified, then when that
  482.      indicator is set on, then the cursor will be positioned unless a prior
  483.      field has cursor positioning  enabled. If the indicator has  not  been
  484.      set on, then the cursor  won't be positioned unless this is the  first
  485.      input field specified for that screen format.
  486.  
  487.      Controlled Field Exit (Column 35)
  488.  
  489.           If you specify "Y" for this field, then a field  exit key must be
  490.      pressed to exit field. A  "+" will be used for  delete-to-end-of-field
  491.      and justifying. TAB will be used for simple exit of field. The regular
  492.      cursor keys will not be allowed, and once you come  to the end of this
  493.      field, the cursor will not advance to the next field. A "N" (or blank)
  494.      means a  field exit  can be  used (should be  used when  you  want  to
  495.      justify input, especially numeric data) but is not required. Also, the
  496.      cursor will advance to  next field when the position  of the  previous
  497.      field has been entered.
  498.  
  499.  
  500.      Auto Record Advance (Column 36)
  501.  
  502.           If you specify  "Y" for this field,  the entire screen  of  input
  503.      will be returned when the  operator has either: a) completed the  last
  504.      position of  the field  that does not  require a field  exit.  b)  has
  505.      pressed the "+" key as field exit whether field requires field exit or
  506.      not. A "N" (or blank) means after entering field the  cursor will then
  507.      go to next field. Normally, a program requires the ENTER key key to be
  508.      depressed for  input data  to be  returned to  a  program.  With  auto
  509.      advance enabled the screen will  be returned without the need for  the
  510.      ENTER key. Note: you can  bypass field with TAB to exit field and  not
  511.      return input to program. The cursor keys can be used  too if the field
  512.      is not control field exit enabled.
  513.  
  514.      Protect field (Column 37-38)
  515.  
  516.           If you  specify "Y" in  column 37, this field  will  be  bypassed
  517.      whenever input is requested. If "N" (or blank) then normal  processing
  518.      will take place for this field, meaning input allowed.
  519.           If an indicator (from 01 through 99) is specified, then when that
  520.      indicator is set on, then  the cursor bypass this field for input.  If
  521.      the indicator has not been set on, then the field will not be bypassed
  522.      when input is requsted for display format.
  523.  
  524.  
  525.  
  526.                                        8
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.      High Intensity (Columns 39-40)
  536.  
  537.           If you specify "Y" in column 39, this field will  be displayed in
  538.      high intensity. If "N"  (or blank) then this field  will be  displayed
  539.      with normal  intensity. If  an  indicator  (from  01  through  99)  is
  540.      specified, then when that indicator is set on, then the  field will be
  541.      displayed in high intensity. Otherwise, if the indicator has not  been
  542.      set, then the field will be displayed in normal intensity.
  543.  
  544.      Blink Field (Columns 41-42)
  545.  
  546.           If you specify  "Y" in column 41,  this field will  be  displayed
  547.      with blink attributes. If "N"  (or blank) the field will be  displayed
  548.      in normal non-blink attributes. When an indicator (from 01 through 99)
  549.      is specified, then when that indicator is set on, then  the field will
  550.      be displayed blinking. Otherwise, if  the indicator has not been  set,
  551.      then the field will not be blinking.
  552.  
  553.      Nondisplay Field (Columns 43-44)
  554.  
  555.           If you specify "Y" in column 43, this field will not be displayed
  556.      on the screen. If an input field, characters will not  echo. If "N" or
  557.      blank the field will be displayed in normal non-blink attributes. When
  558.      an indicator  (from 01  through  99)  is  specified,  then  when  that
  559.      indicator is  set on,  then the  field  will  be  displayed  blinking.
  560.      Otherwise, if the indicator has not been set, then the  field will not
  561.      be blinking.
  562.           A note on mixing  screen attributes: If nondisplay  is  specified
  563.      together with high intensity,  reverse image, or underline,  then  the
  564.      field will be assumed as nondisplay.
  565.  
  566.      Reverse Image (Colum 45-46)
  567.  
  568.           If you specify "Y" in column 45, this field will  be displayed in
  569.      reverse image. If "N" (or blank) the field will be displayed in normal
  570.      attributes. When an indicator (from 01 through 99) is specified,  then
  571.      when that indicator  is set on, then  the field will be  displayed  in
  572.      reverse image. Otherwise, if the indicator has not been set,  then the
  573.      field will not be in reverse image.
  574.  
  575.      Underline (Columns 47-48)
  576.  
  577.           If you specify  "Y" in column 47,  this field will  be  displayed
  578.      with the underline atttribute. If "N" (or blank) then this  field will
  579.      be displayed without underline. When an indicator (from 01 through 99)
  580.      is specified, then when that indicator is set on, then  the field will
  581.      be underlined. Otherwise, if the indicator has not been set,  then the
  582.      field will not be without an underline.
  583.  
  584.      Column Separator (Column 49)
  585.  
  586.           Most computers cannot display column separators, so an  underline
  587.      is usually substituted. If "Y" is specified then the column  separator
  588.      attribute is used. If "N" (or blank) then it is not used.
  589.  
  590.  
  591.  
  592.                                        9
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.      Constant Type (Column 56)
  602.  
  603.           This field specifies whether  constant information is  output  or
  604.      data is to be taken from the output buffer. If  "C" is specified, then
  605.      constant data is assumed. An indicator cannot be used for  output data
  606.      field if constant data  is used. (Nondisplay field should  be used  if
  607.      you do not want to display on an indicator.)
  608.           If column 56 is blank, the display record is an  output variable,
  609.      even if constant data is specified in columns 57 through 79. This last
  610.      statement makes this SFGR not entirely in conformity with SFGR  on the
  611.      System 34/36. In most situations, you specify a "C" for  constant data
  612.      even if columns 57-79 are not blank.
  613.  
  614.      Constant Data (Columns 57-79)
  615.  
  616.           This specifies the data  constant that is to be  displayed in  an
  617.      output or input/output field. This is the actual constant data  and if
  618.      longer than 23 characters it is continued on the next  record starting
  619.      in column 7 and continues until column 79 of that record. If the field
  620.      consists of all blanks, then all blanks should be typed in, especially
  621.      when a continuation record is needed.
  622.  
  623.      Continuation (Column 80)
  624.  
  625.           If more than 23 characters of constant data is needed,  an "X" is
  626.      placed in column 80 to indicate that the record is continued. Only one
  627.      continuation record per field is allowed in this version. Positions  7
  628.      through 79 of the next record contain the continuation data. And to be
  629.      compatible with System 4/36 SFGR, comments should not follow a  record
  630.      with an "X" in column 80.
  631.  
  632.      General Note:
  633.  
  634.           Unused columns within a record should be left blank, but will not
  635.      be flagged  by this SFGR  Compiler. Also, try to  limit all  types  of
  636.      lines to 80 characters. (132  character lines can be used safely,  but
  637.      is not recommended.) For all  comments, please use an "*" in column  7
  638.      for any record type  except a continuation record. The  SFGR  Compiler
  639.      ignores such lines. Also, put comments after the screen  specification
  640.      that are relevant to the screen format.
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.                                        10
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.                            Running SFGR from CP/M-80
  668.                            -------------------------
  669.  
  670.           Running the SFGR from command line is easy. All that is needed is
  671.      compiler (SFGR.COM) and error  message file (SFGR.ERR). If  the  error
  672.      message file is not on  the current disk, then errors will be  flagged
  673.      without a display message. No  space is saved in not having the  error
  674.      message file. There are three options that can be used for listing the
  675.      source member. The listing includes the source with error flagging  at
  676.      the line, output buffer description, input buffer description, and the
  677.      indicators used. The switches are:
  678.  
  679.           no switch      no listing except for error to console.
  680.           /S             listing to screen with everything.
  681.           /P             same as above, but to the printer.
  682.           /F             listing to file with ".LST" extension.
  683.  
  684.           The file extension of a screen format source is ".SCR".  The SFGR
  685.      Compiler requires this  extension and cannot be  changed.  The  output
  686.      format object file has a ".FMT" extension. The temporary file  has the
  687.      standard ".$$$" extension, and will be renamed ".FMT" if no errors are
  688.      found in the source  member. If an unsuccessful compile  occured,  the
  689.      previous format object file is not deleted or changed in any way. This
  690.      is nice when you blunder something so bad, and forgot to make a backup
  691.      of the original source.
  692.           Input source member,  Output object file, and  listing  file  are
  693.      placed or found on the same drive. Current drive will  be used, unless
  694.      you specify a diffent drive. User areas are not directly  supported in
  695.      this compiler. Here is the proper syntax:
  696.  
  697.           SFGR [d:]filename [/x]
  698.  
  699.           Where d: is the drive  where the source is found and object  will
  700.      be created. It is optional, defaulting to current drive. For  filename
  701.      is a valid CP/M filename with an extension of ".EXT" (Must be left off
  702.      or switches will be  ignored.). The /x is a  valid switch as  pictured
  703.      above. Must be uppercase (CP/M  changes it to uppercase) and if it  is
  704.      not valid it will be ignored. Usually use /S.
  705.           After the compilation, a message of how many format screens  that
  706.      are within the compiled member are displayed. A maximum of 250 screens
  707.      are allowed for each source member. Also, the exact count  of how many
  708.      bytes generated is displayed. On  disk, it will be written in  records
  709.      of 128 bytes, the CP/M standard.
  710.           The ".FMT" object file can be quickly viewed, paged by screen, to
  711.      find it compiled normally by  using the FVIEW utility. It is a  simple
  712.      program that will display constant output without extra attributes and
  713.      variable output as a series  of "*". To run type: FVIEW  [d:]filename,
  714.      and press ENTER to view next screen and ESC to end program.
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.                                        11
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.                               SFGR Error Messages
  734.                               -------------------
  735.  
  736.           The following are the 15 error message that are used for the SFGR
  737.      Compiler Version  1.00. These may  be edited to your  taste  with  the
  738.      provided utility EDITERR. To run  this program type: EDITERR  [d:]SFGR
  739.      where d: is optional  drive. Format of each record  is 64 byte  random
  740.      record with zero  hex fill at end.  This error message editor  is  the
  741.      same one provided with the SPL compiler package. If the  file SFGR.ERR
  742.      is not found it will be created on the specified or current drive.
  743.           This program can edit any  other file with ".ERR" extension  with
  744.      the substitution of SFGR for a different file name. Entering 9999 will
  745.      exit from this program.  See technical section for  possible  terminal
  746.      specific code such as clear screen and cursor positioning.
  747.  
  748.           1) NO S SPECIFICATION PRIOR TO D SPECIFICATIONS
  749.  
  750.           You have forgotten to specify a screen specification record prior
  751.      to the display specification. The SFGR Compiler must know what  screen
  752.      format will receive the  display. The screen specification  names  the
  753.      screen format, so it can be called by a program.
  754.  
  755.           2) INVALID SPECIFICATION, MUST BE EITHER S OR D
  756.  
  757.           You have specified in column  7 something other than a "S" for  a
  758.      screen specification or "D" for a display specification. It must  also
  759.      be in uppercase. Help specifications are not supported in this release
  760.      of the SFGR Compiler.
  761.  
  762.           3) MUST SPECIFY INPUT/OUTPUT IN D SPECIFICATION
  763.  
  764.           You forgot to put a "Y" for input/output data or  did not specify
  765.      an indicator for output. It must be uppercase. How is  SFGR suppose to
  766.      know what you want to do if you don't tell it?
  767.  
  768.           4) FIELD OVERLAPS WITH A PREVIOUSLY DEFINED FIELD
  769.  
  770.           The current field overlaps with another field that was previously
  771.      defined for the same  screen format. You may have  expanded the  field
  772.      and did not realise  it overlapped or you forgot  to place the  screen
  773.      specification statement properly.
  774.  
  775.           5) INVALID LINE NUMBER SPECIFIED IN COLUMN 19-20
  776.  
  777.           There are a maximum  of 24 lines on the  entire screen. You  must
  778.      take into account the starting line number. So if you  display on line
  779.      18 when starting line number is 10, then it will be invalid.
  780.  
  781.           6) INVALID COLUMN NUMBER SPECIFIED IN COLUMN 21-22
  782.  
  783.           Only supports columns 1 through  80. If columns 21-22 are  blank,
  784.      then this error will occur. If greater than 80, too. Terminal that can
  785.      display 132 characters are only supported to 80 column width.
  786.  
  787.  
  788.  
  789.  
  790.                                        12
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.           7) INVALID FIELD LENGTH SPECIFIED IN COLUMN 15-18
  800.  
  801.           The usual cause is when columns 15 through 18 are left blank. The
  802.      other cause if you  have an input field that  crosses from one  screen
  803.      line to another. The final cause is if you specified  a number greater
  804.      than 250 for output field.
  805.  
  806.           8) INVALID KEY MASK STRING SPECIFIED IN COLUMN 64-79
  807.  
  808.           Letters greater than "J" (command key 10) are not supported. Also
  809.      they must be in uppercase.  Numbers 1 through 5 are function keys  and
  810.      are not implimented in this version.
  811.  
  812.           9) EMBEDDED BLANKS OR BLANK FORMAT NAME IN COLUMN 7-14
  813.  
  814.           The format name must be one word without any blank preceeding it.
  815.      If all blank  or blanks embedded then  you will see this  nasty.  Name
  816.      must be blank padded on the right if less than 8 letters.
  817.  
  818.           10) INVALID START LINE NUMBER SPECIFIED IN COLUMN 17-18
  819.  
  820.           Either 0 entered, number greater than 24, or invalid letter.
  821.  
  822.           11) INVALID LINES TO CLEAR SPECIFIED IN COLUMN 19-20
  823.  
  824.           Can only clear up to:  (24 - start line + 1). Probable cause  was
  825.      clearing of more than available lines.
  826.  
  827.           12) DUPLICATE FORMAT NAME SPECIFIED IN COLUMN 7-14
  828.  
  829.           The format name has appeared in a screen specification of a prior
  830.      record. The format name must be unique within a member.
  831.  
  832.           13) UNIMPLIMENTED DATA TYPE, MUST BE EITHER N OR BLANK
  833.  
  834.           This version of SFGR limits you to only two types of data. You've
  835.      specified a data type  which was not implimented or  is invalid.  Also
  836.      the "N" or "B" must be in uppercase if specified.
  837.  
  838.           14) EXCEEDED THE MAXIMUM OF 250 INPUT FIELDS PER SCREEN
  839.  
  840.           SFGR cannot  handle more than  this without  overflow.  Also  the
  841.      driver program is  index with a maximum  of 250 input field.  This  is
  842.      only per format screen not  per format member. A theorectical  maximum
  843.      of 62,500  input fields are  allowed per format member.  There  is  no
  844.      limit for output specifications, however.
  845.  
  846.           15) INDICATOR CANNOT CONDITION OUTPUT FOR A CONSTANT
  847.  
  848.           Provided to keep System 34/36 compabibility.
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.                                        13
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.                              Technical Information
  866.                              ---------------------
  867.  
  868.           The following information is provided for users to impliment SFGR
  869.      format object code in any  language. It is preferable to impliment  it
  870.      for RPG II (Report Program Generator), but I am not about to write one
  871.      on the spur of the  moment. An implimentation of the driver will  soon
  872.      be written in SPL (one of my other lanaguages) and  Modula-2. They may
  873.      provided an easy way to modify for your own type  of screen. My screen
  874.      responds to something close to Televideo 920. This is for  Epson QX-10
  875.      and QX-16 machines and very close to a Kaypro.
  876.           There are two commercially  known SFGR Compilers for the  IBM  PC
  877.      family. One by Lattice,  and is packaged with their  RPG II  Compiler.
  878.      The other  is by California  Software, which is  packaged  with  their
  879.      development system of Baby/36.  Both generate SFGR code  that  appears
  880.      quite different and are more System 34/36 compatible. Baby/36 will run
  881.      nearly everything that runs  on an IBM System 34/36  (in color if  you
  882.      have a color monitor, of course). Lattice to a lesser degree.
  883.           For the FVIEW and EDITERR utilities the following is the possible
  884.      terminal specific instructions: Clear screen  puts a 1AH character  to
  885.      the screen. Cursor positioning puts an ESC "=" row+31 col+31. There is
  886.      little or no space for  patch, since data area begins right after  the
  887.      code area after loaded. Check with DDT.
  888.           Some sample screen  members are provided to  provide a  means  of
  889.      simple understanding the capabilities of  SFGR. Using FVIEW, you  will
  890.      be able to see  what these screens would look  like in a program.  All
  891.      will compile on a System 36 (some were downloaded) and, of course, can
  892.      be compiled with the SFGR Compiler.
  893.           The Object specification records may  change with version, so  if
  894.      you write a driver, make it easily fixable to include  the changes. It
  895.      will usually be additional bytes in the screen and/or display records,
  896.      and possibly an attribute attatched to a pre-existing attribute  byte.
  897.      It may seem hard  to write a driver, but  once written display  screen
  898.      can be created by just calling an object file.
  899.           If you are really  interested in SFGR, then I  must refer you  to
  900.      the IBM manuals for the System 36 such as Screen  Display Manual using
  901.      Screen Design Aid. There  may be other books on  the market that  deal
  902.      with RPG II that also deal with the workstation file definitions. Such
  903.      a book may presumably be more readable.
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.                                        14
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.                        Screen Specification Object Record
  932.  
  933.           Bytes     Description of object byte
  934.           -----     -------------------------------------------------------
  935.               1     Always 0FFH to signify start of format record
  936.             2-9     Format Screen Name, left justified blank-fill
  937.                     If byte = 0FFH then no more screen formats.
  938.              10     Start Line Number (00 = Variable Start Line)
  939.              11     Lines to Clear (0-24 valid entry)
  940.              12     Most Significant Bit - Lowercase (1=yes,0=no)
  941.                     Others - Alarm (01-99 indic) (0=no,100=yes)
  942.              13     Command keys 1-5 in the 5 Least Signif. Bits
  943.              14     Command keys 6-10 in the 5 Least Signif. Bits
  944.  
  945.                       Display Specification Object Record
  946.  
  947.           Bytes     Description of object byte
  948.           -----     -------------------------------------------------------
  949.               1     Type (bit 0=output var,bit 1=input var,bit 2=constant)
  950.               2     Row, actual row except if variable start line.
  951.               3     Column on the Screen Line to start field.
  952.               4     Length of field.
  953.               5     Output indicator (0=no,01-99=indicator,1=yes)
  954.               6     If alphabetic - (bit 0=0,bit 1=lowercase)
  955.                     If numeric - (bit 0=1,bit 1=fill type)
  956.                     (bit 2=control exit,bit 3=auto advance)
  957.               7     High intensity (0=no,01-99=indicator,1=yes)
  958.               8     Blink field (0=no,01-99=indicator,1=yes)
  959.               9     Reverse image (0=no,01-99=indicator,1=yes)
  960.              10     Most Significant Bit - Underline (1=yes,0=no)
  961.                     Others - Column separators (01-99 indic) (0=no,100=yes)
  962.              11     Nondisplay (0=no,01-99=indicator,1=yes)
  963.              12     Position cursor (0=no,01-99=indicator,1=yes)
  964.              13     Protect field (0=no,01-99=indicator,1=yes)
  965.              14+    Data if output constant (upto 96 characters)
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.                                        15
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.                      A word about user supported software:
  998.  
  999.           The user supported  software concept (sometimes  referred  to  as
  1000.      cheapware or freeware or shareware) is an attempt to provide  software
  1001.      at low cost. The cost of offering a new product  by conventional means
  1002.      is quite staggering, and hence dissuades many new sotware authors from
  1003.      developing and promoting their ideas and products. The User  supported
  1004.      software is an attempt to develop a somewhat new marketing channel and
  1005.      technique, where products can be introduced at low cost.
  1006.            If user supported software works,  then everyone who is part  of
  1007.      it will benefit from it. The user will benefit by  receiving a quality
  1008.      product at low cost,  and by being able to  "see what it really  does"
  1009.      before purchasing it. The author  benefits by being able to enter  the
  1010.      commercial software market without first needing large sum of cash  to
  1011.      pay all the overhead that is involved otherwise.
  1012.           But it can  only work with your  "USER" support. It is  not  just
  1013.      program package, but  about all user supported  software. If  you  are
  1014.      still using a program after a couple of weeks, then  it is means it is
  1015.      worth something to you, and you should send in a  contribution. A mere
  1016.      $10.00 is requested for this  programs use. If you register, you  will
  1017.      be entitled to "USER" support from the author.
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.                                        16
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.                                    ORDER FORM
  1065.  
  1066.  
  1067.  
  1068.           Check which items you wish to support:
  1069.  
  1070.               (_) Noncommercial license for the use of SFGR.
  1071.  
  1072.               (_) Payment of $_____ is enclosed (checks please)
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.               _______________________________________________
  1079.               Name
  1080.  
  1081.               _______________________________________________
  1082.  
  1083.  
  1084.               _______________________________________________
  1085.               Address
  1086.  
  1087.               ______________________   ________  ____________
  1088.               City                     State     Zip
  1089.  
  1090.  
  1091.               Telephone Number
  1092.  
  1093.           Send this completed form to:
  1094.  
  1095.                                 Harris Landsberg
  1096.                               1350 East 5th Street
  1097.                                    Suite 1-J
  1098.                             Brooklyn, New York 11230
  1099.  
  1100.  
  1101.           For a commercial  site license, please write  to the  author  for
  1102.      further arrangements.
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.                                        17
  1121.  
  1122.  
  1123.