home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / OAS50DOC.ZIP / OASDOC1.TXT next >
Encoding:
Text File  |  1988-08-05  |  508.7 KB  |  16,435 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.                                     Open Architecture
  24.                                     Open Architecture
  25.  
  26.  
  27.  
  28.  
  29.  
  30.                                  Screen Interface System
  31.                                  Screen Interface System
  32.  
  33.  
  34.  
  35.  
  36.  
  37.                                       ( O A S I S )
  38.                                       ( O A S I S )
  39.  
  40.  
  41.  
  42.  
  43.  
  44.                                Version 4.1  -  Evaluation
  45.                                Version 4.1  -  Evaluation
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.                                EUREKA SOFTWARE ASSOCIATES
  55.                                EUREKA SOFTWARE ASSOCIATES
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.                                     REFERENCE MANUAL
  76.                                     REFERENCE MANUAL
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  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.           OASIS Evaluation Reference Manual
  118.           OASIS Evaluation Reference Manual
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.                                         O A S I S
  129.  
  130.  
  131.  
  132.                                          NOTICE
  133.                                          NOTICE
  134.                                          ______
  135.  
  136.  
  137.           This document  and the  information contained  herein as  well as the
  138.           described  software  'OASIS'  (Open   Architecture  Screen  Interface
  139.           System)  are  protected  by  international  copyright  law and treaty
  140.           provisions. 
  141.           They are provided to  you under  a shareware  scheme whose conditions
  142.           and terms  are explained in Appendix B of this manual and may only be
  143.           used in accordance with these conditions.
  144.  
  145.  
  146.  
  147.           Both this documentation and the program  are provided  strictly on an
  148.           Both this documentation and the program  are provided  strictly on an
  149.           'As Is' Basis.
  150.           'As Is' Basis.
  151.  
  152.           There  is  no  warranty,  expressed  or  implied, with respect to the
  153.           program  or   the  documentation,   including  but   not  limited  to
  154.           merchantability and  fitness for a particular purpose with respect to
  155.           defects in the program or the documentation. In no event shall Martin
  156.           Hossfeld  be  liable  for  any  loss  of  profit or any other damage,
  157.           including but  not limited  to special,  incidental, consequential or
  158.           other damages. 
  159.  
  160.  
  161.  
  162.                                 Copyright (C) 1987, 1988
  163.  
  164.                                EUREKA SOFTWARE ASSOCIATES
  165.  
  166.                Martin Hossfeld                         Remy Fesnoux 
  167.                12, Pinewood Green                      2344 Yorkshire
  168.                Iver Heath, Bucks. SL0 0QP              Ann Arbor, MI 48104
  169.                United Kingdom                          USA
  170.  
  171.  
  172.                                   All Rights Reserved.
  173.                                   All Rights Reserved.
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.           OASIS Evaluation Reference Manual
  192.           OASIS Evaluation Reference Manual
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.                                     Acknowledgements
  204.                                     Acknowledgements
  205.                                     ________________
  206.  
  207.  
  208.  
  209.           IBM,  IBM  PC,  XT,  AT  and  PC  DOS are trademarks of International
  210.           Business Machines Corporation.
  211.  
  212.           Burroughs and TD830 are trademarks of Unisys Corporation.
  213.  
  214.           Turbo Pascal is a registered trademark of Borland International Inc.
  215.  
  216.           MS DOS is a registered trademark of Microsoft Corporation. 
  217.  
  218.           Hercules  Craphics   Card  is   a  trademark   of  Hercules  Computer
  219.           Technology.
  220.  
  221.           OASIS, SFD,  SCL, Screen Format Designer, Screen Control Language and
  222.           Open Architecture  Screen Interface  System are  trademarks of EUREKA
  223.           SOFTWARE ASSOCIATES.
  224.  
  225.           'Lightning' is a trademark of PCSG Inc.
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.           OASIS Evaluation Reference Manual
  263.           OASIS Evaluation Reference Manual
  264.  
  265.  
  266.           Introduction 
  267.           Introduction . . . . . . . . . . . . . . . . . . . . . . . . . .   12
  268.                What is OASIS?  . . . . . . . . . . . . . . . . . . . . . .   12
  269.                About this manual 
  270.                                  . . . . . . . . . . . . . . . . . . . . .   13
  271.                What this manual assumes 
  272.                                          . . . . . . . . . . . . . . . . .   14
  273.                What you will learn 
  274.                                    . . . . . . . . . . . . . . . . . . . .   14
  275.  
  276.  
  277.           Chapter I 
  278.           Chapter I  . . . . . . . . . . . . . . . . . . . . . . . . . . .   16
  279.  
  280.           Overview 
  281.                    . . . . . . . . . . . . . . . . . . . . . . . . . . . .   18
  282.                The Screen Format Designer (SFD) 
  283.                                                  . . . . . . . . . . . . .   20
  284.                The Screen Control Language (SCL) . . . . . . . . . . . . .   21
  285.                Application programs written with OASIS . . . . . . . . . .   22
  286.                Some Feature Explanations . . . . . . . . . . . . . . . . .   23
  287.                     Screen Related Program Parameters  . . . . . . . . . .   23
  288.                     Colors and Display Attributes  . . . . . . . . . . . .   23
  289.                     Non Standard Keyboard Layouts  . . . . . . . . . . . .   23
  290.           Program development with OASIS . . . . . . . . . . . . . . . . .   24
  291.                A. Declarative Phase  . . . . . . . . . . . . . . . . . . .   24
  292.                B. Procedural Phase . . . . . . . . . . . . . . . . . . . .   25
  293.           Differences to traditional program development . . . . . . . . .   26
  294.                What instead of how . . . . . . . . . . . . . . . . . . . .   26
  295.                Early Tests . . . . . . . . . . . . . . . . . . . . . . . .   26
  296.                Less Programming  . . . . . . . . . . . . . . . . . . . . .   26
  297.                Easier changes  . . . . . . . . . . . . . . . . . . . . . .   26
  298.                Nationalization, customization made simple  . . . . . . . .   26
  299.           System Installation and Setup  . . . . . . . . . . . . . . . . .   27
  300.                The Distribution Disks  . . . . . . . . . . . . . . . . . .   27
  301.                System Requirements . . . . . . . . . . . . . . . . . . . .   28
  302.                Installation Instructions 
  303.                                          . . . . . . . . . . . . . . . . .   29
  304.  
  305.  
  306.           Chapter II 
  307.           Chapter II . . . . . . . . . . . . . . . . . . . . . . . . . . .   30
  308.  
  309.           Explanation of keyboard functions  . . . . . . . . . . . . . . .   33
  310.                Variables and Constants . . . . . . . . . . . . . . . . . .   33
  311.                Variable field specials . . . . . . . . . . . . . . . . . .   34
  312.                Editing keys  . . . . . . . . . . . . . . . . . . . . . . .   34
  313.                Return  . . . . . . . . . . . . . . . . . . . . . . . . . .   35
  314.                Escape  . . . . . . . . . . . . . . . . . . . . . . . . . .   35
  315.                Function keys . . . . . . . . . . . . . . . . . . . . . . .   36
  316.           Errors & Automatic Help System . . . . . . . . . . . . . . . . .   37
  317.                Invalid data entry  . . . . . . . . . . . . . . . . . . . .   37
  318.                Missing mandatory data  . . . . . . . . . . . . . . . . . .   37
  319.                Autohelp feature  . . . . . . . . . . . . . . . . . . . . .   37
  320.           Design Cycle . . . . . . . . . . . . . . . . . . . . . . . . . .   38
  321.                Designing a format layout . . . . . . . . . . . . . . . . .   40
  322.                     Layout editor  -  Meaning of keys  . . . . . . . . . .   41
  323.                     Changing the Format Size . . . . . . . . . . . . . . .   42
  324.  
  325.           Introduction                                                 page 4
  326.           Introduction                                                 page 4
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.           OASIS Evaluation Reference Manual
  342.           OASIS Evaluation Reference Manual
  343.  
  344.                     Drawing fields . . . . . . . . . . . . . . . . . . . .   43
  345.                     Drawing boxes  . . . . . . . . . . . . . . . . . . . .   44
  346.                     Selecting Linestyles . . . . . . . . . . . . . . . . .   45
  347.                     Field specifications . . . . . . . . . . . . . . . . .   46
  348.                     Format Control Specifications  . . . . . . . . . . . .   49
  349.                     User Function Key Specifications . . . . . . . . . . .   49
  350.                Testing a Format 
  351.                                  . . . . . . . . . . . . . . . . . . . . .   51
  352.                     Change field specs/Active field  . . . . . . . . . . .   51
  353.                     Change field specs/Other field . . . . . . . . . . . .   51
  354.                     Global Colors/Attributes . . . . . . . . . . . . . . .   51
  355.                     Format/Control Specs . . . . . . . . . . . . . . . . .   51
  356.                Colors/Attributes . . . . . . . . . . . . . . . . . . . . .   52
  357.                     Field Attributes . . . . . . . . . . . . . . . . . . .   52
  358.                     Color Screen Attributes  . . . . . . . . . . . . . . .   53
  359.                     Monochrome Attributes  . . . . . . . . . . . . . . . .   54
  360.                Conclusion  . . . . . . . . . . . . . . . . . . . . . . . .   55
  361.           Functional Description - Introduction  . . . . . . . . . . . . .   57
  362.                SFD Basic Program Layout  . . . . . . . . . . . . . . . . .   58
  363.                Files used by SFD . . . . . . . . . . . . . . . . . . . . .   59
  364.                     SFD.FOR  . . . . . . . . . . . . . . . . . . . . . . .   59
  365.                     SFD.FIN  . . . . . . . . . . . . . . . . . . . . . . .   59
  366.                     SFD.MSG  . . . . . . . . . . . . . . . . . . . . . . .   59
  367.                     SFD.ERR  . . . . . . . . . . . . . . . . . . . . . . .   59
  368.                     SFD.DEF  . . . . . . . . . . . . . . . . . . . . . . .   59
  369.                Files generated by SFD  . . . . . . . . . . . . . . . . . .   60
  370.                     <workfile>.SCS . . . . . . . . . . . . . . . . . . . .   60
  371.                     <workfile>.SCI . . . . . . . . . . . . . . . . . . . .   60
  372.                     <workfile>.MSG . . . . . . . . . . . . . . . . . . . .   60
  373.                Basic Keyboard Functions  . . . . . . . . . . . . . . . . .   61
  374.                Online Help Facility  . . . . . . . . . . . . . . . . . . .   62
  375.                     Explanatory field input informations . . . . . . . . .   62
  376.                     AutoHelp . . . . . . . . . . . . . . . . . . . . . . .   62
  377.                     Format Help  . . . . . . . . . . . . . . . . . . . . .   62
  378.                     Field Help . . . . . . . . . . . . . . . . . . . . . .   62
  379.                Input Error Handling  . . . . . . . . . . . . . . . . . . .   63
  380.                     Invalid Key  . . . . . . . . . . . . . . . . . . . . .   63
  381.                     Wrong data . . . . . . . . . . . . . . . . . . . . . .   63
  382.                     Missing mandatory data . . . . . . . . . . . . . . . .   63
  383.           The Main Menu  . . . . . . . . . . . . . . . . . . . . . . . . .   64
  384.                The Menu Header . . . . . . . . . . . . . . . . . . . . . .   64
  385.                     Act DIR  . . . . . . . . . . . . . . . . . . . . . . .   64
  386.                     Workfile . . . . . . . . . . . . . . . . . . . . . . .   64
  387.                     Formats  . . . . . . . . . . . . . . . . . . . . . . .   64
  388.                The Main body . . . . . . . . . . . . . . . . . . . . . . .   64
  389.                The Message Line  . . . . . . . . . . . . . . . . . . . . .   64
  390.           DESIGN . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   65
  391.           FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   66
  392.                Load File . . . . . . . . . . . . . . . . . . . . . . . . .   66
  393.                CHDir . . . . . . . . . . . . . . . . . . . . . . . . . . .   66
  394.                Crunch  . . . . . . . . . . . . . . . . . . . . . . . . . .   67
  395.  
  396.           Introduction                                                 page 5
  397.           Introduction                                                 page 5
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.           OASIS Evaluation Reference Manual
  413.           OASIS Evaluation Reference Manual
  414.  
  415.           FORMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   68
  416.                Copy  . . . . . . . . . . . . . . . . . . . . . . . . . . .   68
  417.                Delete  . . . . . . . . . . . . . . . . . . . . . . . . . .   68
  418.                Undelete  . . . . . . . . . . . . . . . . . . . . . . . . .   68
  419.                Transfer  . . . . . . . . . . . . . . . . . . . . . . . . .   68
  420.           DISPLAY  . . . . . . . . . . . . . . . . . . . . . . . . . . . .   69
  421.                Formats . . . . . . . . . . . . . . . . . . . . . . . . . .   69
  422.                Files . . . . . . . . . . . . . . . . . . . . . . . . . . .   69
  423.                Directory . . . . . . . . . . . . . . . . . . . . . . . . .   69
  424.           PRINT  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   70
  425.                Single format . . . . . . . . . . . . . . . . . . . . . . .   70
  426.                All formats . . . . . . . . . . . . . . . . . . . . . . . .   70
  427.                Format list . . . . . . . . . . . . . . . . . . . . . . . .   70
  428.           DEFAULTS . . . . . . . . . . . . . . . . . . . . . . . . . . . .   71
  429.                Design  . . . . . . . . . . . . . . . . . . . . . . . . . .   71
  430.                     Left Field Limit . . . . . . . . . . . . . . . . . . .   71
  431.                     Right Field Limit  . . . . . . . . . . . . . . . . . .   71
  432.                     Background Color . . . . . . . . . . . . . . . . . . .   71
  433.                     Foreground Color . . . . . . . . . . . . . . . . . . .   71
  434.                     Surrounding Area . . . . . . . . . . . . . . . . . . .   72
  435.                System defaults . . . . . . . . . . . . . . . . . . . . . .   73
  436.                     Auto Help  . . . . . . . . . . . . . . . . . . . . . .   73
  437.                     After n Errors . . . . . . . . . . . . . . . . . . . .   73
  438.                     Beep yes/no  . . . . . . . . . . . . . . . . . . . . .   73
  439.                     Length (ms)  . . . . . . . . . . . . . . . . . . . . .   73
  440.                     Pitch (Hz) . . . . . . . . . . . . . . . . . . . . . .   73
  441.                     Field Blink Frequency  . . . . . . . . . . . . . . . .   73
  442.                     Char YES . . . . . . . . . . . . . . . . . . . . . . .   74
  443.                     Char NO  . . . . . . . . . . . . . . . . . . . . . . .   74
  444.                     Cursor Wraparound Disabled . . . . . . . . . . . . . .   74
  445.           EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   75
  446.                Terminate Program . . . . . . . . . . . . . . . . . . . . .   75
  447.           Format Design  . . . . . . . . . . . . . . . . . . . . . . . . .   76
  448.           Basic Work Flow  . . . . . . . . . . . . . . . . . . . . . . . .   76
  449.                The Layout Editor . . . . . . . . . . . . . . . . . . . . .   77
  450.                     Layout editor Meaning of keys  . . . . . . . . . . . .   78
  451.                     Drawing Fields . . . . . . . . . . . . . . . . . . . .   79
  452.                     Special Functions  . . . . . . . . . . . . . . . . . .   80
  453.                     Menu Functions . . . . . . . . . . . . . . . . . . . .   83
  454.                     Format Specifications  . . . . . . . . . . . . . . . .   85
  455.                The Test Feature  . . . . . . . . . . . . . . . . . . . . .   94
  456.                     Introduction . . . . . . . . . . . . . . . . . . . . .   94
  457.                     The local Menu . . . . . . . . . . . . . . . . . . . .   94
  458.                     System Limitations . . . . . . . . . . . . . . . . . .   95
  459.  
  460.  
  461.           Chapter III 
  462.           Chapter III  . . . . . . . . . . . . . . . . . . . . . . . . . .   97
  463.  
  464.           Introduction . . . . . . . . . . . . . . . . . . . . . . . . . .  100
  465.           SCL Files  . . . . . . . . . . . . . . . . . . . . . . . . . . .  101
  466.  
  467.           Introduction                                                 page 6
  468.           Introduction                                                 page 6
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.           OASIS Evaluation Reference Manual
  484.           OASIS Evaluation Reference Manual
  485.  
  486.                SCL.TPU . . . . . . . . . . . . . . . . . . . . . . . . . .  101
  487.                SCL.ERR . . . . . . . . . . . . . . . . . . . . . . . . . .  101
  488.           SCL - Global Declarations  . . . . . . . . . . . . . . . . . . .  102
  489.                General . . . . . . . . . . . . . . . . . . . . . . . . . .  102
  490.                SCL Control Parameters  . . . . . . . . . . . . . . . . . .  103
  491.                     Max_Error_Messages . . . . . . . . . . . . . . . . . .  103
  492.                     Max_Input_Messages . . . . . . . . . . . . . . . . . .  103
  493.                     Max_Heap_Screens . . . . . . . . . . . . . . . . . . .  103
  494.                File Names  . . . . . . . . . . . . . . . . . . . . . . . .  104
  495.                     Screenfile_Ext . . . . . . . . . . . . . . . . . . . .  104
  496.                     Indexfile_Ext  . . . . . . . . . . . . . . . . . . . .  104
  497.                     Errorfile_Ext  . . . . . . . . . . . . . . . . . . . .  104
  498.                     Messagefile_Ext  . . . . . . . . . . . . . . . . . . .  104
  499.                Help System Parameters  . . . . . . . . . . . . . . . . . .  105
  500.                     Autohelp_Screen  . . . . . . . . . . . . . . . . . . .  105
  501.                     Maxerrors  . . . . . . . . . . . . . . . . . . . . . .  105
  502.                     Auto_Help_Set  . . . . . . . . . . . . . . . . . . . .  105
  503.                     Code_Help_Field  . . . . . . . . . . . . . . . . . . .  105
  504.                     Code_Help_Format . . . . . . . . . . . . . . . . . . .  105
  505.                Beep Parameters . . . . . . . . . . . . . . . . . . . . . .  106
  506.                     Beep_Off . . . . . . . . . . . . . . . . . . . . . . .  106
  507.                     Beep_Time  . . . . . . . . . . . . . . . . . . . . . .  106
  508.                     Beep_Frequency_1 . . . . . . . . . . . . . . . . . . .  106
  509.                     Beep_Frequency_2 . . . . . . . . . . . . . . . . . . .  106
  510.                Message Display . . . . . . . . . . . . . . . . . . . . . .  107
  511.                     Input_Msg_Set  . . . . . . . . . . . . . . . . . . . .  107
  512.                     Error_Msg_Set  . . . . . . . . . . . . . . . . . . . .  107
  513.                Field Attributes  . . . . . . . . . . . . . . . . . . . . .  108
  514.                     Blink_Count  . . . . . . . . . . . . . . . . . . . . .  108
  515.                     Timer_Intervall  . . . . . . . . . . . . . . . . . . .  108
  516.                     Mark_Field_Left  . . . . . . . . . . . . . . . . . . .  108
  517.                     Mark_Field_Right . . . . . . . . . . . . . . . . . . .  108
  518.                Key Specifications  . . . . . . . . . . . . . . . . . . . .  109
  519.                     Code_Cancel_Act  . . . . . . . . . . . . . . . . . . .  109
  520.                     Code_Abort . . . . . . . . . . . . . . . . . . . . . .  109
  521.                     Code_Escape  . . . . . . . . . . . . . . . . . . . . .  109
  522.                Performing 'Edit' functions . . . . . . . . . . . . . . . .  110
  523.                Function Keys . . . . . . . . . . . . . . . . . . . . . . .  110
  524.                Nationalisation Parameters  . . . . . . . . . . . . . . . .  111
  525.                     Code_Yes . . . . . . . . . . . . . . . . . . . . . . .  111
  526.                     Code_No  . . . . . . . . . . . . . . . . . . . . . . .  111
  527.                Character sets for Variables  . . . . . . . . . . . . . . .  111
  528.                Country Information Parameters  . . . . . . . . . . . . . .  112
  529.                     SCL_Country  . . . . . . . . . . . . . . . . . . . . .  112
  530.                     Country  . . . . . . . . . . . . . . . . . . . . . . .  112
  531.                     Date_Format  . . . . . . . . . . . . . . . . . . . . .  112
  532.                     Date_Separator . . . . . . . . . . . . . . . . . . . .  112
  533.                     Time_Separator . . . . . . . . . . . . . . . . . . . .  113
  534.                     Currency . . . . . . . . . . . . . . . . . . . . . . .  113
  535.                SCL Control Parameters  . . . . . . . . . . . . . . . . . .  114
  536.  
  537.           Introduction                                                 page 7
  538.           Introduction                                                 page 7
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.           OASIS Evaluation Reference Manual
  554.           OASIS Evaluation Reference Manual
  555.  
  556.                     Progpath . . . . . . . . . . . . . . . . . . . . . . .  114
  557.                     No_Wrap  . . . . . . . . . . . . . . . . . . . . . . .  114
  558.                Format Pointers . . . . . . . . . . . . . . . . . . . . . .  115
  559.                     S_Ptr  . . . . . . . . . . . . . . . . . . . . . . . .  115
  560.                     R_Ptr  . . . . . . . . . . . . . . . . . . . . . . . .  115
  561.                     W_Ptr  . . . . . . . . . . . . . . . . . . . . . . . .  116
  562.                Format Handling Parameters  . . . . . . . . . . . . . . . .  117
  563.                     Active_Field . . . . . . . . . . . . . . . . . . . . .  117
  564.                     Char_Code  . . . . . . . . . . . . . . . . . . . . . .  117
  565.                     Glb_Error  . . . . . . . . . . . . . . . . . . . . . .  117
  566.                Format Handling Parameters  . . . . . . . . . . . . . . . .  118
  567.                     User_Function  . . . . . . . . . . . . . . . . . . . .  118
  568.                     Begin_Of_Field . . . . . . . . . . . . . . . . . . . .  118
  569.                     End_Of_Field . . . . . . . . . . . . . . . . . . . . .  118
  570.                     End_Of_Format  . . . . . . . . . . . . . . . . . . . .  119
  571.                     Checkrequired  . . . . . . . . . . . . . . . . . . . .  119
  572.                Screen related Parameters . . . . . . . . . . . . . . . . .  120
  573.                     Screen_Mode  . . . . . . . . . . . . . . . . . . . . .  120
  574.                     Mono_Adapter . . . . . . . . . . . . . . . . . . . . .  120
  575.                     Color_True . . . . . . . . . . . . . . . . . . . . . .  120
  576.                Format related Parameters . . . . . . . . . . . . . . . . .  121
  577.                     Xoff . . . . . . . . . . . . . . . . . . . . . . . . .  121
  578.                     Yoff . . . . . . . . . . . . . . . . . . . . . . . . .  121
  579.                Background Processing Parameters  . . . . . . . . . . . . .  122
  580.                     LP_Background_Pointer  . . . . . . . . . . . . . . . .  122
  581.                     HP_Background_Pointer  . . . . . . . . . . . . . . . .  122
  582.                Miscellaneous Parameters  . . . . . . . . . . . . . . . . .  123
  583.                     Glb_Status . . . . . . . . . . . . . . . . . . . . . .  123
  584.                     Glb_Ok . . . . . . . . . . . . . . . . . . . . . . . .  123
  585.                     Format_Aborted . . . . . . . . . . . . . . . . . . . .  123
  586.                Global Type Declarations  . . . . . . . . . . . . . . . . .  124
  587.           Procedures and Functions . . . . . . . . . . . . . . . . . . . .  125
  588.                Introduction  . . . . . . . . . . . . . . . . . . . . . . .  125
  589.                Entering and leaving SCL  . . . . . . . . . . . . . . . . .  126
  590.                Structure of a SCL Program  . . . . . . . . . . . . . . . .  127
  591.                Loading and displaying formats  . . . . . . . . . . . . . .  128
  592.                X_Max and Y_Max . . . . . . . . . . . . . . . . . . . . . .  130
  593.                Handling format input . . . . . . . . . . . . . . . . . . .  131
  594.                Format Handling Control . . . . . . . . . . . . . . . . . .  133
  595.                Reading/Writting Format Fields  . . . . . . . . . . . . . .  134
  596.                     Introduction . . . . . . . . . . . . . . . . . . . . .  134
  597.                     Reading Field Content  . . . . . . . . . . . . . . . .  135
  598.                     Writing Field Content  . . . . . . . . . . . . . . . .  137
  599.                     Deleting Field Content . . . . . . . . . . . . . . . .  138
  600.                     Reading the 'Selected' Attribute . . . . . . . . . . .  139
  601.                     Writing the 'Selected' Attribute . . . . . . . . . . .  140
  602.                String Handling routines  . . . . . . . . . . . . . . . . .  141
  603.                System Functions  . . . . . . . . . . . . . . . . . . . . .  145
  604.                Date related routines . . . . . . . . . . . . . . . . . . .  147
  605.                Time related Routines . . . . . . . . . . . . . . . . . . .  149
  606.  
  607.           Introduction                                                 page 8
  608.           Introduction                                                 page 8
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.           OASIS Evaluation Reference Manual
  624.           OASIS Evaluation Reference Manual
  625.  
  626.                Background Processing Tasks . . . . . . . . . . . . . . . .  150
  627.                Other Routines  . . . . . . . . . . . . . . . . . . . . . .  151
  628.  
  629.  
  630.           Chapter IV 
  631.           Chapter IV . . . . . . . . . . . . . . . . . . . . . . . . . . .  153
  632.  
  633.           Data Communications Subsystem  . . . . . . . . . . . . . . . . .  155
  634.           Introduction . . . . . . . . . . . . . . . . . . . . . . . . . .  156
  635.                Global Communications Parameters  . . . . . . . . . . . . .  157
  636.                Timers and Delays . . . . . . . . . . . . . . . . . . . . .  158
  637.                Data Communications Control Characters  . . . . . . . . . .  159
  638.                Other Declarations  . . . . . . . . . . . . . . . . . . . .  160
  639.           Procedures and Functions 
  640.                                    . . . . . . . . . . . . . . . . . . . .  162
  641.                Initializing and Terminating DC . . . . . . . . . . . . . .  163
  642.                Sending Data  . . . . . . . . . . . . . . . . . . . . . . .  164
  643.                Receiving Data  . . . . . . . . . . . . . . . . . . . . . .  166
  644.                Other Functions . . . . . . . . . . . . . . . . . . . . . .  167
  645.                Low Level Routines  . . . . . . . . . . . . . . . . . . . .  168
  646.           Example Programs 
  647.                            . . . . . . . . . . . . . . . . . . . . . . . .  170
  648.                A Simple Line Monitor (SAMPLE7.PAS) . . . . . . . . . . . .  171
  649.                     Listing of SAMPLE7.PAS . . . . . . . . . . . . . . . .  172
  650.                     Description of SAMPLE7.PAS . . . . . . . . . . . . . .  177
  651.                A Terminal Emulator Program (SAMPLE 8)  . . . . . . . . . .  179
  652.                     Listing of Example Program 8 . . . . . . . . . . . . .  180
  653.                     Description of SAMPLE8.PAS . . . . . . . . . . . . . .  187
  654.           Program Discussion . . . . . . . . . . . . . . . . . . . . . . .  190
  655.                Introduction  . . . . . . . . . . . . . . . . . . . . . . .  191
  656.                Example 1  (OASIS Easy Fields)  . . . . . . . . . . . . . .  192
  657.                     Explanations of SAMPLE1.PAS  . . . . . . . . . . . . .  193
  658.                Example 2  (OASIS Print Labels) . . . . . . . . . . . . . .  195
  659.                     Explanations of SAMPLE2.PAS  . . . . . . . . . . . . .  196
  660.                Example 3  (OASIS Formats Stack)    . . . . . . . . . . . .  200
  661.                     Listing of SAMPLE3.PAS . . . . . . . . . . . . . . . .  201
  662.                     Explanations of SAMPLE3.PAS  . . . . . . . . . . . . .  202
  663.                Example 4  (OASIS Automatic Disk Menu)  . . . . . . . . . .  204
  664.                Example 5  (OASIS SCL Demo) . . . . . . . . . . . . . . . .  208
  665.                     Menu . . . . . . . . . . . . . . . . . . . . . . . . .  208
  666.                     Country Demo . . . . . . . . . . . . . . . . . . . . .  209
  667.                     Date Demo  . . . . . . . . . . . . . . . . . . . . . .  211
  668.                     Special Fields Demo  . . . . . . . . . . . . . . . . .  213
  669.           SCL System Details . . . . . . . . . . . . . . . . . . . . . . .  216
  670.                Service Routines  . . . . . . . . . . . . . . . . . . . . .  217
  671.                Background Processing Tasks . . . . . . . . . . . . . . . .  219
  672.                READING AND WRITING FIELDS 
  673.                                            . . . . . . . . . . . . . . . .  222
  674.                SCL Input Character Processing 
  675.                                                . . . . . . . . . . . . . .  224
  676.                The Error Message File  . . . . . . . . . . . . . . . . . .  225
  677.                SCL - System Resource Considerations  . . . . . . . . . . .  226
  678.                     Disk Access  . . . . . . . . . . . . . . . . . . . . .  226
  679.                     Processor Requirements . . . . . . . . . . . . . . . .  226
  680.                     Format File -Disk Space Requirements . . . . . . . . .  226
  681.  
  682.           Introduction                                                 page 9
  683.           Introduction                                                 page 9
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.           OASIS Evaluation Reference Manual
  699.           OASIS Evaluation Reference Manual
  700.  
  701.                     SCL Code Space Requirements  . . . . . . . . . . . . .  226
  702.                     SCL Data Space Requirements  . . . . . . . . . . . . .  226
  703.                     Total Memory Requirements  . . . . . . . . . . . . . .  227
  704.           Tips & Tricks  . . . . . . . . . . . . . . . . . . . . . . . . .  228
  705.                Entry  of   Characters  not  normally  accessible  via  the
  706.                     Keyboard . . . . . . . . . . . . . . . . . . . . . . .  228
  707.                Blinking Fields . . . . . . . . . . . . . . . . . . . . . .  228
  708.                Use of the 'Intensity' field attribute on Color systems . .  228
  709.                The 'Selected' Attribute in Menus . . . . . . . . . . . . .  228
  710.                Preventing automatic termination of a format  . . . . . . .  229
  711.                Highlighting text on screen formats . . . . . . . . . . . .  229
  712.                Special Fields  . . . . . . . . . . . . . . . . . . . . . .  229
  713.                Storing strings in <Name>.ERR . . . . . . . . . . . . . . .  229
  714.                Using Field Input Messages for Help Screens . . . . . . . .  230
  715.                Using 'Goto_Field'  . . . . . . . . . . . . . . . . . . . .  231
  716.           Alphabethic  List  of  all  User  accessible  SCL  Procedures  &
  717.                Functions . . . . . . . . . . . . . . . . . . . . . . . . .  234
  718.           Datacom Control Characters . . . . . . . . . . . . . . . . . . .  237
  719.           Field Attributes and Colors  . . . . . . . . . . . . . . . . . .  238
  720.                Possible Field Attributes . . . . . . . . . . . . . . . . .  238
  721.                Colors  . . . . . . . . . . . . . . . . . . . . . . . . . .  238
  722.           Functions in SCL Programs  . . . . . . . . . . . . . . . . . . .  239
  723.           Standard SCL Error Messages  . . . . . . . . . . . . . . . . . .  240
  724.                The Shareware Idea  . . . . . . . . . . . . . . . . . . . .  241
  725.           OASIS Products & Licencing Terms . . . . . . . . . . . . . . . .  242
  726.                OASIS Demo package  . . . . . . . . . . . . . . . . . . . .  242
  727.                OASIS Evaluation  . . . . . . . . . . . . . . . . . . . . .  243
  728.                OASIS . . . . . . . . . . . . . . . . . . . . . . . . . . .  246
  729.           Invoice & Order Form . . . . . . . . . . . . . . . . . . . . . .  247
  730.                Order Form  . . . . . . . . . . . . . . . . . . . . . . . .  247
  731.                Invoice . . . . . . . . . . . . . . . . . . . . . . . . . .  248
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.           Introduction                                                 page 10
  753.           Introduction                                                 page 10
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.           OASIS Evaluation Reference Manual
  769.           OASIS Evaluation Reference Manual
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.           Introduction                                                 page 11
  823.           Introduction                                                 page 11
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.           OASIS Evaluation Reference Manual
  839.           OASIS Evaluation Reference Manual
  840.  
  841.  
  842.                                       Introduction
  843.                                       Introduction
  844.                                       ____________
  845.  
  846.  
  847.                        
  848.           What is OASIS?
  849.           What is OASIS?
  850.  
  851.           OASIS stands for Open Architecture Screen Interface System.
  852.  
  853.           OASIS is a fourth generation programming tool to develop screen based
  854.           application programs and User Interfaces on  Micro Computers.  No one
  855.           can deny  that computers  still primarily  rely on visual and tactile
  856.           means  of  communication  to  interact  with  its  users.   With  the
  857.           proliferation  of  microcomputers  in  recent years, as more and more
  858.           people  became  users  they  consequently  behaved  as  consumers who
  859.           implicitly stressed  the emphasis  on human  interfacing, as a result
  860.           products offered more and  more  ergonomic  features.  Among  the top
  861.           features speed  is definitely  high on  the list. Obviously the first
  862.           and most tangible advantage of fast  applications is  an overall gain
  863.           of time  to complete  a given  project, however this is certainly not
  864.           the most important one. What matters  more is  the response  time, in
  865.           other  words  the  time  it  takes  for  the  application  to process
  866.           elementary tasks which if not carefully timed induce  unnecessary and
  867.           undesirable delays.  Neglecting this  factor, no  matter how small or
  868.           hardly perceptible  delays can  be, invariably  results in operator's
  869.           irritations  that  may  in  some  cases  lead  to reject the product.
  870.           Otherwise what the user wants is in essence a tool easy to use, quick
  871.           to learn  with sufficient help information readily available on line,
  872.           flexible  but   logical  and   powerful,  in   other  word  something
  873.           comfortable and easy on the eyes that meet his expectations. 
  874.           On the other side of the fence we have the programer who is tasked to
  875.           satisfy all  these requirements  while focussing  on performance thus
  876.           making the  product attractive and marketable within a tight schedule
  877.           in order to be one of the first in this competitive marketplace. 
  878.           This is precisely where OASIS come into play  to serve  the interests
  879.           of  all  parties.  OASIS  is  an  immensely  powerful  tool  for  the
  880.           programmer because it allows him to  cut down  development time while
  881.           ensuring outstanding  human interface features and still focus on the
  882.           intrinsic part of the application thus  optimizing its  resources and
  883.           performances.  How  OASIS  achieves  this is described in the product
  884.           overview. To illustrate what has just been is said here  you ought to
  885.           know  that  OASIS  and  more  specifically SFD (Screen File Designer)
  886.           itself has been designed using the semantics that governs SCL (Screen
  887.           Control Language) itself and for that reason is indeed an application
  888.           of itself, in other words SFD was designed using SFD, a sort of CATCH
  889.           22 scenario. 
  890.           To sum  up this brief introduction one could say that OASIS is to the
  891.           DESIGN  AND  MANAGEMENT  OF  USER  INTERFACE   what  the   advent  of
  892.           wordprocessors  in  the  mid  1970's  has  done  to  TEXT WRITING AND
  893.           EDITING.
  894.  
  895.  
  896.           Introduction                                                 page 12
  897.           Introduction                                                 page 12
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.           OASIS Evaluation Reference Manual
  913.           OASIS Evaluation Reference Manual
  914.  
  915.  
  916.                                     About this manual
  917.                                     About this manual
  918.                                     _________________
  919.  
  920.  
  921.           This manual describes OASIS and its various components and how to use
  922.           them. This  book articulates itself around three chapters followed by
  923.           one appendix.
  924.  
  925.  
  926.           CHAPTER I System Overview 
  927.           CHAPTER I System Overview
  928.                The purpose of this  chapter is  to arouse  the interest  of the
  929.                reader  by  describing  OASIS  main components and listing their
  930.                features.
  931.  
  932.            
  933.           CHAPTER II Screen File Designer (SFD)
  934.           CHAPTER II Screen File Designer (SFD)
  935.                After a short introduction to SFD  you will  be paced  through a
  936.                comprehensive  tutorial   followed  by  a  chapter  providing  a
  937.                functional description of SFD.
  938.  
  939.            
  940.           CHAPTER III Screen Control Language (SCL) 
  941.           CHAPTER III Screen Control Language (SCL)
  942.                This chapter  discusses  in  details  the  major  procedures and
  943.                functions that constitute the heart of the system.
  944.  
  945.  
  946.           CHAPTER IV  SCL Data Communication subsystem
  947.           CHAPTER IV  SCL Data Communication subsystem
  948.                Since OASIS  can be  used   in a  micro to mainframe environment
  949.                this chapter  is  entirely  dedicated  to  the DataCommunication
  950.                extensions of SCL.
  951.  
  952.  
  953.           APPENDIX A
  954.           APPENDIX A
  955.                This  chapter  covers  several  advanced OASIS features and also
  956.                contains descriptions and discussions of 5 sample programs. 
  957.  
  958.  
  959.           APPENDIX B
  960.           APPENDIX B
  961.                Lists and Tables.
  962.                OASIS products & Licencing Terms.
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.           Introduction                                                 page 13
  975.           Introduction                                                 page 13
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.           OASIS Evaluation Reference Manual
  991.           OASIS Evaluation Reference Manual
  992.  
  993.  
  994.                                 What this manual assumes
  995.                                 What this manual assumes
  996.                                 ________________________
  997.  
  998.  
  999.           In order to fully exploit the Secret of SCL the reader is expected to
  1000.           have some  experience with programming languages and especially TURBO
  1001.           PASCAL. We assume that the reader  can refer  to BORLAND  manuals and
  1002.           references in  order to  write SCL  programs, compile,  debug and run
  1003.           them.
  1004.  
  1005.  
  1006.  
  1007.  
  1008.                                    What you will learn
  1009.                                    What you will learn
  1010.                                    ___________________
  1011.  
  1012.  
  1013.           The best method to learn something new is to practice,  make mistakes
  1014.           and learn  from them.  From the  very beginning, you will have at the
  1015.           tip of your fingers all the power and  the flexibility  of the Screen
  1016.           Format Designer  SFD, you  will soon  realize how intuitive it can be
  1017.           and it won't take long before  you become  familiarized with  all the
  1018.           keyboard functions and the system features. 
  1019.           The tutorial  in chapter  II will pace you step by step in the design
  1020.           of a  trivial screen  letting you  exercise almost  every function of
  1021.           SFD. Within  a couple  of hours  you will  be able to design and test
  1022.           fully fledged screens. 
  1023.           Chapter III provides you with  the  basic  architecture  to elaborate
  1024.           complex  programs  including  multiple  stacked screens (windows) and
  1025.           background processing tasks. 
  1026.           Chapter IV will let you include  data communication  routines to deal
  1027.           with  the  outside  world.  Finally  a  set  of  programming  tips is
  1028.           available  in  Appendix  A  to  the  expert  to   fine  tune  complex
  1029.           applications to a breathtaking level.
  1030.           We hope  that you will very shortly be able to unleash the full power
  1031.           of OASIS  to your  benefit, your  limits being  your own imagination.
  1032.           Good luck and have a good time.
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.           Introduction                                                 page 14
  1049.           Introduction                                                 page 14
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.           OASIS Evaluation Reference Manual
  1065.           OASIS Evaluation Reference Manual
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.                           This Page is intentionally left blank
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.           Introduction                                                 page 15
  1119.           Introduction                                                 page 15
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.                                         Chapter I
  1155.                                         Chapter I
  1156.                        
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.           OASIS Evaluation Reference Manual
  1205.           OASIS Evaluation Reference Manual
  1206.  
  1207.  
  1208.  
  1209.                        
  1210.  
  1211.                        
  1212.  
  1213.                        
  1214.  
  1215.                        
  1216.  
  1217.                        
  1218.  
  1219.                        
  1220.  
  1221.                        
  1222.  
  1223.                        
  1224.  
  1225.                        
  1226.  
  1227.                        
  1228.  
  1229.                        
  1230.  
  1231.                        
  1232.  
  1233.                        
  1234.  
  1235.                        
  1236.  
  1237.                        
  1238.  
  1239.                        
  1240.  
  1241.                        
  1242.  
  1243.                        
  1244.  
  1245.                                     Open Architecture
  1246.                                     Open Architecture
  1247.                        
  1248.  
  1249.                        
  1250.  
  1251.                                  Screen Interface System
  1252.                                  Screen Interface System
  1253.                        
  1254.  
  1255.                        
  1256.  
  1257.                        
  1258.  
  1259.                                         ( OASIS )
  1260.                                         ( OASIS )
  1261.                        
  1262.  
  1263.                        
  1264.  
  1265.                        
  1266.  
  1267.                        
  1268.  
  1269.                        
  1270.  
  1271.                                System Overview and Features
  1272.                                System Overview and Features
  1273.                              
  1274.                        
  1275.  
  1276.                        
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.           Chapter I, System Overview and Features                      page 17
  1298.           Chapter I, System Overview and Features                      page 17
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.           OASIS Evaluation Reference Manual
  1314.           OASIS Evaluation Reference Manual
  1315.  
  1316.  
  1317.                        
  1318.  
  1319.                                         Overview
  1320.                                         Overview
  1321.                                         ________
  1322.                        
  1323.  
  1324.                        
  1325.  
  1326.                        
  1327.  
  1328.                        
  1329.           OASIS  allows  you  to  create  and  handle  state-of-the-art  screen
  1330.           OASIS
  1331.           interfaces with many outstanding features in  a most  comfortable and
  1332.           efficient  way.  Due  to  its  background processing capabilities the
  1333.           handling of datacom and so on can also  be easily  achieved. OASIS is
  1334.                                                                        OASIS
  1335.           not  an  application  generator.  Typically,  application  generators
  1336.           require some kind of a macro language which is usually rather limited
  1337.           in terms  of flexibility.  This often results in slow running, clumsy
  1338.           applications a too  high  price  to  be  paid  for  added programming
  1339.           convenience. 
  1340.           Instead, OASIS  is built on top of Turbo Pascal, leaving all features
  1341.                    OASIS
  1342.           of this powerful development  system  available  to  you  for special
  1343.           requirements OASIS may not be capable to fulfill.
  1344.                        OASIS
  1345.  
  1346.  
  1347.           With OASIS you can
  1348.                OASIS
  1349.  
  1350.           * Add Micro based front ends to existing mainframe programs,
  1351.             taking over anything from Screen Management up to local data 
  1352.             storage etc.
  1353.  
  1354.           * Build the Micro part of distributed processing applications.
  1355.  
  1356.           * Write completely Micro based Applications utilizing virtually
  1357.  
  1358.             any number of screen formats.
  1359.  
  1360.           * Develop sophisticated Terminal Emulators.
  1361.  
  1362.  
  1363.  
  1364.  
  1365.           OASIS  is  a  sophisticated  and  powerful  user interface design and
  1366.           OASIS
  1367.           management system that both  simplifies the  task of  the application
  1368.           writer and provides a very attractive interface to the end user.
  1369.           Using OASIS  not only  results in tremendeous time savings (depending
  1370.                 OASIS
  1371.           on the kind of  application  between  50  and  90  percent)  but also
  1372.           achieves perfect results.
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.           Chapter I, System Overview and Features                      page 18
  1383.           Chapter I, System Overview and Features                      page 18
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.           OASIS Evaluation Reference Manual
  1399.           OASIS Evaluation Reference Manual
  1400.  
  1401.  
  1402.  
  1403.           OASIS has two main components:
  1404.           OASIS has two main components:
  1405.  
  1406.                        
  1407.  
  1408.                        
  1409.  
  1410.                        
  1411.                     The Screen Format Designer (SFD)
  1412.                     The Screen Format Designer (SFD)
  1413.                        
  1414.  
  1415.                        
  1416.                        
  1417.  
  1418.                        
  1419.                     The Screen Control Language (SCL)
  1420.                     The Screen Control Language (SCL)
  1421.                        
  1422.  
  1423.  
  1424.  
  1425.           Screen Format Designer (SFD)
  1426.           Screen Format Designer (SFD)
  1427.  
  1428.                        
  1429.           SFD is  an integrated application program, itself written with OASIS,
  1430.           SFD                                                            OASIS
  1431.           introducing a new concept  in the  elaboration of  screen formats. It
  1432.           allows the  user to interactively design any screen format layouts on
  1433.           the principle of what you paint is what you get.  Away from  the host
  1434.           application SFD  lets you  define all  field parameters of the format
  1435.           plus a  large  suite  of  other  refinements  such  as  related error
  1436.           messages and  help screens.  Futhermore SFD enable you to dynamically
  1437.                                                                     ___________
  1438.           test new formats before you even wrote a single line of code. 
  1439.           ____
  1440.  
  1441.  
  1442.  
  1443.  
  1444.           Screen Control Language (SCL) 
  1445.           Screen Control Language (SCL) 
  1446.  
  1447.                        
  1448.           SCL is a extensive collection of  Turbo Pascal  Source Routines built
  1449.           SCL
  1450.           to  cater   for  all   aspects  of  format  access,  display,  window
  1451.           management, data capture, input  check,  display  of  error messages,
  1452.           help system.  By simply  including these routines in any Turbo Pascal
  1453.           Program, all of its features can be used just like a very high level,
  1454.           straightforward and easy to learn language extension to Turbo Pascal.
  1455.           This not only leaves all flexibility  to the  programmer, but enables
  1456.           him to  create highly professional applications with many outstanding
  1457.           features  in  a  fraction  of  the   time  usually   required,  which
  1458.           contributes to reducing development costs considerably. 
  1459.  
  1460.  
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466.  
  1467.  
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.           Chapter I, System Overview and Features                      page 19
  1474.           Chapter I, System Overview and Features                      page 19
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.           OASIS Evaluation Reference Manual
  1490.           OASIS Evaluation Reference Manual
  1491.  
  1492.  
  1493.           The Screen Format Designer (SFD)
  1494.           The Screen Format Designer (SFD)
  1495.           ________________________________
  1496.  
  1497.  
  1498.           The purpose  of this  program is to assist you to design, specify and
  1499.           test all screen formats to be incorporated in an application program.
  1500.           These  formats  are  'built'  in  a straightforward but comprehensive
  1501.           approach using a full screen  editor  for  the  format  layout  and a
  1502.           series of pop-up menus to define field and global parameters. Finally
  1503.           under  each  single  format  name  are  stored  not   only  the  form
  1504.           description  layout  and  its  field  definitions but any information
  1505.           related to that format such as reference to help screens.
  1506.  
  1507.  
  1508.                        
  1509.           Key features of SFD include :
  1510.           Key features of SFD include :
  1511.  
  1512.                        
  1513.  
  1514.           -    Easy to understand, Menu Driven Program with Windows.
  1515.           -    Online accessible, context sensitive Help facility. 
  1516.           -    Layout design with comfortable Full Screen editor.
  1517.           -    Full characterset access.
  1518.           -    Drawing of Boxes with the opportunity  to choose  any linestyles
  1519.                and automatic interconnections to other boxes.
  1520.           -    Powerful Block Copy and Delete functions.
  1521.           -    Outstanding     selection     of    display    attributes    and
  1522.                highlightfunctions, seperate for color and monochrome displays.
  1523.           -    A large range of pre-defined fieldtypes.
  1524.           -    Input validation selectable for any field.
  1525.           -    Up to 50 fields per format.
  1526.           -    Option  to  define  and  link  'Help'   formats  and  assistance
  1527.                messages to any single field.
  1528.           -    Unrestricted formats size up to 80 x 25.
  1529.           -    Number of formats per program only limited by disk space.
  1530.           -    Transfer of formats between different format files.
  1531.           -    Printing of format lists and hard copies.
  1532.           -    Complete inbuilt test facility for new formats.
  1533.           -    Dynamic alteration  of format  specs. and attributes during test
  1534.                with results immediately being visible.
  1535.           -    Full support of MSDOS 2+ Subdirectory structure.
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.           Chapter I, System Overview and Features                      page 20
  1549.           Chapter I, System Overview and Features                      page 20
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.           OASIS Evaluation Reference Manual
  1565.           OASIS Evaluation Reference Manual
  1566.  
  1567.  
  1568.           The Screen Control Language (SCL)
  1569.           The Screen Control Language (SCL)
  1570.           _________________________________
  1571.  
  1572.  
  1573.           SCL is an extensive set of  routines to  access SFD  generated format
  1574.           SCL                                             SFD
  1575.           files  and  to  perform  all  screen related functions within a Turbo
  1576.           Pascal program.
  1577.  
  1578.  
  1579.           The main features of SCL are:
  1580.           The main features of SCL are:
  1581.  
  1582.  
  1583.           -    Powerful  command  syntax  (Processing  of  a   complete  format
  1584.                including  input  check  and  error  handling  with  only  three
  1585.                statements).
  1586.           -    Automatic control of display and overlay of formats. 
  1587.           -    Easy and comfortable access to fields.
  1588.           -    Support of windows including stacking to any desired depth, only
  1589.                limited by the amount of memory available.
  1590.           -    Handling of menus, even multiple menus and/or together with data
  1591.                input fields on one format. 
  1592.           -    Full control of display attributes and formatting of fields.
  1593.           -    Automatic input validity checks and display of error messages.
  1594.           -    No requirement to declare field variables etc. in your program.
  1595.           -    User programmed checks or  other interferences  possible anytime
  1596.                made simple and safe.
  1597.           -    Capability to monitor and flag user selectable keyboard keys and
  1598.                other events.
  1599.           -    Changes to Formats,  Messages  and  Input  check  parameters are
  1600.                possible without recompiling the program.
  1601.           -    Highly  improved   conciseness  and  ease  of  understanding  of
  1602.                finished programs.
  1603.           -    Comprehensive library of procedures and functions  to facilitate
  1604.                date/time processing,  access to DOS functions, string handling,
  1605.                (data communication with full reease) and much more. 
  1606.           -    Support of execution of other  programs  and  even  DOS commands
  1607.                from within an application.
  1608.           -    Support of background processing tasks (datacom, printing etc). 
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.           Chapter I, System Overview and Features                      page 21
  1623.           Chapter I, System Overview and Features                      page 21
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.           OASIS Evaluation Reference Manual
  1639.           OASIS Evaluation Reference Manual
  1640.  
  1641.  
  1642.           Application programs written with OASIS.
  1643.           Application programs written with OASIS.
  1644.           ________________________________________
  1645.  
  1646.                        
  1647.  
  1648.                        
  1649.  
  1650.                        
  1651.  
  1652.                        
  1653.  
  1654.                        
  1655.           The use  of OASIS results in very ergonomic application programs with
  1656.           The use  of OASIS
  1657.           outstanding  handling  capabilities  and  many  userfriendly features
  1658.           like:
  1659.  
  1660.  
  1661.           -    Automatic display of assisting messages for each single field.
  1662.  
  1663.           -    Extensive   Online   Help   System  with  four  different,  user
  1664.                selectable levels.
  1665.  
  1666.           -    Automatic Input error handling and display of error messages.
  1667.  
  1668.           -    Adaptability to different systems/keyboard layouts.
  1669.  
  1670.           -    Simple and straightforward Nationalisation and Customisation.
  1671.  
  1672.           -    Full Support for both Color and Monochrome displays. 
  1673.  
  1674.           -    Undo function.
  1675.  
  1676.           -    Abort function.
  1677.  
  1678.           -    Mouse support very simple to accomplish.
  1679.  
  1680.           -    Interrupt driven Data Communications Handling
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.           Chapter I, System Overview and Features                      page 22
  1701.           Chapter I, System Overview and Features                      page 22
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.           OASIS Evaluation Reference Manual
  1717.           OASIS Evaluation Reference Manual
  1718.  
  1719.  
  1720.                                Some Feature Explanations.
  1721.                                Some Feature Explanations.
  1722.                                __________________________
  1723.                        
  1724.  
  1725.                        
  1726.  
  1727.                        
  1728.  
  1729.                             Screen Related Program Parameters
  1730.                             Screen Related Program Parameters
  1731.  
  1732.  
  1733.           In OASIS written application programs most  screen related parameters
  1734.              OASIS
  1735.           are  stored   in  data   files.  This  includes  the  format  layouts
  1736.           themselves, the field details,  error messages,  help and explanatory
  1737.           information,   field   input   check/validation  parameters,  colors,
  1738.           attributes and much more.
  1739.           All these parameters can be altered anytime using SFD.
  1740.                                                             SFD
  1741.  
  1742.  
  1743.           This presents several advantages:
  1744.  
  1745.           1.   Program changes are often possible without recompiling. 
  1746.  
  1747.           2.   Nationalisation and  customisation of  programs, otherwise often
  1748.                very tedious and time consuming tasks become effortless and easy
  1749.                to accomplish. 
  1750.  
  1751.           3.   The program sources are more compact,  easier to  understand and
  1752.                do compile faster.
  1753.  
  1754.  
  1755.  
  1756.                               Colors and Display Attributes
  1757.                               Colors and Display Attributes
  1758.  
  1759.  
  1760.           OASIS  written  applications  automatically  recognize  the  type  of
  1761.           OASIS
  1762.           display adapter and therefore utilize the suitable screen attributes.
  1763.           For optimum  result, two  totally independent  sets of attributes are
  1764.           provided for  each format/field,  one for  color graphic  and one for
  1765.           monochrome display adapters.
  1766.  
  1767.           Note:  OASIS works in 80 column modes only. 
  1768.           Note:
  1769.  
  1770.  
  1771.  
  1772.                               Non Standard Keyboard Layouts
  1773.                               Non Standard Keyboard Layouts
  1774.  
  1775.  
  1776.           SCL  written  applications  can  easily  be  adapted  to non standard
  1777.           SCL
  1778.           Keyboards. The Codes of all relevant keys are stored as constants and
  1779.           can be adapted as required.
  1780.  
  1781.  
  1782.  
  1783.  
  1784.           Chapter I, System Overview and Features                      page 23
  1785.           Chapter I, System Overview and Features                      page 23
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.  
  1800.           OASIS Evaluation Reference Manual
  1801.           OASIS Evaluation Reference Manual
  1802.  
  1803.  
  1804.           Program development with OASIS
  1805.           Program development with OASIS
  1806.           ______________________________
  1807.  
  1808.           It is made up of two distinct phases. 
  1809.  
  1810.  
  1811.  
  1812.           A. Declarative Phase
  1813.           A. Declarative Phase
  1814.  
  1815.  
  1816.           This  Phase  is  completely  performed  using SFD. It consists of the
  1817.                                                         SFD
  1818.           following steps:
  1819.  
  1820.           1.   Define all screen formats and fields required. 
  1821.            
  1822.           For each Format do the following:
  1823.  
  1824.  
  1825.           2.   Using the  screen editor,  design its  layout including location
  1826.                and size of all required fields.
  1827.  
  1828.           3.   Using pop-up  menus then  specify the  appearance of the format,
  1829.                define whether special  checks  are  required  or  not  for this
  1830.                format and  establish if  and when other external actions are to
  1831.                be performed.
  1832.  
  1833.           4.   Always using pop-up  menus  determine  if  and  in  which fields
  1834.                error and explanatory messages are to be displayed.
  1835.            
  1836.           5.   Again  using  pop-up  menus  specify  for  each field, the type 
  1837.                (Variable, Constant, Output) and  define  its  parameters   like
  1838.                special appearance,  attributes, formatting,  necessary  checks,
  1839.                explanatory message,inter field dependencies and so  on.
  1840.  
  1841.           6.   Finally test the  format  using  the  SFD  test  facilities. The
  1842.                                                      SFD
  1843.                format  behaves  just  as  if  it was already integrated in your
  1844.                program.  You   can   therefore   safely   test   input  checks,
  1845.                formatting,  help  system  and  many  other things. You may find
  1846.                that you are  not  satisfied  with  one  or  another  detail. No
  1847.                problem,  you  can  do  most  changes  right  away, without even
  1848.                leaving the test. The  results will  be immediately  visible  to
  1849.                you. Only  for some  major changes  like basic  layout or  field
  1850.                types you would have to go back to the Design  facility. 
  1851.  
  1852.           7.   Once you are pleased with your  format,  you  can  assign  help 
  1853.                screens to  it (this  can be  done anytime later on). There  are
  1854.                many different possibilities for the help system, please    look
  1855.                under "The OASIS Help System" for details.
  1856.                      "The OASIS Help System"
  1857.  
  1858.  
  1859.  
  1860.           Chapter I, System Overview and Features                      page 24
  1861.           Chapter I, System Overview and Features                      page 24
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.           OASIS Evaluation Reference Manual
  1877.           OASIS Evaluation Reference Manual
  1878.  
  1879.  
  1880.  
  1881.           B. Procedural Phase
  1882.           B. Procedural Phase
  1883.  
  1884.  
  1885.           1.   Now the  time has  come to  actually begin programming using SCL
  1886.                                                                             SCL
  1887.                constructs.
  1888.                The first approach is  to build  some sort  of skeleton program,
  1889.                containing all  switching logic between different formats and so
  1890.                forth.
  1891.  
  1892.           2.   You then compile this skeleton  and  experiment  with  the basic
  1893.                logic  to  assess  its  functionality  and see if it is what you
  1894.                wanted initially. By now, you will  have an  exact idea  how the
  1895.                final  program  will  look  like  and  you  already  have spared
  1896.                yourself precious time since you will require a lot less testing
  1897.                and changes later on.
  1898.  
  1899.           3.   You complete  your program  by adding all the missing logic into
  1900.                the skeleton. 
  1901.  
  1902.           4.   You perform the final testing and fine tuning as required.
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931.  
  1932.           Chapter I, System Overview and Features                      page 25
  1933.           Chapter I, System Overview and Features                      page 25
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.           OASIS Evaluation Reference Manual
  1949.           OASIS Evaluation Reference Manual
  1950.  
  1951.  
  1952.                      Differences to traditional program development
  1953.                      Differences to traditional program development
  1954.                      ______________________________________________
  1955.  
  1956.  
  1957.           What instead of how
  1958.           What instead of how
  1959.           Obviously  the  first  difference  with  conventional  user interface
  1960.           approach is  that you  do not have to specify how your formats are to
  1961.           be built. As a matter of  fact  this  is  the  essence  of  the OASIS
  1962.           concept.  All  you  have  to  do  is draw them and tell SFD what they
  1963.           should look like. It is no longer neccessary  to write  procedures to
  1964.           check or to format the fields content. 
  1965.           As a  general rule,  just declare  what should be done, not how to do
  1966.                                              ____                     ___
  1967.           it.
  1968.  
  1969.  
  1970.           Early Tests
  1971.           Early Tests
  1972.           Most of the necessary test work  can be  performed at  quite an early
  1973.           stage of the program development, ensuring that conceptual errors are
  1974.           detected early enough to  take corrective  actions before  things get
  1975.           out of control.
  1976.  
  1977.  
  1978.           Less Programming
  1979.           Less Programming
  1980.           Another strength  resides in the fact that much of the programming is
  1981.           already done before you even start to generate a program source. Once
  1982.           you really  start programming,  you will  realize that SCL constructs
  1983.                                                                  SCL
  1984.           allow you to remain in the declarative mode. Since you  don't have to
  1985.                                      declarative
  1986.           develop  procedures,  you  can  concentrate on more global aspects of
  1987.           your program and, as a side effect, you'll save a considerable amount
  1988.           of time. 
  1989.  
  1990.  
  1991.           Easier changes
  1992.           Easier changes
  1993.           During program  development a  lot of  changes have to be made to the
  1994.           program. Even once a  program is  finished, you  usually never really
  1995.           stop changing  it. For programs written with OASIS this becomes a lot
  1996.                                                        OASIS
  1997.           easier. If the changes are in the screen  interface, you  can usually
  1998.           perform them  via SFD  without even  recompiling the program. Even if
  1999.                             SFD
  2000.           this is not the case, it  becomes  a  lot  easier  to  do  since your
  2001.           program source is much more concise and thus more intelligible. 
  2002.  
  2003.  
  2004.           Nationalization, customization made simple
  2005.           Nationalization, customization made simple
  2006.           All screen formats and all program messages are stored in data files,
  2007.           easily accessible with SFD. Customisation of  screens and/or messages
  2008.                                  SFD
  2009.           or even  translation of  a whole  program into other languages become
  2010.           mondaine tasks, without even recompiling the program.
  2011.  
  2012.  
  2013.  
  2014.  
  2015.           Chapter I, System Overview and Features                      page 26
  2016.           Chapter I, System Overview and Features                      page 26
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.           OASIS Evaluation Reference Manual
  2032.           OASIS Evaluation Reference Manual
  2033.  
  2034.  
  2035.                               System Installation and Setup
  2036.                               System Installation and Setup
  2037.                               _____________________________
  2038.  
  2039.  
  2040.  
  2041.           The Distribution Disks
  2042.           The Distribution Disks
  2043.  
  2044.                        
  2045.  
  2046.                        
  2047.  
  2048.                        
  2049.           On the OASIS Distribution disks you'll find the following files:    
  2050.           On the OASIS Distribution disks you'll find the following files:   
  2051.  
  2052.           READ.ME        Textfile containing last minute information.
  2053.  
  2054.           SCL.TPU        Turbo Pascal 4.0 Unit  file containing  all Screen    
  2055.                                                                      Screen    
  2056.                          Control Language  (SCL) Routines and definitions.     
  2057.                          Control Language
  2058.                          In order to access SCL you must include 'SCL' in      
  2059.                          your 'USES' statement.
  2060.  
  2061.           SCL.DOC        Source of the 'Interface' Part of SCL.TPU.
  2062.  
  2063.           SFD.EXE        Screen Format Designer Program.
  2064.  
  2065.           SFD.ERR        Text file containing error messages for SFD.EXE.
  2066.  
  2067.           SFD.MSG        Data file  containing explanatory program messages    
  2068.                          for SFD.EXE.
  2069.  
  2070.           SFD.FOR        Screenfile for SFD.EXE.
  2071.  
  2072.           SFD.FIN        Screen index file.
  2073.  
  2074.           SCL.ERR        Optional (Error-) Message file to be used for your    
  2075.                          programs. You can add your own messages as required.
  2076.  
  2077.  
  2078.           SAMPLExS       Turbo Pascal program examples to demonstrate SCL.
  2079.  
  2080.           SAMPLEx.EXE    Compiled versions of the above. 
  2081.  
  2082.           SAMPLEx.SCS    Screenfiles to above.
  2083.  
  2084.           SAMPLEx.SCI    Indexfiles to above.
  2085.  
  2086.           SAMPLEx.MSG    Message files to above.
  2087.  
  2088.           SAMPLEx.ERR    Error messages to above.
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.           Chapter I, System Overview and Features                      page 27
  2095.           Chapter I, System Overview and Features                      page 27
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.           OASIS Evaluation Reference Manual
  2111.           OASIS Evaluation Reference Manual
  2112.  
  2113.  
  2114.  
  2115.  
  2116.                                    System Requirements
  2117.                                    System Requirements
  2118.  
  2119.  
  2120.                                 IBM PC or compatible
  2121.                                  
  2122.                                 256 KB Memory minimum
  2123.  
  2124.                                 Hard disk *)
  2125.  
  2126.                                 PC DOS/MS-DOS 2.0 or later
  2127.  
  2128.                                 Turbo Pascal 4.0 or later
  2129.  
  2130.  
  2131.                
  2132.  
  2133.           *)  Note:
  2134.               Note
  2135.            
  2136.           The Screen  Format Designer  program requires a hard disk in order to
  2137.               Screen  Format Designer
  2138.           run.
  2139.  
  2140.           Other typical Application  Programs  build  with  OASIS  normally run
  2141.                                                             OASIS
  2142.           happily on a floppy system.
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.           See Appendix A for Details on System Resource Considerations.  
  2149.           See Appendix A for Details on System Resource Considerations.
  2150.  
  2151.  
  2152.            
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.           Chapter I, System Overview and Features                      page 28
  2170.           Chapter I, System Overview and Features                      page 28
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.           OASIS Evaluation Reference Manual
  2186.           OASIS Evaluation Reference Manual
  2187.  
  2188.  
  2189.  
  2190.  
  2191.                                 Installation Instructions
  2192.                                 Installation Instructions
  2193.                                 _________________________
  2194.                        
  2195.  
  2196.  
  2197.  
  2198.           There is  no special  Installation procedure necessary since OASIS is
  2199.           not copy protected.
  2200.           Just create a subdirectory on your hard disk and copy  the content of
  2201.           both distribution disks to it.
  2202.  
  2203.  
  2204.           Now add to your CONFIG.SYS file the following two statements:
  2205.  
  2206.             FILES=16
  2207.             FILES=16
  2208.             BUFFERS=32
  2209.             BUFFERS=32
  2210.  
  2211.  
  2212.           If  your  configuration  file  should  already  contain  a "FILES=nn"
  2213.           statement, then you just increase the number to at least 16; if it is
  2214.           already bigger, leave it as it is.
  2215.           The same applies to the "BUFFER=nn" Statement.
  2216.  
  2217.           This completes the installation.
  2218.  
  2219.           To start the Screen Design Program just go to the subdirectory you've
  2220.           loaded the  distribution disks  to (using  the DOS  Command "CD") and
  2221.           enter SFD<Return>.
  2222.                 SFD
  2223.  
  2224.  
  2225.  
  2226.  
  2227.  
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.           Chapter I, System Overview and Features                      page 29
  2246.           Chapter I, System Overview and Features                      page 29
  2247.  
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253.  
  2254.  
  2255.  
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.  
  2265.  
  2266.  
  2267.  
  2268.  
  2269.  
  2270.  
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.  
  2278.  
  2279.  
  2280.                                        Chapter II
  2281.                                        Chapter II
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320.  
  2321.  
  2322.  
  2323.  
  2324.  
  2325.  
  2326.  
  2327.  
  2328.  
  2329.  
  2330.           OASIS Evaluation Reference Manual
  2331.           OASIS Evaluation Reference Manual
  2332.  
  2333.  
  2334.  
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384.           Chapter II,  SFD getting started                             page 31
  2385.           Chapter II,  SFD getting started                             page 31
  2386.  
  2387.  
  2388.  
  2389.  
  2390.  
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.           OASIS Evaluation Reference Manual
  2401.           OASIS Evaluation Reference Manual
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.                                The Screen Format Designer
  2423.                                The Screen Format Designer
  2424.                        
  2425.  
  2426.                        
  2427.                        
  2428.  
  2429.                                         ( S F D )
  2430.                                         ( S F D )
  2431.                        
  2432.  
  2433.                        
  2434.                        
  2435.  
  2436.                                      Getting Started
  2437.                                      Getting Started
  2438.                        
  2439.  
  2440.                        
  2441.                        
  2442.  
  2443.                        
  2444.                        
  2445.  
  2446.                                    (A Short Tutorial)
  2447.                                    (A Short Tutorial)
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.           Chapter II,  SFD getting started                             page 32
  2473.           Chapter II,  SFD getting started                             page 32
  2474.  
  2475.  
  2476.  
  2477.  
  2478.  
  2479.  
  2480.  
  2481.  
  2482.  
  2483.  
  2484.  
  2485.  
  2486.  
  2487.  
  2488.           OASIS Evaluation Reference Manual
  2489.           OASIS Evaluation Reference Manual
  2490.  
  2491.  
  2492.                             Explanation of keyboard functions
  2493.                             Explanation of keyboard functions
  2494.                        
  2495.  
  2496.                        
  2497.  
  2498.           At  first  you  will  probably find the following explanations rather
  2499.           complicated and confusing, but  upon trying  you will  soon find that
  2500.           everything does  function in  a very  intuitive way and you will very
  2501.           quickly get familiar with it. Much care has been taken  regarding the
  2502.           way  the  different  functions  are  layed  out  to  achieve  ease of
  2503.           operation and a maximum of ergonomy.
  2504.  
  2505.  
  2506.  
  2507.           Variables and Constants
  2508.           Variables and Constants
  2509.  
  2510.           Variables and Constants are the two main categories of format fields.
  2511.           Whenever you happen to see the cusor, either as a  blinking underline
  2512.           character or as a big block (which may or may not blink) you are in a
  2513.           Variable field and you are expected to enter some data.
  2514.           Variable
  2515.  
  2516.           If the cursor is not visible you are in a  Constant field.  You can't
  2517.                                                      Constant
  2518.           enter  any  data  into  Constants,  all  you  can  do is to select or
  2519.           deselect them by pressing Return  or  Enter.  A  typical  example for
  2520.                                     Return      Enter.
  2521.           Constant fields  is a  Menu. You  just select one (in some cases more
  2522.           Constant
  2523.           than one) possibility out of a choice being presented to you.
  2524.            
  2525.  
  2526.  
  2527.  
  2528.           The keys to travel between fields and their functions are as follows:
  2529.           The keys to travel between fields and their functions are as follows:
  2530.  
  2531.  
  2532.                Right     : Next Field.
  2533.                Left      : Previous Field.
  2534.                Down      : First field on next line.
  2535.                Up        : Last field on previous line.
  2536.                Home      : First field in line.
  2537.                End       : Last field in line.
  2538.                PgDn      : Last field on format.
  2539.                PgUp      : First field on format.
  2540.                Tab       : Next field.*)
  2541.                ShiftTab  : Previous field.*)
  2542.  
  2543.  
  2544.           Note:   
  2545.           Note:   
  2546.           *)  Tab and Right respectively ShiftTab and  Left are  not identical.
  2547.           See next paragraph.
  2548.  
  2549.  
  2550.  
  2551.  
  2552.           Chapter II,  SFD getting started                             page 33
  2553.           Chapter II,  SFD getting started                             page 33
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.           OASIS Evaluation Reference Manual
  2569.           OASIS Evaluation Reference Manual
  2570.  
  2571.  
  2572.           Variable field specials
  2573.           Variable field specials
  2574.  
  2575.           Upon  approaching  a  Variable  field you will realize several things
  2576.           happening.
  2577.  
  2578.  
  2579.           1.   The present content of the field  (if  there  is  any)  is being
  2580.                shifted to the left, no matter how it was formatted before. this
  2581.                is done in order to facilitate the entry or change of data.
  2582.  
  2583.           2.   In some cases, the part of the field not yet  containing data is
  2584.                flushed with  Fill characters  (usually dots) or the whole field
  2585.                              Fill
  2586.                is being underlined. Whichever the  case,  the  intention  is to
  2587.                give you an indication of the length of the field, i.e. how much
  2588.                space is left for data input.
  2589.  
  2590.           3.   The Cursor is visible in form of a blinking Underline character.
  2591.  
  2592.  
  2593.  
  2594.           Once you start entering data, the  shape of  the cursor  changes to a
  2595.           big block which may or may not blink. This indicates that you are now
  2596.           in Entry mode and that the left and  right arrows  have changed their
  2597.              Entry
  2598.           meaning. Now Right advances you one character position and Left moves
  2599.                        Right                                         Left
  2600.           you to the previous character. Note that Tab and ShiftTab  keep their
  2601.                                                    Tab     ShiftTab
  2602.           original functions.  If you  press Right  while already  being in the
  2603.                                              Right
  2604.           rightmost position of the field or if you  press Left  while being at
  2605.                                                            Left
  2606.           the first character of the field you will be notified by a Beep.
  2607.                                                                      Beep.
  2608.  
  2609.           Besides just  entering data,  there is  an alternate method to change
  2610.           from Travel to Entry mode : Pressing Return. This is especially handy
  2611.                Travel    Entry                 Return
  2612.           in cases  where you  want to  change already existing data in a field
  2613.           and you need to  advance  to  the  appropriate  character position(s)
  2614.           using the arrows.
  2615.                     arrows
  2616.  
  2617.  
  2618.           Editing keys 
  2619.           Editing keys
  2620.  
  2621.                Backspace : Deletes character left of cursor.
  2622.                Insert    : Inserts a space at cursor position.
  2623.                Delete    : Deletes character under cursor.
  2624.  
  2625.  
  2626.           Note:    Entering  data  into  the  rightmost  position of a Variable
  2627.           Note:                                                        Variable
  2628.           automatically advances you to the next field.
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.           Chapter II,  SFD getting started                             page 34
  2635.           Chapter II,  SFD getting started                             page 34
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650.           OASIS Evaluation Reference Manual
  2651.           OASIS Evaluation Reference Manual
  2652.  
  2653.  
  2654.           Return
  2655.           Return
  2656.  
  2657.           As previously mentioned, pressing  Return while  in a  Variable field
  2658.                                              Return              Variable
  2659.           puts you into Entry Mode.  Once you are in Entry mode pressing Return
  2660.                         Entry                        Entry               Return
  2661.           finishes this field an advances you to to  the next  one or,  if this
  2662.           field was the last one, terminates the format.
  2663.           The resulting  effect on  the field  content varies depending on your
  2664.           position within the field.
  2665.           If you were in the first position, the  entire current  field content
  2666.           is captured.  For all  other positions  only the portion of the field
  2667.           left of the cursor is recognized.
  2668.  
  2669.           While in a Constant field, pressing Return toggles the status  of the
  2670.                      Constant                 Return
  2671.           field from  not selected  to selected and vice versa. The cursor will
  2672.                       not selected     selected
  2673.           automatically be advanced to the next field. In case you  are already
  2674.           in the last field the format will be terminatedn 
  2675.           In some  cases, Constant fields can form a group, typically some kind
  2676.                           Constant
  2677.           of a menu. In these cases  only one  field out  of that  group may be
  2678.           selected at  any given time. So, if you select a field other than the
  2679.           one presently already selected, the latter one will  automatically be
  2680.           deselected. If  a field of such a group has been selected, the cursor
  2681.           automatically advances to the  field immediately  following the group
  2682.           (in  case  there  is  none  left,  the  format  will be automatically
  2683.           terminated).
  2684.           Selecting an item out of a group of Constant fields may or may not be
  2685.                                               Constant
  2686.           mandatory. In  case it  is, you  are not  allowed to deselect a field
  2687.                                                                deselect
  2688.           (i.e. pressing Return in a field being presently  selected results in
  2689.                          Return                             selected
  2690.           a Beep or an error message to be displayed).
  2691.             Beep
  2692.           In such  cases, deselecting  a field is automatically done as soon as
  2693.                           deselecting
  2694.           you select another field. This is very much the same  as on  a TV-Set
  2695.               select
  2696.           where you deselect a channel by just choosing another one. 
  2697.  
  2698.  
  2699.  
  2700.           Escape
  2701.           Escape
  2702.  
  2703.           Escape can  be used  to tell  the program independently of the cursor
  2704.           position that you are finished with the present  format and  you want
  2705.           to exit it. 
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717.           Chapter II,  SFD getting started                             page 35
  2718.           Chapter II,  SFD getting started                             page 35
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.  
  2726.  
  2727.  
  2728.  
  2729.  
  2730.  
  2731.  
  2732.  
  2733.           OASIS Evaluation Reference Manual
  2734.           OASIS Evaluation Reference Manual
  2735.  
  2736.  
  2737.           Function keys
  2738.           Function keys
  2739.  
  2740.  
  2741.           F1
  2742.           F1
  2743.  
  2744.           Pressing  F1   displays  General   Help  Informations  including  key
  2745.                     F1
  2746.           functions etc.
  2747.  
  2748.  
  2749.           F2
  2750.           F2
  2751.  
  2752.           F2 displays specific Informations relative to what you  are presently
  2753.           doing. Please note that F2 help is not available for every format. In
  2754.                                   F2 help
  2755.           such cases, if you press F2 you will just hear a beep.
  2756.                                    F2                      beep.
  2757.  
  2758.                        
  2759.  
  2760.           F3
  2761.           F3
  2762.  
  2763.           The UNDO key. Pressing F3 will  restore the  content of  your present
  2764.                                  F3
  2765.           field to  whatever it  was before you changed it; i.e. will UNDO your
  2766.           changes. Note that UNDO only applies to Variable fields.
  2767.                                                   Variable
  2768.  
  2769.  
  2770.           F10
  2771.           F10
  2772.  
  2773.           The ABORT key. Pressing  F10  tells  the  program  that  you  want to
  2774.                                    F10
  2775.           unconditionally abort  your present  operation. Any data you may have
  2776.           entered on your present format will be lost.  For this  reason, Abort
  2777.                                                                           Abort
  2778.           is only available with a few formats. 
  2779.           Formats where  Abort is not available can typically only be exited by
  2780.                          Abort
  2781.           hitting the Escape key while the data fields are empty. 
  2782.                       Escape
  2783.  
  2784.  
  2785.  
  2786.           Other (local) functions
  2787.           Other (local) functions
  2788.  
  2789.           On some formats there may be further functions available. Pressing F1
  2790.                                                                              F1
  2791.           (Help) will always give you the appropriate details.
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802.  
  2803.  
  2804.           Chapter II,  SFD getting started                             page 36
  2805.           Chapter II,  SFD getting started                             page 36
  2806.  
  2807.  
  2808.  
  2809.  
  2810.  
  2811.  
  2812.  
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.  
  2820.           OASIS Evaluation Reference Manual
  2821.           OASIS Evaluation Reference Manual
  2822.  
  2823.  
  2824.                              Errors & Automatic Help System
  2825.                              Errors & Automatic Help System
  2826.                              ______________________________
  2827.                        
  2828.  
  2829.                        
  2830.  
  2831.                        
  2832.  
  2833.                        
  2834.           Invalid data entry
  2835.           Invalid data entry
  2836.            
  2837.           Whenever you try to enter invalid data you will be notified by a Beep
  2838.                                                                            Beep
  2839.           and,  in  some  cases,  a  system  generated  error  message  may  be
  2840.           displayedn
  2841.  
  2842.  
  2843.  
  2844.           Missing mandatory data
  2845.           Missing mandatory data
  2846.  
  2847.           If you  attempt to  exit a format before having entered all mandatory
  2848.           fields, the program will notify you in the same way as in the case of
  2849.           invalid  data.   In  addition,   the  cursor  will  automatically  be
  2850.           positioned into the field where data is missing.
  2851.  
  2852.  
  2853.  
  2854.           Autohelp feature 
  2855.           Autohelp feature
  2856.  
  2857.           If you make a certain number of consecutive  input errors  (Default =
  2858.           3) the  program will automatically come up with information where and
  2859.           how to obtain help.
  2860.  
  2861.  
  2862.  
  2863.  
  2864.           Note:  You can change nearly all Help system Parameters  according to
  2865.           Note:  
  2866.           your requirements.
  2867.           See under 'System Defaults' for details.
  2868.  
  2869.  
  2870.  
  2871.  
  2872.  
  2873.  
  2874.  
  2875.  
  2876.  
  2877.  
  2878.  
  2879.  
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885.           Chapter II,  SFD getting started                             page 37
  2886.           Chapter II,  SFD getting started                             page 37
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.  
  2900.  
  2901.           OASIS Evaluation Reference Manual
  2902.           OASIS Evaluation Reference Manual
  2903.  
  2904.  
  2905.                                       Design Cycle
  2906.                                       Design Cycle
  2907.                                       ____________
  2908.  
  2909.  
  2910.           To  make  you  familiar  with  the  operation  of  SFD we will now go
  2911.           together through the complete cycle of design and  specification of a
  2912.           format. 
  2913.           During this  exercise we  will also  look at some of the features the
  2914.           program offers. Once we are done  with the  design of  your format we
  2915.           will test it using SFD's own test facility.
  2916.  
  2917.                        
  2918.           Those already  familiar with the basic operation of SFD can skip this
  2919.           Those already  familiar with the basic operation of SFD can skip this
  2920.           part of the manual.
  2921.           part of the manual.
  2922.  
  2923.  
  2924.           Start the program by  entering SFD<Return>  (Make sure  to be  in the
  2925.                                          SFD
  2926.           right directory).
  2927.  
  2928.           After a  short moment  you will  be presented  with the programs main
  2929.           menu.
  2930.  
  2931.           It is divided into three parts.
  2932.           The header shows the  program  name,  version  etc  as  well  as some
  2933.           informations about  the directory you have selected, the workfile and
  2934.           the number of formats in it.
  2935.           Since you have just started up the program  the following information
  2936.           should be displayed. 
  2937.  
  2938.                Act dir      : <The currently active drive and directory>. 
  2939.                Workfile     : <None>.
  2940.                Nr of Formats: 0.
  2941.  
  2942.           The middle  part of  the menu  is occupied by a number of menu items,
  2943.           subdivided into seven groups.
  2944.           Presently, the first item (Layout) of the first group (Design) should
  2945.           be highlighted.
  2946.  
  2947.           The last  line of  the menu  is called  Message Line  and gives you a
  2948.                                                   Message Line
  2949.           brief explanation of the highlighted item.
  2950.  
  2951.           If you press F1 (just do it  !)  a  screen  informing  you  about the
  2952.                        F1
  2953.           meaning of keys etc will appear.
  2954.           To leave the Help format press either Return or Escape.
  2955.                                                 Return    Escape.
  2956.  
  2957.           F2 will  give you a bit more detailed Information about the presently
  2958.           F2
  2959.           highlighted group of items on the  menu.  Again,  to  leave  the help
  2960.           format you must press Return or Escape.
  2961.                                 Return    Escape.
  2962.  
  2963.           You can use F1 on any format, F2 may not be available in some cases.
  2964.                       F1                F2
  2965.  
  2966.  
  2967.           Chapter II,  SFD getting started                             page 38
  2968.           Chapter II,  SFD getting started                             page 38
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.           OASIS Evaluation Reference Manual
  2984.           OASIS Evaluation Reference Manual
  2985.  
  2986.  
  2987.           You can  travel around on the menu using the appropriate keys. If you
  2988.           don't know which ones either look  in this  manual under  'Meaning of
  2989.           keys' or  press F5. While you are traveling around on the menu, watch
  2990.                           F5
  2991.           the message line changing.
  2992.         | You may also want  to press  F2 while  being in  different fields and
  2993.           read the appropriate explanations. 
  2994.  
  2995.  
  2996.           Once you  are familiar with how to travel on a format, we can proceed
  2997.           to some 'real' work. 
  2998.  
  2999.         | Before we start I want to remind you of the two 'Help' keys F1 and F2
  3000.           During this  exercise it  is probably  a good  idea to  use them very
  3001.           frequently (Especially F2) and  read  the  information  they containn
  3002.         | Don't forget  that the help provided by F2 is context sensitive (i.e.
  3003.           the kind of  information  provided  may  change  depending  where you
  3004.           presently are on the format. 
  3005.           Should  you  require  further  detailed  informations,  then read the
  3006.           appropriate chapter later on in this manual. 
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.           Chapter II,  SFD getting started                             page 39
  3039.           Chapter II,  SFD getting started                             page 39
  3040.  
  3041.  
  3042.  
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.           OASIS Evaluation Reference Manual
  3055.           OASIS Evaluation Reference Manual
  3056.  
  3057.  
  3058.                                 Designing a format layout
  3059.                                 Designing a format layout
  3060.                                 _________________________
  3061.  
  3062.  
  3063.            1.  Travel to the appropriate item (Layout).
  3064.  
  3065.            2.
  3066.         |      Hit Return. This selects the item.
  3067.  
  3068.  
  3069.           Since you have not yet loaded a work  filel SFD  will come  up with a
  3070.                                                       SFD
  3071.           tiny window asking you for a name.
  3072.           Enter a  name (without  extension since SFD uses its own extensions),
  3073.                                                   SFD
  3074.         | say 'Myfile', and press Return.
  3075.  
  3076.  
  3077.           The window disappears again and a new one will come  up informing you
  3078.           that SFD  will ask  you whether  you want to create a new format. You
  3079.                SFD
  3080.           say yes.
  3081.  
  3082.           Now you will be presented with the layout editor's worksheet (a fancy
  3083.           name for an empty screen, isn't it ?).
  3084.  
  3085.           It's  size  defaults  to  25  lines  with  80 characters each (a full
  3086.           screen).
  3087.  
  3088.           In order to familiarize you with the different features, you should
  3089.         |                             now read both the F1 and F2 help formats.
  3090.  
  3091.         | You probably have already noticed some additional functions  on F4 to
  3092.         | F9 During our little exercise we will try out most of them.
  3093.  
  3094.           However  we  should  first  talk  about  the  other keys. Some have a
  3095.           slightly different meaning as on a normal format.
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.  
  3110.  
  3111.  
  3112.  
  3113.  
  3114.  
  3115.           Chapter II,  SFD getting started                             page 40
  3116.           Chapter II,  SFD getting started                             page 40
  3117.  
  3118.  
  3119.  
  3120.  
  3121.  
  3122.  
  3123.  
  3124.  
  3125.  
  3126.  
  3127.  
  3128.  
  3129.  
  3130.  
  3131.           OASIS Evaluation Reference Manual
  3132.           OASIS Evaluation Reference Manual
  3133.  
  3134.  
  3135.                             Layout editor  -  Meaning of keys
  3136.                             Layout editor  -  Meaning of keys
  3137.  
  3138.  
  3139.         | Backspace, Insert and Delete  have the  same meaning  as under normal
  3140.           operation.
  3141.  
  3142.  
  3143.  
  3144.         | Home      moves  the cursor to the upper left  corner  of  your 
  3145.                     worksheet. 
  3146.  
  3147.         | End       moves  the cursor to the first position on the  last 
  3148.                     line.
  3149.  
  3150.         | PgUp      deletes the line under the cursor.
  3151.  
  3152.         | PgDn      inserts a line.
  3153.  
  3154.         | Return    moves the cursor to the first character of  the  next 
  3155.                     line.
  3156.  
  3157.  
  3158.  
  3159.         | The Arrow  keys allow you to move freely on the format. Note that the
  3160.         | Arrows are working in wrap-around mode. This means that:
  3161.  
  3162.         | If you press Right while being in the rightmost position  you will be
  3163.           moved to the first position of the next line. 
  3164.  
  3165.         | If you  press Left  while being  in the  first position of a line you
  3166.           will be moved to the last position of the previous line.
  3167.  
  3168.           Right while being in the lower  right corner  moves you  to the upper
  3169.         | left corner; the opposite happens if you then press Left.
  3170.  
  3171.         | Pressing Up  while being in the first line moves you to the last line
  3172.         | and the opposite happens with Down while in the last line.
  3173.  
  3174.  
  3175.  
  3176.           Before starting to draw  a format  we will  learn how  to specify its
  3177.           size. (The  size can  actually be  changed anytime  during the layout
  3178.           design). 
  3179.  
  3180.  
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.           Chapter II,  SFD getting started                             page 41
  3187.           Chapter II,  SFD getting started                             page 41
  3188.  
  3189.  
  3190.  
  3191.  
  3192.  
  3193.  
  3194.  
  3195.  
  3196.  
  3197.  
  3198.  
  3199.  
  3200.  
  3201.  
  3202.           OASIS Evaluation Reference Manual
  3203.           OASIS Evaluation Reference Manual
  3204.  
  3205.  
  3206.                                 Changing the Format Size
  3207.                                 Changing the Format Size
  3208.                        
  3209.  
  3210.  
  3211.         | Press F9. This will display the editors local menu. Select  the first
  3212.           item (Change  format size).  A new  window comes  up with the present
  3213.           settings. Just enter  new  values,  let's  assume  15  lines  with 40
  3214.           characters each. That's it. 
  3215.           You'll now  see that  the unused portion of the screen is filled with
  3216.           tiny dots. This is done to give you an idea of your drawing area.
  3217.           You will also realize that cursor  movement is  now confined  to this
  3218.           area. 
  3219.  
  3220.  
  3221.           Now we will start drawing a screen format.
  3222.  
  3223.  
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.  
  3242.  
  3243.  
  3244.  
  3245.  
  3246.  
  3247.  
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.  
  3255.  
  3256.  
  3257.  
  3258.           Chapter II,  SFD getting started                             page 42
  3259.           Chapter II,  SFD getting started                             page 42
  3260.  
  3261.  
  3262.  
  3263.  
  3264.  
  3265.  
  3266.  
  3267.  
  3268.  
  3269.  
  3270.  
  3271.  
  3272.  
  3273.  
  3274.           OASIS Evaluation Reference Manual
  3275.           OASIS Evaluation Reference Manual
  3276.  
  3277.  
  3278.                                      Drawing fields
  3279.                                      Drawing fields
  3280.  
  3281.  
  3282.           In our  exercise we  will build a format for a rather trivial program
  3283.           to print address labels.
  3284.  
  3285.           While drawing it make sure that you don't put any text into the first
  3286.           character position  on any line because we will need this space later
  3287.           on.
  3288.  
  3289.           First go to the second line and give the format a header  of your own
  3290.         | choice. Once  you have  written it  go to  column 1  and press Insert
  3291.           until it is approximately in the  center. (If  you have  moved it too
  3292.         | far, use Delete)
  3293.  
  3294.           Now go to line 4 and enter the following: [Mr][Mrs][Miss]
  3295.  
  3296.           The open square bracket means 'Begin of field', the closed means 'End
  3297.           of field'. In your example, the first character position of the first
  3298.           field is  the 'M', the last is the 'r'. the field has a length of two
  3299.           characters.
  3300.  
  3301.           Now  complete  your  format  according  to  the  drawing  below. Move
  3302.           everything that  it looks  nice. The exact length and position of the
  3303.           fields does not matter at the moment, just  check that  you have left
  3304.           line 1,  line 3, the line below 'City' and line 15 (the last) as well
  3305.           as the first and last column empty. We will need them in  a moment...
  3306.            
  3307.            
  3308.  
  3309.  
  3310.                       -Header-  
  3311.  
  3312.                       [Mr][Mrs][Miss]
  3313.  
  3314.            Name.......[                    ]
  3315.  
  3316.            Street.....[                    ]
  3317.            City.......[                    ]
  3318.  
  3319.                        Number of Labels[   ]
  3320.  
  3321.            Msg[                            ]                 
  3322.  
  3323.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329.           Chapter II,  SFD getting started                             page 43
  3330.           Chapter II,  SFD getting started                             page 43
  3331.  
  3332.  
  3333.  
  3334.  
  3335.  
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.           OASIS Evaluation Reference Manual
  3346.           OASIS Evaluation Reference Manual
  3347.  
  3348.  
  3349.                                       Drawing boxes
  3350.                                       Drawing boxes
  3351.  
  3352.  
  3353.           Presently our  format doesn't  look too  appealing, does it ? We will
  3354.           correct this now by drawing boxes around the different parts.
  3355.           First we want to draw a frame around the complete format. We  need to
  3356.         | Mark two diagonal corners of the box we want to draw. Therefore we go
  3357.         | to line 1, Column 1 (Home) and press F5  (Mark). The mark is shown as
  3358.         | a small  rhombus. (By the way, an accidentally set Mark can easily be
  3359.         | removed by positioning the cursor over it and pressing F5 again).
  3360.         | To get to the other (lower right) corner we can now press Left twice.
  3361.         | Again F5 to mark it. 
  3362.         | Now press F8 (Draw Box). Observe !.
  3363.                                    Observe !
  3364.  
  3365.  
  3366.  
  3367.         | Incidently,  key  F7  does  exactly  the  opposite of F8, i.e you can
  3368.         | undraw (delete) a box with it. 
  3369.  
  3370.  
  3371.           The box  drawing  feature  can  also  be  used  to  draw  vertical or
  3372.           horizontal lines. Just place the two marks in either the same line or
  3373.           the same column. 
  3374.  
  3375.  
  3376.           Apart from double lines as you have already seen, boxes  can be drawn
  3377.           in  all  kind  of  line  styles  which  ca  be seperately defined for
  3378.           horizontal and vertical  lines.  To  do  this,  go  by  the following
  3379.           instructions.
  3380.  
  3381.  
  3382.  
  3383.  
  3384.  
  3385.  
  3386.  
  3387.  
  3388.  
  3389.  
  3390.  
  3391.  
  3392.  
  3393.  
  3394.  
  3395.  
  3396.  
  3397.  
  3398.  
  3399.  
  3400.  
  3401.           Chapter II,  SFD getting started                             page 44
  3402.           Chapter II,  SFD getting started                             page 44
  3403.  
  3404.  
  3405.  
  3406.  
  3407.  
  3408.  
  3409.  
  3410.  
  3411.  
  3412.  
  3413.  
  3414.  
  3415.  
  3416.  
  3417.           OASIS Evaluation Reference Manual
  3418.           OASIS Evaluation Reference Manual
  3419.  
  3420.  
  3421.                                   Selecting Linestyles
  3422.                                   Selecting Linestyles
  3423.  
  3424.  
  3425.           We now want to seperate the different parts of the format. However we
  3426.           would rather like to  use single  lines instead  of double  lines. In
  3427.           order to  achieve this you go to the local menu (F9) again and select
  3428.           the second option (Box  Linestyles) by  highlighting it  and pressing
  3429.         | Return.
  3430.  
  3431.           The  small  triangles  you  see  on the format being presented to you
  3432.           specify the  currently selected  linestyles (Double  lines). Since we
  3433.           want  single  lines  for  horizontal,  highlight the second field and
  3434.         | press Return. The vertical lines we leave as  they are.  Once back on
  3435.         | your worksheet, go to Line 3, first column. Place a Mark.
  3436.         | Go to  the last  position of  the line below 'City'. Mark it as well.
  3437.           (Actually you could also have marked the other  two diagonal corners,
  3438.           i.e.  line  3,  last  column  and  the first column of the line below
  3439.           'City').
  3440.  
  3441.         | Press F8 to draw the box. As you can see, all necessary Junctions are
  3442.           done automatically. 
  3443.           (For your  information: This  applies not  only for 'T', but also for
  3444.           (For your  information: This  applies not  only for 'T', but also for
  3445.           'X' junctions, whenever you use single or double lines).
  3446.           'X' junctions, whenever you use single or double lines).
  3447.  
  3448.  
  3449.           By now, you should be reasonably satisfied with your format (don't be
  3450.           too fancy  after all,  it is  not that terribly sophisticated anyway)
  3451.           and we will proceed to specify its parameters. 
  3452.  
  3453.  
  3454.         | To leave the editor, press Escape.
  3455.  
  3456.           SFD will verify whether you really want to  leave the  editor, select
  3457.           SFD
  3458.           'Yes'.
  3459.  
  3460.  
  3461.           Note:   The program  is now  checking your format. If for some reason
  3462.           Note:
  3463.           you did  not properly  use the  brackets (Field  delimiters) a window
  3464.           will be  displayed informing  you of  the kind  of error you made. In
  3465.         | this case, hit Escape or Return to go back to the editor  and correct
  3466.           your piece  of art  before attempting  to leave it again as described
  3467.           above.
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.           Chapter II,  SFD getting started                             page 45
  3477.           Chapter II,  SFD getting started                             page 45
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.           OASIS Evaluation Reference Manual
  3493.           OASIS Evaluation Reference Manual
  3494.  
  3495.  
  3496.                                   Field specifications
  3497.                                   Field specifications
  3498.  
  3499.  
  3500.           Now you should  see  your  format  (the  field  delimiters  have been
  3501.           removed) and a small menu offering four different choices.
  3502.  
  3503.           We want to specify the fields of your format, so take the first one.
  3504.  
  3505.           The menu  vanishes and  you are back in your address label format. It
  3506.           now behaves like any other format you've seen so far. The first field
  3507.           is highlighted and you can travel around using the familiar keys.
  3508.  
  3509.           Before going  further we  should think a moment about your format and
  3510.           what it should look like.
  3511.  
  3512.           The first three  fields  (Mr,Mrs  and  Miss)  should  be  a  group of
  3513.           options. There  is no  data to be entered into these fields , we just
  3514.           want the user to select one (and only one) of the given options. Such
  3515.         | fields are  called Constants  in SFD. To make the selection exclusive
  3516.                                            SFD
  3517.           (only one may be selected) we must declare  them as  a group.  And we
  3518.           also want the selection to be mandatory.
  3519.  
  3520.  
  3521.           To conclude.
  3522.  
  3523.            1.  We  want  fields  1  to  3  to  be  a  group of selectable items
  3524.                (Constants).
  3525.  
  3526.            2.  We want to declare them as mandatory.
  3527.  
  3528.  
  3529.           Now let's do it.
  3530.            
  3531.           Go to the first field (the 'Mr') and select it by pressing Return.
  3532.  
  3533.           A window will come up giving you several options to  preset the field
  3534.           specifications. At  present, your field is set to the default values,
  3535.           meaning it is assumed to be a variable,  any input  is allowed, there
  3536.           are no checks to be made and some more. 
  3537.  
  3538.           We don't  want to  preset it  to anything  else (all other fields are
  3539.           currently declared in the same way), so we choose 'None'.
  3540.           But we do want to change some of the specification details, so choose
  3541.           'Yes'.
  3542.  
  3543.  
  3544.  
  3545.  
  3546.  
  3547.  
  3548.           Chapter II,  SFD getting started                             page 46
  3549.           Chapter II,  SFD getting started                             page 46
  3550.  
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557.  
  3558.  
  3559.  
  3560.  
  3561.  
  3562.  
  3563.  
  3564.           OASIS Evaluation Reference Manual
  3565.           OASIS Evaluation Reference Manual
  3566.  
  3567.  
  3568.           Now the  Field specification  format comes  up. The 'Type' still says
  3569.         | Variable. We want to change  it  to  Constant.  Since  the  cursor is
  3570.         | already in the 'Type' field just press Return. A small menu will come
  3571.         | up. Choose 'Constant' and press Return again. That's it. 
  3572.           The next two fields show 'Group from 1 to 1'.  Change the  second '1'
  3573.         | to '3' and press Return.
  3574.         | Now you go to 'Mandatory' and hit Return to change it to 'Yes'.
  3575.  
  3576.           Note:   If you  want to know the meaning of the other specifications,
  3577.           Note:
  3578.         | just make use of your mighty F2 Help key. 
  3579.  
  3580.  
  3581.  
  3582.  
  3583.           At  this  point  in  time  we  could  also  specify  the  colors  and
  3584.           attributes, but  for the  time being  we will leave them unaltered at
  3585.           their default values and come back to them later on in this exercise.
  3586.  
  3587.         | You can now press Escape to finish the format.
  3588.  
  3589.           Since we have specified that field 1 is the first of a  group ranging
  3590.           from field 1 to field 3, SFD automatically copies it's specifications
  3591.                                    SFD
  3592.           to  the  remaining  fields  of  the  group.  There  are  however some
  3593.           specifications which  are not  copied: The  'message', the delimiters
  3594.         | and whether the field is Selected or not. 
  3595.           The next three fields (4 to 6) on your address label format are to be
  3596.         | used to  enter data,  in other  words, they are Variables. We want to
  3597.           make input to them mandatory.
  3598.  
  3599.           Call up the field specifications for the first  one (Field  Nr 4, the
  3600.           'Name' field).
  3601.  
  3602.           Go  to  the  'Fill'  field.  Enter a 'dot'. Into the 'Delimiter left'
  3603.           field put a colon. (The colon will be displayed at  the Position were
  3604.           you put your open square bracket when you designed the layout).   Set
  3605.           'Mandatory' to 'Yes'. Now leave the format.
  3606.  
  3607.           The next two fields on your format (street and city)  should look the
  3608.           same  as  the  'name'  field.  Consequently  you can use the 'Preset'
  3609.           function to copy the previous fields specs. As mentioned earlier, the
  3610.           'Delimiters' are not copied, so, if you want to have a colon in front
  3611.           of these fields as well,  you  must  specify  it  (otherwise  you can
  3612.           choose the 'Details No' Option).
  3613.  
  3614.  
  3615.  
  3616.  
  3617.  
  3618.  
  3619.  
  3620.           Chapter II,  SFD getting started                             page 47
  3621.           Chapter II,  SFD getting started                             page 47
  3622.  
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.           OASIS Evaluation Reference Manual
  3637.           OASIS Evaluation Reference Manual
  3638.  
  3639.  
  3640.           There are two fields left on your format, 'Nr of Copies' and 'Msg'. 
  3641.  
  3642.           'Nr of  copies': Here  again you can copy the specs from the previous
  3643.           field. But go into the details as well since we want to  specify some
  3644.           input check parameters.
  3645.           First of all, we only want Integer numbers (there is nothing like 2.4
  3646.           labels). Hence go to the 'Inp.Check' field and press Return. Now make
  3647.           your choice.  We also  want to limit the Number of address labels one
  3648.           can obtain. We will assume a minimum of 1 and a maximum of 25 labels.
  3649.           Enter the appropriate values and finish the format.
  3650.  
  3651.           The  'Msg'  field  we  want  to  use  for error messages (If we don't
  3652.         | specify a field for them  we  would  just  hear  a  Beep  in  case of
  3653.           erroneous data input).
  3654.  
  3655.         | Specify the  type as  Output only  and also set 'Justify' to 'Center'
  3656.           (just to make the messages look nice).
  3657.           Leave the format.
  3658.  
  3659.         | Since we now have specified all fields in your format, press Escape.
  3660.  
  3661.           You are now back in the 'Change Format Specs' menu. 
  3662.  
  3663.  
  3664.  
  3665.  
  3666.  
  3667.  
  3668.  
  3669.  
  3670.  
  3671.  
  3672.  
  3673.  
  3674.  
  3675.  
  3676.  
  3677.  
  3678.  
  3679.  
  3680.  
  3681.  
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.           Chapter II,  SFD getting started                             page 48
  3691.           Chapter II,  SFD getting started                             page 48
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704.  
  3705.  
  3706.           OASIS Evaluation Reference Manual
  3707.           OASIS Evaluation Reference Manual
  3708.  
  3709.  
  3710.                               Format Control Specifications
  3711.                               Format Control Specifications
  3712.  
  3713.            
  3714.           Select 'Format Control Specs'.
  3715.  
  3716.         | Once the format is diplayed you probably best press F2 first and read
  3717.           the infomations to get an idea.
  3718.  
  3719.           Now let's  begin. The first field we want to change is 'Error Message
  3720.           Field'. Enter the number of your 'Msg' field, 8.
  3721.  
  3722.           Actually, we are already finished with our specifications,  but let's
  3723.         | take   the   opportunity   to   talk  about  the  User  Function  Key
  3724.           specifications on the lower half of this format. 
  3725.  
  3726.  
  3727.  
  3728.  
  3729.                             User Function Key Specifications
  3730.                             User Function Key Specifications
  3731.  
  3732.  
  3733.           The purpose of these specifications is to tell  SCL later  on in your
  3734.                                                           SCL
  3735.           program when  to invoke special user written routines like additional
  3736.           checks, prefilling of fields and many other things.  By default, i.e.
  3737.           without the  need to  be specified, facilities are provided by SCL to
  3738.                                                                          SCL
  3739.           optionally invoke user written  routines whenever  a format  field is
  3740.           entered, left or if the format is exited. 
  3741.           In  addition  to  this,  SCL  can be instructed to allow user written
  3742.                                    SCL
  3743.           routines to take over control whenever  certain keys  are pressed. In
  3744.           order to allow this to happen, the appropriate keys must be specified
  3745.         | as User Functions.
  3746.  
  3747.           SFD lets you specify any of the ten  function keys  and, in addition,
  3748.           SFD
  3749.         | up  to  ten  other  keys  to  serve as User Functions. ('Key' in this
  3750.           context can be any valid CNTRL or ALT key combination as well). 
  3751.  
  3752.           In addition to the here mentioned Interrupt specifications  which are
  3753.           valid  throughout  the  whole  format  there is one more which can be
  3754.           specified for each single field. You  may have  seen it  already when
  3755.           you did  the field  specifications. It  is called 'CharCheck' and, if
  3756.           set, can invoke a user written procedure at each single  keystroke if
  3757.           the cursor is in the appropriate field. 
  3758.           As you  probably can  imagine, the  possibilities offered by the User
  3759.           Interrupt System are enormous. Advice and examples on how to use them
  3760.           are provided in A[[endix A.  
  3761.           Further  informations  can  also  be  found  in  the SCL part of this
  3762.                                                                SCL
  3763.           manual.
  3764.  
  3765.  
  3766.  
  3767.           Chapter II,  SFD getting started                             page 49
  3768.           Chapter II,  SFD getting started                             page 49
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774.  
  3775.  
  3776.  
  3777.  
  3778.  
  3779.  
  3780.  
  3781.  
  3782.  
  3783.           OASIS Evaluation Reference Manual
  3784.           OASIS Evaluation Reference Manual
  3785.  
  3786.  
  3787.           We have now completed the format specification (colors and attributes
  3788.         | will be discussed during the format test). Press Escape to go back to
  3789.           the little 'Specifications' Menu and select 'End'. 
  3790.  
  3791.           Your format is now written to  the format  file on  disk and  you are
  3792.           back in the Main Program Menu.
  3793.  
  3794.           If you  look at 'Nr of formats' in the header of the menu, you'll see
  3795.           '1', indicating that you have created your first format.
  3796.  
  3797.           If you want, you can print a hardcopy of it on your printer before we
  3798.           continue to test it and try out the Color/Attribute specifications.
  3799.  
  3800.           By  now  you  should  have  a  better  understanding of some of SFD's
  3801.                                                                           SFD's
  3802.           features and I hope that you have enjoyed our exercise so far.
  3803.  
  3804.  
  3805.  
  3806.  
  3807.           When you are ready to continue, we will take a  look at  SFD's Format
  3808.                                                                    SFD
  3809.           Test feature.
  3810.  
  3811.  
  3812.  
  3813.  
  3814.  
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.  
  3837.  
  3838.  
  3839.           Chapter II,  SFD getting started                             page 50
  3840.           Chapter II,  SFD getting started                             page 50
  3841.  
  3842.  
  3843.  
  3844.  
  3845.  
  3846.  
  3847.  
  3848.  
  3849.  
  3850.  
  3851.  
  3852.  
  3853.  
  3854.  
  3855.           OASIS Evaluation Reference Manual
  3856.           OASIS Evaluation Reference Manual
  3857.  
  3858.  
  3859.                                     Testing a Format
  3860.                                     Testing a Format
  3861.                                     ________________
  3862.  
  3863.  
  3864.         | Select Design  Test/Modify on  the main menu. When asked for the name
  3865.           of the format you want to test, enter 'Myformat' or whatever name you
  3866.           called it.  If you  entered the wrong name, you will be notified by a
  3867.         | Beep.
  3868.           In this case, either correct  it  or,  if  you  don't  know  the name
  3869.         | anymore, press  F10 to  get back to the main menu and use the Display
  3870.         | Formats option to find out the right one.
  3871.           Anyway, as soon as you have  entered the  name of  your format, press
  3872.         | Return and it will be displayed.
  3873.           It now  behaves exactly  according to  your specifications. All input
  3874.           checks are being performed and if you enter something wrong or forget
  3875.           to enter  mandatory data you will be notified. Take yourself a couple
  3876.           of minutes to try  out all  kind of  things like  leave off mandatory
  3877.           data, try to enter invalid data etc and watch the results.
  3878.  
  3879.           Note:   Handling of  a format under 'Test' is a lot slower than later
  3880.           Note:
  3881.           on in the program. This limitation  is imposed  by the  fact that all
  3882.           messages must  be read from a disk file as opposed to later on in the
  3883.           program where they are stored in memory.
  3884.  
  3885.           Now let us modify the way it looks.
  3886.  
  3887.         | To do this, you have to select the  local menu  (you know  how, don't
  3888.           you ?).
  3889.  
  3890.  
  3891.           This menu offers the following choices: 
  3892.  
  3893.           Change field specs/Active field
  3894.           Change field specs/Active field
  3895.           Allows you  to change  the specifications  of the  field in which you
  3896.           currently are.
  3897.  
  3898.           Change field specs/Other field
  3899.           Change field specs/Other field
  3900.           This option enables you to change any other field on  your format. It
  3901.           is particularly useful to change fields you can't get at (Output only
  3902.           fields).
  3903.  
  3904.           Global Colors/Attributes
  3905.           Global Colors/Attributes
  3906.           This option allows you to change the colors/attributes  of all fields
  3907.           of a kind (all variables, all constants or all output only fields) on
  3908.           your format.
  3909.  
  3910.           Format/Control Specs
  3911.           Format/Control Specs
  3912.           The same as you have seen already during layout design.
  3913.  
  3914.  
  3915.  
  3916.           Chapter II,  SFD getting started                             page 51
  3917.           Chapter II,  SFD getting started                             page 51
  3918.  
  3919.  
  3920.  
  3921.  
  3922.  
  3923.  
  3924.  
  3925.  
  3926.  
  3927.  
  3928.  
  3929.  
  3930.  
  3931.  
  3932.           OASIS Evaluation Reference Manual
  3933.           OASIS Evaluation Reference Manual
  3934.  
  3935.  
  3936.                                     Colors/Attributes
  3937.                                     Colors/Attributes
  3938.                                     _________________
  3939.  
  3940.            
  3941.  
  3942.           You now select 'Global Colors/Attributes'.
  3943.  
  3944.  
  3945.           When asked for a field type, select 'Constant'.  This means  that you
  3946.           want to  change the  appearance of  all Constants  in your format. In
  3947.           your case these are the first three fields.
  3948.  
  3949.           Before starting to do any modification,  it is  important to describe
  3950.         | the meaning of Normal, Active and Selected fields.
  3951.  
  3952.         | What determines if a field is displayed in Normal or Active status is
  3953.           related to your position to this field, in  other words,  whether you
  3954.           are 'in it' or not; i.e. it becomes active if you go there.
  3955.         | Selected  is  mainly  utilized  for Constants (nevertheless it can be
  3956.           useful  with  other  fieldtypes  as  well  for  certain  effects, see
  3957.         | Appendix  A  under  'Advanced  Programming  Technics'). Selected is a
  3958.           boolean status proprietary to a field.  In  the  case  of  a Constant
  3959.           field it can be toggled by pressing Return while being in the field.
  3960.           To  express   the  above   states,  field  attributes,  seperate  for
  3961.           monochrome and color screens, can be choose as required. 
  3962.  
  3963.  
  3964.            
  3965.           Field Attributes
  3966.           Field Attributes
  3967.            
  3968.           On monochrome displays, some of the field attributes like 'underline'
  3969.         | and 'Inverted'  are exclusive.  Since Selected can come together with
  3970.         | both Normal  and Active  field status,  it is  your responsibility to
  3971.           make  sure  that  the  attributes  don't  exclude  each  other. As an
  3972.         | example, if you would specify 'Selected' as being inverted and Active
  3973.           as being  underlined the appearance of the appropriate field wouldn't
  3974.           change whether  you were  in the  field or  not, it  would just being
  3975.           inverted in  both cases.  This could  be very  irritatating since you
  3976.           might not be able to recognize what field you were in. 
  3977.           In the case of 'Color' attributes the same is true for example if you
  3978.         | choose an 'intensified' color for selected and the 'Intens' attribute
  3979.         | for Active.
  3980.  
  3981.           If you have a monochrome adapter,  you can't  see the  results of any
  3982.           changes made  to the 'Color' attributes and vice versa. Nevertheless,
  3983.           you should at least read the appropriate chapters. Then try  out some
  3984.           combinations  of  attributes  matching  the  display  adapter you are
  3985.           using. 
  3986.  
  3987.  
  3988.  
  3989.           Chapter II,  SFD getting started                             page 52
  3990.           Chapter II,  SFD getting started                             page 52
  3991.  
  3992.  
  3993.  
  3994.  
  3995.  
  3996.  
  3997.  
  3998.  
  3999.  
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.           OASIS Evaluation Reference Manual
  4006.           OASIS Evaluation Reference Manual
  4007.  
  4008.  
  4009.           Color Screen Attributes
  4010.           Color Screen Attributes
  4011.  
  4012.         | The Normal and Selected Choices are  pretty straightforward.  You can
  4013.           select  any  one  out  of  16  foreground colors and any one out of 8
  4014.           background colors for each one of the two.
  4015.           Keep in mind, that if you  use 'intensive'  forground colors  you may
  4016.         | get in conflict with the 'Intens' attribute for Active.
  4017.  
  4018.         | The choices you have for Active are:
  4019.  
  4020.  
  4021.           Invert :  The foreground  color becomes the background color and vice
  4022.                     versa.  Intensified  background  colors  are  not possible.
  4023.                     Therefore the  non intensified  equivalent is being used if
  4024.                     necessary.
  4025.  
  4026.           Blink  :  Self explanatory. The blink frequency can  be adjusted. See
  4027.                     under 'System Defaults'.
  4028.  
  4029.           Intens :  The foreground color is displayed intensified.
  4030.  
  4031.  
  4032.  
  4033.           Multiple choices of the above attributes are possible. 
  4034.           Multiple choices of the above attributes are possible.
  4035.  
  4036.  
  4037.  
  4038.         | Now let us specify a 'new look' for the Constants in our format.
  4039.  
  4040.  
  4041.           The foreground and background colors you see are modified as follows:
  4042.  
  4043.           Select the appropriate field.
  4044.           Choose your favourite from  the  selection  you  are  presented with.
  4045.           Simple, isn't it? 
  4046.  
  4047.         | The Active attributes can be set or reset by pressing the Return key.
  4048.  
  4049.           Once you  have made  your selection,  go back  to your format. If you
  4050.           have a Color Monitor you  will  instantly  see  the  results  of your
  4051.           modifications.
  4052.  
  4053.  
  4054.  
  4055.  
  4056.  
  4057.  
  4058.  
  4059.  
  4060.  
  4061.           Chapter II,  SFD getting started                             page 53
  4062.           Chapter II,  SFD getting started                             page 53
  4063.  
  4064.  
  4065.  
  4066.  
  4067.  
  4068.  
  4069.  
  4070.  
  4071.  
  4072.  
  4073.  
  4074.  
  4075.  
  4076.  
  4077.           OASIS Evaluation Reference Manual
  4078.           OASIS Evaluation Reference Manual
  4079.  
  4080.  
  4081.           Monochrome Attributes
  4082.           Monochrome Attributes
  4083.  
  4084.  
  4085.           Norm      :    'White' text on black where 'White' means the color of
  4086.                          the screen you are using (usually green or amber).
  4087.  
  4088.           Intens    :    Same as 'Norm' but  brighter  Text.  Obviously, 'Norm'
  4089.                          and 'Intens' exclude each other.
  4090.                          If 'Intens'  is used  together with 'Invert' text just
  4091.                          appears to be 'thinner'.
  4092.  
  4093.           Invert    :    Black text on 'White' background.
  4094.  
  4095.           Underline :    Field   will    be    underlined.    'Underline'   and
  4096.                          'Invert'exclude  each  other.  In  this case, 'Invert'
  4097.                          takes precedence. 
  4098.  
  4099.           Marked    :    Directly  before  and  after  the  field   a  triangle
  4100.                          pointing  towards  the  field  will  be  displayed. If
  4101.         |                'Marked' is used as an Active  attribute the triangles
  4102.         |                will blink, if it is used as a Selected attribute they
  4103.                          are static. 
  4104.  
  4105.           Blink     :    The field content will blink. The  blink frequency can
  4106.                          be adjusted. See under 'System Defaults' for details.
  4107.  
  4108.  
  4109.           Multiple choices of above attributes are possible with the exceptions
  4110.           Multiple choices of above attributes are possible with the exceptions
  4111.           mentioned.
  4112.           mentioned.
  4113.  
  4114.           To set/reset monochrome attributes  just  travel  to  the appropriate
  4115.         | fields and press Return.
  4116.  
  4117.           Now make  your choices. Once you have finished go back to your format
  4118.           you will instantly see the Results of your modifications (at least if
  4119.           you are working on a monochrome monitor).
  4120.  
  4121.           To get  some exercise,  feel free  to venture  using other options as
  4122.           well. Maybe you even want to  change some  other specifications. Just
  4123.           do it and watch the results.
  4124.  
  4125.           Once you  are done  with the  exercises two  ways are offered to exit
  4126.           your format.
  4127.  
  4128.                1. 
  4129.         |           Fill it out completely and press Return
  4130.                     or
  4131.                2.   Hit the ABORT key.
  4132.  
  4133.  
  4134.  
  4135.           Chapter II,  SFD getting started                             page 54
  4136.           Chapter II,  SFD getting started                             page 54
  4137.  
  4138.  
  4139.  
  4140.  
  4141.  
  4142.  
  4143.  
  4144.  
  4145.  
  4146.  
  4147.  
  4148.  
  4149.  
  4150.  
  4151.           OASIS Evaluation Reference Manual
  4152.           OASIS Evaluation Reference Manual
  4153.  
  4154.  
  4155.                                        Conclusion
  4156.                                        Conclusion
  4157.                                        __________
  4158.  
  4159.  
  4160.           The purpose of this exercise was to give you a brief overview  on the
  4161.           Screen  Format  Designer.  Only  a  small  part  of  the features was
  4162.           Screen  Format  Designer
  4163.           touched, but you should  now have  enough knowledge  to continue your
  4164.           exploration  on  your  own,  using  the descriptions later on in this
  4165.           manual.
  4166.  
  4167.  
  4168.           If you should have encountered any  difficulties during  our exercise
  4169.           or did  not get along with the instructions given, I encourage you to
  4170.           just try it again and I am sure you will succeed this time.
  4171.  
  4172.  
  4173.           Anyway, as long as you are  not completely  familiar with  the system
  4174.         | you are urged to make frequent use of the Help feature.
  4175.  
  4176.  
  4177.  
  4178.  
  4179.                        
  4180.           Note:   If for  some reason you accidentally 'scrambled' your address
  4181.           Note:
  4182.           label format during our exercise, don't worry you will find one among
  4183.           the sample  programs which  came on  your distribution  disk. Some of
  4184.           them, (including the address label format) will be  used later  on to
  4185.           give  you  an  idea  about  SCL  and  others will be discussed in the
  4186.                                       SCL
  4187.           Appendix  A  of  this  manual  to   demonstrate  some   advanced  SCL
  4188.           programming technics.
  4189.  
  4190.  
  4191.  
  4192.  
  4193.  
  4194.  
  4195.  
  4196.  
  4197.  
  4198.  
  4199.  
  4200.  
  4201.  
  4202.  
  4203.  
  4204.  
  4205.  
  4206.  
  4207.  
  4208.  
  4209.  
  4210.  
  4211.           Chapter II,  SFD getting started                             page 55
  4212.           Chapter II,  SFD getting started                             page 55
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.           OASIS Evaluation Reference Manual
  4228.           OASIS Evaluation Reference Manual
  4229.  
  4230.  
  4231.  
  4232.  
  4233.  
  4234.  
  4235.  
  4236.  
  4237.  
  4238.  
  4239.  
  4240.  
  4241.  
  4242.  
  4243.  
  4244.  
  4245.  
  4246.  
  4247.  
  4248.  
  4249.                                The Screen Format Designer
  4250.                                The Screen Format Designer
  4251.                        
  4252.  
  4253.                        
  4254.                        
  4255.  
  4256.                                         ( S F D )
  4257.                                         ( S F D )
  4258.                        
  4259.  
  4260.                        
  4261.                        
  4262.  
  4263.                        
  4264.                        
  4265.  
  4266.                        
  4267.                        
  4268.  
  4269.                                  Functional Description
  4270.                                  Functional Description
  4271.                        
  4272.  
  4273.  
  4274.  
  4275.  
  4276.  
  4277.  
  4278.  
  4279.  
  4280.  
  4281.  
  4282.  
  4283.  
  4284.  
  4285.  
  4286.  
  4287.  
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  
  4295.  
  4296.  
  4297.  
  4298.  
  4299.  
  4300.  
  4301.  
  4302.  
  4303.  
  4304.  
  4305.  
  4306.  
  4307.  
  4308.  
  4309.  
  4310.  
  4311.  
  4312.           OASIS Evaluation Reference Manual
  4313.           OASIS Evaluation Reference Manual
  4314.  
  4315.  
  4316.                           Functional Description - Introduction
  4317.                           Functional Description - Introduction
  4318.  
  4319.  
  4320.         | This chapter  of the  manual provides a functional description of The
  4321.                                                                             The
  4322.         | Screen Format Designer Program.
  4323.           Screen Format Designer
  4324.  
  4325.           The first chapter describes the basic program layout.
  4326.  
  4327.           It includes an overview on all files being used or created by  SFD as
  4328.                                                                          SFD
  4329.           well as  the keyboard  functions and a description of the Online Help
  4330.           System.
  4331.  
  4332.           The  next chapter covers the main menu  and all  functions accessible
  4333.           from it.
  4334.  
  4335.           The  third  chapter  then  talks  about Format Design and all related
  4336.           functions. 
  4337.  
  4338.  
  4339.  
  4340.  
  4341.  
  4342.  
  4343.  
  4344.  
  4345.  
  4346.  
  4347.  
  4348.  
  4349.  
  4350.  
  4351.  
  4352.  
  4353.  
  4354.  
  4355.  
  4356.  
  4357.  
  4358.  
  4359.  
  4360.  
  4361.  
  4362.  
  4363.  
  4364.  
  4365.  
  4366.  
  4367.  
  4368.  
  4369.  
  4370.           Chapter II,  SFD functional description                      page 57
  4371.           Chapter II,  SFD functional description                      page 57
  4372.  
  4373.  
  4374.  
  4375.  
  4376.  
  4377.  
  4378.  
  4379.  
  4380.  
  4381.  
  4382.  
  4383.  
  4384.  
  4385.  
  4386.           OASIS Evaluation Reference Manual
  4387.           OASIS Evaluation Reference Manual
  4388.  
  4389.  
  4390.                                 SFD Basic Program Layout
  4391.                                 SFD Basic Program Layout
  4392.                        
  4393.  
  4394.                        
  4395.  
  4396.                        
  4397.           SFD has been designed around a Main Menu which automatically comes up
  4398.           SFD
  4399.           as soon as the program has been started.
  4400.           All  basic  functions  are  shown  and accessible from here. They are
  4401.           logically  grouped  in  seven  lines.  Within  each  group  the  most
  4402.           important item is listed first.
  4403.         | The Up and Down keys can be used to jump between the groups and items
  4404.         | in a group are selected with the Right and Left keys.
  4405.  
  4406.           There are two functions on the main menu which are  considerably more
  4407.           complex  than  all  others  Format  layout  design and Test. They are
  4408.           virtually subsystems on their own.
  4409.  
  4410.         | Format layout design for example  leads  through  a  whole  series of
  4411.           screens and functions.
  4412.           It  first  starts  with  the  actual layout editor. Within the layout
  4413.           editor,  many  keys  have  a  different  meaning  compared  to normal
  4414.           operation and  there are  also a  lot of  special functions available
  4415.           including it's own little menu offering additional features. Once the
  4416.         | Layout  editor  is  left,  the  Format  Specification Mode is entered
  4417.           presenting  another  local  menu  with  all  selections  necessary to
  4418.           specify a format and it's fields.
  4419.         | Leaving the  Format Specification Mode then finally leads back to the
  4420.         | Main Menu.
  4421.  
  4422.         | The Format Test function is not  that complex  but it  also allows to
  4423.         | enter the  Format Specification  Mode, in this case via another local
  4424.           menu.
  4425.           This allows a very  interactive method  of testing  a new  format. If
  4426.           initial  requirements  are  not  met  or require to be redefined, the
  4427.           appropriate changes can be  performed  and  verified  instantly  in a
  4428.           simple iteration. 
  4429.  
  4430.  
  4431.  
  4432.  
  4433.  
  4434.  
  4435.  
  4436.  
  4437.  
  4438.  
  4439.  
  4440.  
  4441.  
  4442.  
  4443.  
  4444.  
  4445.           Chapter II,  SFD functional description                      page 58
  4446.           Chapter II,  SFD functional description                      page 58
  4447.  
  4448.  
  4449.  
  4450.  
  4451.  
  4452.  
  4453.  
  4454.  
  4455.  
  4456.  
  4457.  
  4458.  
  4459.  
  4460.  
  4461.           OASIS Evaluation Reference Manual
  4462.           OASIS Evaluation Reference Manual
  4463.  
  4464.  
  4465.                                    Files used by SFD 
  4466.                                    Files used by SFD
  4467.  
  4468.  
  4469.           In order  to run,  SFD requires  the following files to be present in
  4470.                              SFD
  4471.           the same subdirectory as SFD.EXE itself:
  4472.  
  4473.  
  4474.  
  4475.           SFD.FOR: 
  4476.           SFD.FOR:
  4477.  
  4478.           SFD's own format file, containing nearly sixty formats.  This file is
  4479.           SFD's
  4480.           not exactly compatible with the '<Name>.SCS' files being generated by
  4481.           SFD and no attempt should be made to modify this file using SFD. This
  4482.           SFD                                                         SFD
  4483.           could lead to unpredictable results. 
  4484.  
  4485.  
  4486.  
  4487.           SFD.FIN:
  4488.           SFD.FIN:
  4489.  
  4490.           Sorted Index file for SFD.FOR. This file is similar to the <Name>.SCS
  4491.           files being generated by SFD and contains informations  to access the
  4492.                                    SFD
  4493.           formats in SFD.FOR.
  4494.  
  4495.  
  4496.  
  4497.           SFD.MSG:
  4498.           SFD.MSG:
  4499.  
  4500.         | Contains  all  field  messages  proprietary  to  SFD. It has the same
  4501.                                                            SFD
  4502.           format as the <Name>.MSG files created by SFD.
  4503.                                                     SFD
  4504.  
  4505.  
  4506.  
  4507.           SFD.ERR:
  4508.           SFD.ERR:
  4509.  
  4510.         | A  Text  file  containing  all  necessary  system  messages,  i.e all
  4511.           messages  required  by  SCL  (as  contained  in  "SCL.ERR")  as  well
  4512.                                   SCL
  4513.           additional ones having been especially defined for SFD.
  4514.                                                              SFD
  4515.  
  4516.  
  4517.  
  4518.           SFD.DEF:
  4519.           SFD.DEF:
  4520.  
  4521.         | This file is automatically created if any of the SFD Defaults (Design
  4522.           or System  Defaults) are changed and saved. If it is not present, SFD
  4523.                                                                             SFD
  4524.           will use its own built in defaults. If for any  reason it  is desired
  4525.           to go back to default parameters, just remove this file.
  4526.  
  4527.  
  4528.  
  4529.  
  4530.           Chapter II,  SFD functional description                      page 59
  4531.           Chapter II,  SFD functional description                      page 59
  4532.  
  4533.  
  4534.  
  4535.  
  4536.  
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.           OASIS Evaluation Reference Manual
  4547.           OASIS Evaluation Reference Manual
  4548.  
  4549.  
  4550.                                  Files generated by SFD
  4551.                                  Files generated by SFD
  4552.  
  4553.  
  4554.           Whenever a new work file is opened with SFD, the following files will
  4555.                                                   SFD
  4556.           be created: 
  4557.  
  4558.  
  4559.           <workfile>.SCS:
  4560.           <workfile>.SCS:
  4561.           Format file. This  file  will  contain  all  formats  including their
  4562.           specifications with every format occupying about 4.5 KB.
  4563.           The  Layout  of  this  file  is  described  in  file  SCL.DOC as type
  4564.           'Screen'. 
  4565.           For a discussion of it's  content  refer  to  "Format Specifications"
  4566.           later in this manual. 
  4567.  
  4568.  
  4569.           <workfile>.SCI:
  4570.           <workfile>.SCI:
  4571.           Index (Key) file for <workfile>.SCS.
  4572.           This file  contains indexing  information to  the format file such as
  4573.           all the format names and  the  relative  positions  of  these formats
  4574.           within <workfile>.SCS. 
  4575.           In  addition,  it  also  contains  informations  whether  a format is
  4576.           deleted. The layout of  this  file  can  be  found  in  SCL.DOC under
  4577.           'Sckeyrec'.
  4578.           It has  to be sorted in order to access formats in a user program via
  4579.           SCL. 
  4580.         | This is automatically done whenever you  Exit the  SFD program. Since
  4581.                                                              SFD
  4582.           the  keyfile  is  very  small,  sorting  it  usually takes only a few
  4583.           seconds.
  4584.  
  4585.  
  4586.           <workfile>.MSG:
  4587.           <workfile>.MSG:
  4588.         | Contains all explanatory messages specified for fields on  any of the
  4589.           formats  in  <workfile>.SCS.  The  format  file  itself only stores a
  4590.           pointer to these messages. 
  4591.           The  file  consists  of  records  with  a  length  of  71  bytes each
  4592.           (described in SCL.DOC as 'Msgrec'). 
  4593.           This leads  to a  maximum message  length of 70 bytes since the first
  4594.           byte of each record is used to store the length of the message.
  4595.  
  4596.  
  4597.           Note:  All of the above mentioned files are required by SCL to handle
  4598.           Note:                                                   SCL
  4599.           the formats  in your  <workfile>. Details on how they are used can be
  4600.           found later in this manual under "The Screen Control Language".
  4601.  
  4602.  
  4603.  
  4604.  
  4605.  
  4606.  
  4607.           Chapter II,  SFD functional description                      page 60
  4608.           Chapter II,  SFD functional description                      page 60
  4609.  
  4610.  
  4611.  
  4612.  
  4613.  
  4614.  
  4615.  
  4616.  
  4617.  
  4618.  
  4619.  
  4620.  
  4621.  
  4622.  
  4623.           OASIS Evaluation Reference Manual
  4624.           OASIS Evaluation Reference Manual
  4625.  
  4626.  
  4627.                                 Basic Keyboard Functions
  4628.                                 Basic Keyboard Functions
  4629.  
  4630.  
  4631.           The following keyboard functions apply for all formats in SFD. In the
  4632.                                                                     SFD
  4633.           layout  editor  some  keys  have different functions. For details see
  4634.           under "The Layout Editor".
  4635.  
  4636.  
  4637.         |      Right     : 1.  In Travel Mode : Next Field. 
  4638.                Right
  4639.                
  4640.         |                  2.  In Entry Mode : Next Character.
  4641.         |      Left      : 1.  In Travel Mode : Previous Field. 
  4642.                Left
  4643.                     
  4644.         |                  2.  In Entry Mode : Previous Character.
  4645.  
  4646.                Down      : First field on next line.
  4647.                Down
  4648.                Up        : Last field on previous line.
  4649.                Up
  4650.                Home      : First field in line.
  4651.                Home
  4652.                End       : Last field in line.
  4653.                End
  4654.  
  4655.                PgDn      : Last field on format.
  4656.                PgDn
  4657.                PgUp      : First field on format.
  4658.                PgUp
  4659.                Tab       : Next field.
  4660.                Tab
  4661.                ShiftTab  : Previous field.
  4662.                ShiftTab
  4663.  
  4664.                Backspace : Delete character left of cursor.
  4665.                Backspace
  4666.                Insert    : Insert a space at the cursor position.
  4667.                Insert
  4668.                Delete    : Delete character under cursor.
  4669.                Delete
  4670.  
  4671.                Return    : 1.  Entry mode.
  4672.                Return
  4673.                            2.  Finish field and advance to next field (if      
  4674.                                already in the last field, finish the format).
  4675.         |                  3.  Toggle Selected Status of a Constant.
  4676.  
  4677.                Escape    : Finish Format.
  4678.                Escape
  4679.  
  4680.                F1        : Format related Help information.
  4681.                F1
  4682.                F2        : Field related Help information.
  4683.                F2
  4684.                F3        : UNDO. Restores field to previous content.
  4685.                F3
  4686.                F10       : Abort current activity (not valid with everyformat).
  4687.                F10
  4688.  
  4689.  
  4690.  
  4691.           Note:  A detailed explanation  of  all  key  functions  can  be found
  4692.           Note:
  4693.           earlier in this manual under "Getting started".
  4694.           Keys only  being valid  in certain  contexts are mentioned where they
  4695.           apply.
  4696.  
  4697.  
  4698.  
  4699.  
  4700.  
  4701.           Chapter II,  SFD functional description                      page 61
  4702.           Chapter II,  SFD functional description                      page 61
  4703.  
  4704.  
  4705.  
  4706.  
  4707.  
  4708.  
  4709.  
  4710.  
  4711.  
  4712.  
  4713.  
  4714.  
  4715.  
  4716.  
  4717.           OASIS Evaluation Reference Manual
  4718.           OASIS Evaluation Reference Manual
  4719.  
  4720.  
  4721.  
  4722.                                   Online Help Facility
  4723.                                   Online Help Facility
  4724.  
  4725.  
  4726.           SFD provides an extensive Online Help Facility in  up to  four levels
  4727.           SFD
  4728.           as follows:
  4729.  
  4730.  
  4731.           Explanatory field input informations:
  4732.           Explanatory field input informations:
  4733.           This feature  is only available with some formats, one being the main
  4734.           menu. SFD  automatically  displays  some  informations  regarding the
  4735.                 SFD
  4736.           currently active  field (in  the case of the main menu, on the bottom
  4737.           line).
  4738.  
  4739.  
  4740.           AutoHelp:
  4741.           AutoHelp:
  4742.         | Optional feature,  selectable via  System Defaults  which causes some
  4743.           basic  Help  information  to  be  displayed  if a specified number of
  4744.           consecutive input errors have been made.
  4745.  
  4746.  
  4747.           Format Help:
  4748.           Format Help:
  4749.           Context  sensitive  Help  relative  to  the  current  format.  Can be
  4750.         | accessed anytime by pressing F1.
  4751.  
  4752.  
  4753.           Field Help:
  4754.           Field Help:
  4755.           Context sensitive  Help informations relative to the currently active
  4756.         | field. This  feature can  be accessed  anytime by  pressing F2. Field
  4757.           Help may not be available in all cases.
  4758.  
  4759.  
  4760.  
  4761.  
  4762.  
  4763.  
  4764.  
  4765.  
  4766.  
  4767.  
  4768.  
  4769.  
  4770.  
  4771.  
  4772.  
  4773.  
  4774.  
  4775.  
  4776.  
  4777.  
  4778.           Chapter II,  SFD functional description                      page 62
  4779.           Chapter II,  SFD functional description                      page 62
  4780.  
  4781.  
  4782.  
  4783.  
  4784.  
  4785.  
  4786.  
  4787.  
  4788.  
  4789.  
  4790.  
  4791.  
  4792.  
  4793.  
  4794.           OASIS Evaluation Reference Manual
  4795.           OASIS Evaluation Reference Manual
  4796.  
  4797.  
  4798.                                   Input Error Handling
  4799.                                   Input Error Handling
  4800.  
  4801.           If an  Input error  is detected, the system reacts with a 'Beep' and,
  4802.           depending on the format, an error  message may  be displayed.  If the
  4803.         | Autohelp  feature  is  enabled  and a specified number of consecutive
  4804.           errors has occurred, a format containing some basic help informations
  4805.           is displayed in addition.
  4806.  
  4807.           There are  basically three different types of errors which can occur:
  4808.               
  4809.  
  4810.                1.   An invalid key has been pressed. 
  4811.                2.   Wrong data has been entered into a field.
  4812.                3.   A field where data entry is  mandatory has  not been filled
  4813.                     in.
  4814.  
  4815.  
  4816.           They are described in the following.
  4817.  
  4818.           Invalid Key
  4819.           Invalid Key
  4820.  
  4821.           Whenever a  key is  pressed it  is checked  for validity in the given
  4822.           context. 
  4823.  
  4824.           Some examples:
  4825.  
  4826.         | * Entering a displayable character while being in a Constant
  4827.         |   field.
  4828.           * Pressing an 'Alpha' key where numeric data is anticipated.
  4829.           * Entering a decimal point if an integer number is required.
  4830.           * Pressing a function key not valid on this format.
  4831.  
  4832.  
  4833.           Wrong data
  4834.           Wrong data
  4835.  
  4836.           Whenever an attempt is made to  leave a  field (i.e  pressing RETURN,
  4837.           TAB or a similar key) the data having been entered into it is checked
  4838.           for validity. Should it be found to be invalid, the user is forced to
  4839.           correct it before he is allowed to leave the field. 
  4840.  
  4841.  
  4842.           Missing mandatory data
  4843.           Missing mandatory data
  4844.  
  4845.           Any attempt to leave a format missing mandatory data will be refused.
  4846.           The cursor  will automatically  be placed  into the first field where
  4847.           data was found to be missing. 
  4848.  
  4849.  
  4850.  
  4851.  
  4852.           Chapter II,  SFD functional description                      page 63
  4853.           Chapter II,  SFD functional description                      page 63
  4854.  
  4855.  
  4856.  
  4857.  
  4858.  
  4859.  
  4860.  
  4861.  
  4862.  
  4863.  
  4864.  
  4865.  
  4866.  
  4867.  
  4868.           OASIS Evaluation Reference Manual
  4869.           OASIS Evaluation Reference Manual
  4870.  
  4871.  
  4872.                                       The Main Menu
  4873.                                       The Main Menu
  4874.  
  4875.  
  4876.           The main menu is subdivided into  an header,  the main  body finally,
  4877.           below it, the message line.
  4878.  
  4879.  
  4880.  
  4881.           The Menu Header
  4882.           The Menu Header
  4883.  
  4884.           In  it's  upper  part  the  program  name,  the  release number and a
  4885.           copyright note are displayed.
  4886.  
  4887.           Below this, there are three lines of information:
  4888.  
  4889.  
  4890.                        
  4891.           Act DIR 
  4892.           Act DIR
  4893.           Displays the currently active disk and subdirectory.
  4894.  
  4895.  
  4896.                        
  4897.           Workfile
  4898.           Workfile
  4899.           Displays  name  and  path  of  the  currently  loaded    workfile (or
  4900.           '<none>').
  4901.  
  4902.  
  4903.                        
  4904.           Formats
  4905.           Formats
  4906.           The number of valid formats in the current workfile.
  4907.  
  4908.  
  4909.  
  4910.  
  4911.           The Main body
  4912.           The Main body
  4913.  
  4914.           It shows  seven groups (lines) of items. On the lefthand side of each
  4915.           line the name of a group of functions is mentioned and the entries to
  4916.           the  right  of  it  represent  the  functions  available  within  the
  4917.           appropriate group.
  4918.           All functions are described in the  following paragraphs  under their
  4919.           group description in the order they appear on the menu. 
  4920.  
  4921.  
  4922.  
  4923.  
  4924.           The Message Line
  4925.           The Message Line
  4926.  
  4927.           A short explanation of the currently highlighted function. 
  4928.  
  4929.  
  4930.  
  4931.  
  4932.           Chapter II,  SFD functional description                      page 64
  4933.           Chapter II,  SFD functional description                      page 64
  4934.  
  4935.  
  4936.  
  4937.  
  4938.  
  4939.  
  4940.  
  4941.  
  4942.  
  4943.  
  4944.  
  4945.  
  4946.  
  4947.  
  4948.           OASIS Evaluation Reference Manual
  4949.           OASIS Evaluation Reference Manual
  4950.  
  4951.  
  4952.                                          DESIGN
  4953.                                          DESIGN
  4954.  
  4955.  
  4956.           This  Group  provides  all  functions  necessary  to  design a format
  4957.           layout, specify it's parameters  and finally  to test  it. Since this
  4958.           group is  amongst the most comprehensive parts of SFD  it's functions
  4959.                                                             SFD
  4960.           are covered under an own header  ("Format Design")  later on  in this
  4961.           manual.
  4962.  
  4963.  
  4964.  
  4965.  
  4966.  
  4967.  
  4968.  
  4969.  
  4970.  
  4971.  
  4972.  
  4973.  
  4974.  
  4975.  
  4976.  
  4977.  
  4978.  
  4979.  
  4980.  
  4981.  
  4982.  
  4983.  
  4984.  
  4985.  
  4986.  
  4987.  
  4988.  
  4989.  
  4990.  
  4991.  
  4992.  
  4993.  
  4994.  
  4995.  
  4996.  
  4997.  
  4998.  
  4999.  
  5000.  
  5001.  
  5002.  
  5003.  
  5004.           Chapter II,  SFD functional description                      page 65
  5005.           Chapter II,  SFD functional description                      page 65
  5006.  
  5007.  
  5008.  
  5009.  
  5010.  
  5011.  
  5012.  
  5013.  
  5014.  
  5015.  
  5016.  
  5017.  
  5018.  
  5019.  
  5020.           OASIS Evaluation Reference Manual
  5021.           OASIS Evaluation Reference Manual
  5022.  
  5023.                                           FILE
  5024.                                           FILE
  5025.                        
  5026.  
  5027.           There are three functions belonging to this group.
  5028.  
  5029.           Load File:
  5030.           Load File:
  5031.           Load File  can not  only be selected via the main menu, it also comes
  5032.           up automatically   whenever  no  workfile  is  loaded  and  any other
  5033.           function requiring  a workfile  has been  selected. Allows  to load a
  5034.         | formatfile as the active workfile and can also be used  to change the
  5035.           active workfile. 
  5036.           If  this  Function  is  selected  SFD  will  ask  for the name of the
  5037.                                             SFD
  5038.         | workfile to be loaded which will then be  searched for  in the Active
  5039.         | Directory.
  5040.         | Since a format file is always assumed to have an extension of .SCS it
  5041.           is not required to specify  it  and  any  extension  entered  will be
  5042.           ignored by SFD. 
  5043.                      SFD
  5044.         | If the  format file  specified exists  in the  active directory it is
  5045.           then loaded.
  5046.           Otherwise SFD displays a message prompting whether a  new file should
  5047.                     SFD
  5048.           be created or not. 
  5049.           Note  that   if  another   format  file   was  loaded  before  it  is
  5050.           automatically saved to disk.
  5051.  
  5052.           In  case  the  specified  format  file  (<workfile>.SCS)  was  found,
  5053.           exceptions loading it are handled as follows:
  5054.  
  5055.           If no Indexfile (<workfile>.SCI) exists it will be created.
  5056.  
  5057.           If no  message file  (<workfile>.MSG) is found, SFD offers the option
  5058.                                                           SFD
  5059.           to create a new (empty) one.
  5060.           Please note that in  this case  all field  messages which  might have
  5061.           been specified  for any  formats in  the <workfile>  will be lost and
  5062.           have to be reentered.
  5063.  
  5064.  
  5065.                        
  5066.           CHDir:
  5067.           CHDir
  5068.           This option provides essentially the same services as  the equivalent
  5069.           DOS command. 
  5070.         | With  CHDir   you  can  change  the  currently  active  drive  and/or
  5071.           subdirectory. 
  5072.           A file to be loaded or to be copied from will always be assumed to be
  5073.         | in the Active Directory.
  5074.  
  5075.                        
  5076.           Note:   The active  directory and  even the current disk drive can be
  5077.           Note: 
  5078.           changed anytime during program  execution, even  while a  workfile is
  5079.           loaded. Since SFD always stores the full path of any file having been
  5080.                         SFD
  5081.           loaded, the  change of  the active  subdirectory does  not affect it.
  5082.           Therefore, a  file is  always stored  back to the subdirectory it was
  5083.           loaded from.
  5084.  
  5085.  
  5086.           Chapter II,  SFD functional description                      page 66
  5087.           Chapter II,  SFD functional description                      page 66
  5088.  
  5089.  
  5090.  
  5091.  
  5092.  
  5093.  
  5094.  
  5095.  
  5096.  
  5097.  
  5098.  
  5099.  
  5100.  
  5101.  
  5102.           OASIS Evaluation Reference Manual
  5103.           OASIS Evaluation Reference Manual
  5104.  
  5105.  
  5106.           Crunch:
  5107.           Crunch:
  5108.           This function physically removes all previously  deleted formats from
  5109.           the active workfile. 
  5110.         | Once a  Crunch has  been performed on a workfile it is not any longer
  5111.         | possible to undelete previously deleted formats. A Crunch reduces the
  5112.           size  of  the  format  file  by the space previously allocated to the
  5113.           deleted  formats  (about  4.5  KB  per  format)  and  also  speeds up
  5114.           subsequent format access.
  5115.         | For these  reasons it is recommended to perform a Crunch prior to use
  5116.           a format file in a program. 
  5117.           Before SFD attempts to crunch a file, it saves the old version of the
  5118.                  SFD
  5119.           format file  under the  name <workfile>.BAK. This is done in order to
  5120.           provide a backup possibility in case of system errors etc  during the
  5121.           actual crunch operation. 
  5122.           The index file is not saved since it can easily be rebuild. 
  5123.  
  5124.  
  5125.           The following  procedure should  be applied  to recover an old format
  5126.         | file from <workfile>.BAK whenever it is suspected that an error might
  5127.         | have occurred  during Crunch and you are not sure about the integrity
  5128.           of the format file :
  5129.  
  5130.            1.  Save the files <workfile>.* on  a  backup  disk  and  store them
  5131.                safely away.
  5132.  
  5133.           On your work disk, perform the following operations:
  5134.  
  5135.            2.  Delete <workfile>.SCI, the index file. (This index file had been
  5136.         |      created to match the crunched version of the format file  and is
  5137.                therefore useless at the moment. 
  5138.  
  5139.            3.  If  present,  delete  file  <workfile>.SCS (the newly generated,
  5140.                crunched format file, which is suspected to be wrong.
  5141.  
  5142.            4.  Rename <workfile>.BAK to <workfile>.SCS.
  5143.  
  5144.            5.  Start SFD and load <workfile> as your workfile.
  5145.                      SFD
  5146.  
  5147.            6.
  5148.                SFD  will  automagically  create  a  new   index  file   for  it
  5149.                SFD
  5150.                (<workfile>.SCI). 
  5151.  
  5152.            7.  Check the integrity of the format file by looking  at the number
  5153.                of formats and/or printing a format list. Once you are satisfied
  5154.                create   a   backup   copy   of  <workfile>.*  and  discard  the
  5155.                intermediate  backup copy you have made at the beginning of this
  5156.                procedure.
  5157.  
  5158.            8.  You  now  have  backed  up  to the point before you attempted to
  5159.         |      perform the Crunch operation.
  5160.  
  5161.           Chapter II,  SFD functional description                      page 67
  5162.           Chapter II,  SFD functional description                      page 67
  5163.  
  5164.  
  5165.  
  5166.  
  5167.  
  5168.  
  5169.  
  5170.  
  5171.  
  5172.  
  5173.  
  5174.  
  5175.  
  5176.  
  5177.           OASIS Evaluation Reference Manual
  5178.           OASIS Evaluation Reference Manual
  5179.  
  5180.  
  5181.                                             FORMAT
  5182.                                             FORMAT
  5183.  
  5184.  
  5185.           This set of functions deal with  copying, deleting  and undeleting of
  5186.           formats  in  the  workfile.  The  meaning  of  the single items is as
  5187.           follows:
  5188.  
  5189.           Copy: 
  5190.           Copy:
  5191.           Duplicates a format under a different name within  the workfile. This
  5192.           feature is  especially handy  if several similar formats are required
  5193.         | for one program. Using Copy to duplicate a master version  and change
  5194.           it later  on can  save considerable  time over  building every single
  5195.           format from scratch.
  5196.         | If Copy is selected you will be asked for the  name of  the format to
  5197.           be copied  (Origin) and the name under which you want it to be copied
  5198.         | (Destination). Destination must be  a name  not yet  existing in your
  5199.           format file.
  5200.         | Copy (together  with Delete) can also be used to change the name of a
  5201.           format by first copying it to  the new  name and  afterwards deleting
  5202.           the old one.
  5203.  
  5204.           Delete:
  5205.           Delete:
  5206.           Deletes a format from the active work file. 
  5207.           Delete does not actually remove this format from the file, it is just
  5208.         | marked invalid  (logically  deleted).  This  has  several advantages,
  5209.           probably  the  biggest  one  being  that  it  can  still be recovered
  5210.           (undeleted). 
  5211.         | Please note that undelete is only possible as  long as  no Crunch has
  5212.           been performed on the work file.  
  5213.  
  5214.           Undelete:
  5215.           Undelete:
  5216.         | Undelete restores  a format  which had been logically deleted before,
  5217.         | in other words, it can reverse a Delete  operation. Before attempting
  5218.         | to undelete  a format, make sure that no other format exists with the
  5219.           same name. 
  5220.         | The names of all formats capable  of being  undeleted can  be seen by
  5221.         | either printing a Format list or via the Display formats command.
  5222.  
  5223.           Transfer: 
  5224.           Transfer:
  5225.           To load a format from a different format file.
  5226.           If this  function is  selected SFD  will ask for both the name of the
  5227.                                          SFD
  5228.           format file and the name of the format to be loaded. In case both can
  5229.         | be found  in your Active directory the format is added under the same
  5230.         | name to your active work file. Note that like in all cases  where you
  5231.           are asked  for a  format file,  the name of it is expected to have an
  5232.         | extension of .SCS, any other extension you may specify is masked off.
  5233.  
  5234.  
  5235.  
  5236.  
  5237.           Chapter II,  SFD functional description                      page 68
  5238.           Chapter II,  SFD functional description                      page 68
  5239.  
  5240.  
  5241.  
  5242.  
  5243.  
  5244.  
  5245.  
  5246.  
  5247.  
  5248.  
  5249.  
  5250.  
  5251.  
  5252.  
  5253.           OASIS Evaluation Reference Manual
  5254.           OASIS Evaluation Reference Manual
  5255.  
  5256.  
  5257.                                          DISPLAY
  5258.                                          DISPLAY
  5259.  
  5260.  
  5261.           Formats: 
  5262.           Formats:
  5263.           The names  of all formats in the current work file are displayed. The
  5264.         | logically deleted formats will be included  as well,  they are marked
  5265.           as being deleted. 
  5266.  
  5267.  
  5268.  
  5269.           Files: 
  5270.           Files:
  5271.         | Initiates a  display of  the names  of all format files in the active
  5272.         | directory.
  5273.  
  5274.  
  5275.  
  5276.           Directory: 
  5277.           Directory:
  5278.           Provides the same functions as the DOS "Dir" command.  
  5279.           A file specification according to DOS rules is expected and all files
  5280.           matching this specification will be displayed. 
  5281.           Wild  card  as  well  as drive/subdirectory specifications follow the
  5282.           same rules as for the DOS "Dir" command.
  5283.  
  5284.  
  5285.  
  5286.  
  5287.  
  5288.  
  5289.  
  5290.  
  5291.  
  5292.  
  5293.  
  5294.  
  5295.  
  5296.  
  5297.  
  5298.  
  5299.  
  5300.  
  5301.  
  5302.  
  5303.  
  5304.  
  5305.  
  5306.  
  5307.  
  5308.  
  5309.  
  5310.  
  5311.           Chapter II,  SFD functional description                      page 69
  5312.           Chapter II,  SFD functional description                      page 69
  5313.  
  5314.  
  5315.  
  5316.  
  5317.  
  5318.  
  5319.  
  5320.  
  5321.  
  5322.  
  5323.  
  5324.  
  5325.  
  5326.  
  5327.           OASIS Evaluation Reference Manual
  5328.           OASIS Evaluation Reference Manual
  5329.  
  5330.  
  5331.                                           PRINT
  5332.                                           PRINT
  5333.  
  5334.  
  5335.           Single format: 
  5336.           Single format:
  5337.           Prints  a  hardcopy  of  the  format  specified,  accompanied   by  a
  5338.           description of its fields, on the active printer.
  5339.           If the  printer is  not ready  or out of paper, such a status will be
  5340.           reported back to you and you are given  the option  to either correct
  5341.           the situation or abort the print. 
  5342.           Note that  in order  to work correctly the printer must be capable to
  5343.           print the upper half of the character set according to IBM standard.
  5344.  
  5345.  
  5346.  
  5347.           All formats:
  5348.           All formats:
  5349.           Similar to above, but prints hardcopies of all  valid formats  in the
  5350.           active work file.
  5351.  
  5352.  
  5353.  
  5354.           Format list:
  5355.           Format list:
  5356.           Prints a  listing of the most important details of all formats in the
  5357.           active work file. 
  5358.  
  5359.  
  5360.           These are :
  5361.  
  5362.           Format name, size of the format, total number of fields,  cursor home
  5363.         | position, the  related help format and information whether the format
  5364.           is deleted or not.
  5365.  
  5366.           A summary is also added. It lists the total number of formats  in the
  5367.           file as well as the number of valid and deleted formats.
  5368.  
  5369.  
  5370.  
  5371.  
  5372.  
  5373.  
  5374.  
  5375.  
  5376.  
  5377.  
  5378.  
  5379.  
  5380.  
  5381.  
  5382.  
  5383.  
  5384.  
  5385.           Chapter II,  SFD functional description                      page 70
  5386.           Chapter II,  SFD functional description                      page 70
  5387.  
  5388.  
  5389.  
  5390.  
  5391.  
  5392.  
  5393.  
  5394.  
  5395.  
  5396.  
  5397.  
  5398.  
  5399.  
  5400.  
  5401.           OASIS Evaluation Reference Manual
  5402.           OASIS Evaluation Reference Manual
  5403.  
  5404.  
  5405.                                         DEFAULTS
  5406.                                         DEFAULTS
  5407.  
  5408.  
  5409.           The two  functions in  this group allow to inquire or change of SFD's
  5410.                                                                           SFD's
  5411.           program default specifications. 
  5412.           If changed, the Option is given to save  the new  defaults in  a disk
  5413.           file (SFD.DEF) to be automatically used again with any subsequent run
  5414.           of SFD until they become altered again. If the option  is choosen not
  5415.              SFD
  5416.           to save  the new  defaults, they  will only  be valid for the current
  5417.           program run. 
  5418.  
  5419.  
  5420.  
  5421.           Design: 
  5422.           Design:
  5423.  
  5424.           Left Field Limit: 
  5425.           Left Field Limit:
  5426.           The character to be  interpreted as  the left  limit of  a field, i.e
  5427.           whenever this  character is  found, SFD assumes that a field is about
  5428.                                               SFD
  5429.           to start at the next character position. 
  5430.           The default setting of this parameter is '['. 
  5431.  
  5432.  
  5433.           Right Field Limit: 
  5434.           Right Field Limit:
  5435.           The character indicating the end of  a field.  The field  ends at the
  5436.           character position ipreceeding the Right Field  Limit Character. 
  5437.           The default is ']'.
  5438.  
  5439.  
  5440.           Note:    For    detailed  informations  on how to use the field limit
  5441.           Note:
  5442.         | characters refer to Basic Format  Layout  Design.  later  on  in this
  5443.           manual.
  5444.  
  5445.  
  5446.           Background Color: 
  5447.           Background Color:
  5448.           One among  eight colors to be used as background during format layout
  5449.           design. 
  5450.           The default is 'Blue'.
  5451.  
  5452.  
  5453.           Foreground Color: 
  5454.           Foreground Color:
  5455.           One among sixteen colors to be used as foreground (text) color during
  5456.           format layout design. The default is 'light grey'.
  5457.  
  5458.  
  5459.           Note:   The above  two color options only apply when a color graphics
  5460.           Note:
  5461.         | adapter is used. On  systems using  a Monochrome  adapter, the Design
  5462.         | Background Color is always "Black" and the foregound color is "White"
  5463.           (i.e the color of your screen).
  5464.  
  5465.  
  5466.           Chapter II,  SFD functional description                      page 71
  5467.           Chapter II,  SFD functional description                      page 71
  5468.  
  5469.  
  5470.  
  5471.  
  5472.  
  5473.  
  5474.  
  5475.  
  5476.  
  5477.  
  5478.  
  5479.  
  5480.  
  5481.  
  5482.           OASIS Evaluation Reference Manual
  5483.           OASIS Evaluation Reference Manual
  5484.  
  5485.  
  5486.           Surrounding Area:
  5487.           Surrounding Area:
  5488.         | Used by the Layout Editor. If a format layout work area is defined to
  5489.           be  smaller  than  a  full  screen,  the surrounding (unused) area is
  5490.           filled with the character specified  here.  The  default  setting for
  5491.           this option is Character Ascii (Hex) 'FA' (a dot).
  5492.  
  5493.  
  5494.           Note:   For more  information on  how to enter special characters see
  5495.           Note:
  5496.           Appendix A, 'Tips and Tricks'.
  5497.  
  5498.  
  5499.  
  5500.  
  5501.  
  5502.  
  5503.  
  5504.  
  5505.  
  5506.  
  5507.  
  5508.  
  5509.  
  5510.  
  5511.  
  5512.  
  5513.  
  5514.  
  5515.  
  5516.  
  5517.  
  5518.  
  5519.  
  5520.  
  5521.  
  5522.  
  5523.  
  5524.  
  5525.  
  5526.  
  5527.  
  5528.  
  5529.  
  5530.  
  5531.  
  5532.  
  5533.  
  5534.  
  5535.  
  5536.  
  5537.  
  5538.           Chapter II,  SFD functional description                      page 72
  5539.           Chapter II,  SFD functional description                      page 72
  5540.  
  5541.  
  5542.  
  5543.  
  5544.  
  5545.  
  5546.  
  5547.  
  5548.  
  5549.  
  5550.  
  5551.  
  5552.  
  5553.  
  5554.           OASIS Evaluation Reference Manual
  5555.           OASIS Evaluation Reference Manual
  5556.  
  5557.  
  5558.                                      System defaults
  5559.                                      System defaults
  5560.  
  5561.  
  5562.           The following parameters can be altered:
  5563.           The following parameters can be altered:
  5564.  
  5565.                        
  5566.  
  5567.           Auto Help: 
  5568.           Auto Help:
  5569.           SFD can be configured to automatically come up  with Help information
  5570.           SFD
  5571.           if a certain number of consecutive input errors have occurred. 
  5572.           'Yes'  is  the  default  setting  and  indicates that this feature is
  5573.         | enabled. If 'No' is selected, Auto Help is disabled.
  5574.  
  5575.  
  5576.           After n Errors: 
  5577.           After n Errors:
  5578.         | Specifies the number of consecutive errors after which  the Auto help
  5579.           screen is to be displayed. 
  5580.           Please  note,  that  if  consecutive  errors  are  identical they are
  5581.           counted double i.e. the  second  and  all  following  occurrences are
  5582.           counted twice. 
  5583.           The Default is '3'.
  5584.  
  5585.  
  5586.           Beep yes/no: 
  5587.           Beep yes/no:
  5588.           Determines whether SFD 'beeps' in case of errors. 
  5589.                              SFD
  5590.           If 'no' is selected, SFD will stay quiet. 
  5591.                                SFD
  5592.           The default setting is 'Yes'.
  5593.  
  5594.  
  5595.           Length (ms): 
  5596.           Length (ms):
  5597.           Duration of the 'beep' tone in milliseconds. The default is 200.
  5598.  
  5599.  
  5600.           Pitch (Hz): 
  5601.           Pitch (Hz):
  5602.           Every   'beep' is  made up of several short bursts of two alternating
  5603.           frequencies which can be freely specified. 
  5604.           A Sound using a single frequency  can  be  selected  by  setting both
  5605.           frequencies to  the same  value. The  frequencies must be between 100
  5606.           and 9999 Hz. 
  5607.           The default settings are  200 Hz  for the  first and  350 Hz  for the
  5608.           second frequency.
  5609.  
  5610.  
  5611.           Field Blink Frequency: 
  5612.           Field Blink Frequency:
  5613.           SFD allows  to select  the frequency a field is blinking. This figure
  5614.           SFD
  5615.           is expressed in milliseconds and determines the delay  to wait before
  5616.           inverting the field color again. 
  5617.                                            
  5618.  
  5619.                        
  5620.  
  5621.  
  5622.  
  5623.           Chapter II,  SFD functional description                      page 73
  5624.           Chapter II,  SFD functional description                      page 73
  5625.  
  5626.  
  5627.  
  5628.  
  5629.  
  5630.  
  5631.  
  5632.  
  5633.  
  5634.  
  5635.  
  5636.  
  5637.  
  5638.  
  5639.           OASIS Evaluation Reference Manual
  5640.           OASIS Evaluation Reference Manual
  5641.  
  5642.  
  5643.                        
  5644.           Char YES: 
  5645.           Char YES:
  5646.           The Ascii code of the upper case letter indicating 'Yes', i.e. in the
  5647.           case of english '89' ('Y').
  5648.  
  5649.  
  5650.                        
  5651.           Char NO: 
  5652.           Char NO:
  5653.           Same as above for 'No', i.e in the case of english '78' ('N').
  5654.  
  5655.  
  5656.  
  5657.                        
  5658.           Note:  The above two  options  are  used  in  the  case  of 'boolean'
  5659.           Note:
  5660.           fields. These  fields only allow either one of above characters to be
  5661.           entered. Lower case characters are automatically translated.
  5662.  
  5663.  
  5664.  
  5665.           Cursor Wraparound Disabled:
  5666.           Cursor Wraparound Disabled:
  5667.           If this option is set to 'Yes' then Cursor Wraparound is disabled for
  5668.         | all formats  in SFD.  This Option is especially beneficial if a Mouse
  5669.                           SFD
  5670.           is utilized to operate SFD. 
  5671.                                  SFD
  5672.         | Provided Cursor Wraparound is  not disabled,  pressing Right  or Down
  5673.           while being  in the  last field  of a  format moves the cursor to the
  5674.         | first field. The opposite happens if  Left  or  Up  is  pressed while
  5675.           being  in  the  first  field  of  a format. Please note, that even if
  5676.           cursor wraparound may not be disabled  it is  not available  with all
  5677.           formats in SFD. 
  5678.                      SFD
  5679.  
  5680.  
  5681.  
  5682.  
  5683.  
  5684.  
  5685.  
  5686.  
  5687.  
  5688.  
  5689.  
  5690.  
  5691.  
  5692.  
  5693.  
  5694.  
  5695.  
  5696.  
  5697.  
  5698.  
  5699.  
  5700.  
  5701.  
  5702.  
  5703.           Chapter II,  SFD functional description                      page 74
  5704.           Chapter II,  SFD functional description                      page 74
  5705.  
  5706.  
  5707.  
  5708.  
  5709.  
  5710.  
  5711.  
  5712.  
  5713.  
  5714.  
  5715.  
  5716.  
  5717.  
  5718.  
  5719.           OASIS Evaluation Reference Manual
  5720.           OASIS Evaluation Reference Manual
  5721.  
  5722.  
  5723.                                           EXIT
  5724.                                           EXIT
  5725.                        
  5726.  
  5727.  
  5728.  
  5729.  
  5730.           Terminate Program:
  5731.            erminate Program:
  5732.            
  5733.           If  a  workfile  was  loaded  it  is  automatically sorted before SFD
  5734.                                                                             SFD
  5735.           terminates.
  5736.           This is necessary to make the formats within this workfile accessible
  5737.           for SCL routines.
  5738.               SCL
  5739.  
  5740.            
  5741.           Note:  SCL cannot be used with unsorted format files.  Any attempt to
  5742.           Note:  SCL
  5743.           do so will result in a fatal error aborting the appropriate program. 
  5744.  
  5745.  
  5746.  
  5747.  
  5748.  
  5749.  
  5750.  
  5751.  
  5752.  
  5753.  
  5754.  
  5755.  
  5756.  
  5757.  
  5758.  
  5759.  
  5760.  
  5761.  
  5762.  
  5763.  
  5764.  
  5765.  
  5766.  
  5767.  
  5768.  
  5769.  
  5770.  
  5771.  
  5772.  
  5773.  
  5774.  
  5775.  
  5776.  
  5777.  
  5778.  
  5779.           Chapter II,  SFD functional description                      page 75
  5780.           Chapter II,  SFD functional description                      page 75
  5781.  
  5782.  
  5783.  
  5784.  
  5785.  
  5786.  
  5787.  
  5788.  
  5789.  
  5790.  
  5791.  
  5792.  
  5793.  
  5794.  
  5795.           OASIS Evaluation Reference Manual
  5796.           OASIS Evaluation Reference Manual
  5797.  
  5798.  
  5799.                                       Format Design
  5800.                                       Format Design
  5801.                                       _____________
  5802.  
  5803.  
  5804.  
  5805.                                      Basic Work Flow
  5806.                                      Basic Work Flow
  5807.  
  5808.  
  5809.           The basic flow of developping a new format is as follows:
  5810.           The basic flow of developping a new format is as follows:
  5811.  
  5812.                1. Design of the basic format layout.
  5813.  
  5814.                2. Specification of all fields.
  5815.  
  5816.                3. Global specifications.
  5817.  
  5818.                4. Determination of colors & attributes.
  5819.  
  5820.                5. Test of the format and necessary changes.
  5821.  
  5822.  
  5823.  
  5824.            
  5825.            
  5826.           Note:   This sequence only represents a crude guideline.
  5827.           Note:
  5828.           Except for step 1, SFD does not impose  restrictions on  the sequence
  5829.                              SFD
  5830.           these actions  have to  be performed. In practice, you will find that
  5831.           some steps can sometimes  be omitted  completely since  SFD's default
  5832.                                                                   SFD's
  5833.           settings are often sufficient. 
  5834.           On  the  other  hand  you  may  find  that some activities have to be
  5835.           performed more than once in order to achieve the desired results.
  5836.  
  5837.  
  5838.           Initially, steps 1 through 4 should always be performed via  the main
  5839.         | menu item Layout Design.
  5840.           Beside a few restrictions, steps 2 to 4 can also be carried out using
  5841.         | the Format  test facility  with the  added advantage  that results of
  5842.           changes become immediately visible. 
  5843.         | However,  since  changes  are  much more convenient within the layout
  5844.         | design system it is advisable to perform all major specification work
  5845.           there and  use the  test facility only to carry out minor corrections
  5846.           found necessary while testing the format. 
  5847.  
  5848.  
  5849.  
  5850.  
  5851.  
  5852.  
  5853.  
  5854.  
  5855.  
  5856.  
  5857.           Chapter II,  format design                                   page 76
  5858.           Chapter II,  format design                                   page 76
  5859.  
  5860.  
  5861.  
  5862.  
  5863.  
  5864.  
  5865.  
  5866.  
  5867.  
  5868.  
  5869.  
  5870.  
  5871.  
  5872.  
  5873.           OASIS Evaluation Reference Manual
  5874.           OASIS Evaluation Reference Manual
  5875.  
  5876.  
  5877.                                     The Layout Editor
  5878.                                     The Layout Editor
  5879.  
  5880.  
  5881.           The Layout editor is  activated by  selecting the  first item  on the
  5882.         | Main Menu,  "Layout Design".  First, SFD will ask for the name of the
  5883.                                                SFD
  5884.           format to  load.  In  case  this  format  exists,  it  is  loaded and
  5885.           displayed, otherwise  SFD gives you the option to create a new format
  5886.                                 SFD
  5887.           with the specified name.
  5888.           The Layout editor provides a worksheet to develop or change  a format
  5889.           layout as well as to specify size and location of its fields. 
  5890.           Formats in  the layout  editor are  displayed in a slightly different
  5891.         | fashion than  under Test  or if  they are  used in  a SCL application
  5892.                                                                 SCL
  5893.           program:
  5894.  
  5895.             *  All fields  are shown  with Left  and Right delimiters (Default:
  5896.                '[' and ']').
  5897.            
  5898.             *  The Cursor has the shape of a big block and can be  moved freely
  5899.                across the whole format. 
  5900.  
  5901.             *  If the  format is  smaller than a full screen (80 X 25) then the
  5902.                area outside the format is filled with the  characters specified
  5903.         |      for this purpose in Design Defaults.
  5904.  
  5905.  
  5906.           In addition some keys do have other meanings than in normal formats.
  5907.             
  5908.  
  5909.                        
  5910.           Note:    If  the  Layout  editor  has been instructed to create a new
  5911.           Note:
  5912.           format, SFD assumes by  default that  it's size  is 25  lines with 80
  5913.                   SFD
  5914.           characters each  (a full  screen). This  is the  reason why the whole
  5915.           screen is initially erased in order to serve as a drawing board. 
  5916.  
  5917.  
  5918.  
  5919.  
  5920.  
  5921.  
  5922.  
  5923.  
  5924.  
  5925.  
  5926.  
  5927.  
  5928.  
  5929.  
  5930.  
  5931.  
  5932.  
  5933.  
  5934.           Chapter II,  format design                                   page 77
  5935.           Chapter II,  format design                                   page 77
  5936.  
  5937.  
  5938.  
  5939.  
  5940.  
  5941.  
  5942.  
  5943.  
  5944.  
  5945.  
  5946.  
  5947.  
  5948.  
  5949.  
  5950.           OASIS Evaluation Reference Manual
  5951.           OASIS Evaluation Reference Manual
  5952.  
  5953.  
  5954.           Layout editor Meaning of keys
  5955.           Layout editor Meaning of keys
  5956.  
  5957.  
  5958.  
  5959.         | Backspace, Insert and Delete  have the  same meaning  as under normal
  5960.           Backspace  Insert     Delete
  5961.           operation, but they do work on a full line instead of in a field.
  5962.  
  5963.           Home moves the cursor to the upper left corner of your worksheet. 
  5964.           Home
  5965.  
  5966.         | End  moves the cursor to the first character of the last line.
  5967.           End
  5968.  
  5969.         | PgUp deletes the line under the cursor.
  5970.           PgUp
  5971.  
  5972.         | PgDn inserts a line.
  5973.           PgDn
  5974.  
  5975.         | Return moves the cursor to the first character of the next line.
  5976.           Return
  5977.  
  5978.         | The Arrow keys allow the cursor to move freely on the format.
  5979.  
  5980.  
  5981.         | The Arrows are working in wrap-around mode as follows: 
  5982.           The Arrows are working in wrap-around mode as follows: 
  5983.           Right with the cursor being in the rightmost position moves it to the
  5984.           first position of the next line. 
  5985.  
  5986.           Left with the cursor being in the first position of  a line  moves it
  5987.           to the last position of the previous line.
  5988.  
  5989.           Right while  being in  the lower  right corner of the worksheet moves
  5990.           the cursor to the upper left corner. 
  5991.  
  5992.           Left while being in  the upper  left corner  moves the  cursor to the
  5993.           lower right corner of the worksheet. 
  5994.  
  5995.         | Pressing Up  while being  in the  first line  moves the cursor to the
  5996.         | last line and the opposite happens with Down while in the last line.
  5997.  
  5998.  
  5999.  
  6000.  
  6001.           Note:  All Special key functions belonging to  the layout  editor are
  6002.           Note:
  6003.           discussed later  on in  this chapter  together with  the actions they
  6004.           perform.
  6005.  
  6006.  
  6007.  
  6008.  
  6009.  
  6010.  
  6011.  
  6012.  
  6013.           Chapter II,  format design                                   page 78
  6014.           Chapter II,  format design                                   page 78
  6015.  
  6016.  
  6017.  
  6018.  
  6019.  
  6020.  
  6021.  
  6022.  
  6023.  
  6024.  
  6025.  
  6026.  
  6027.  
  6028.  
  6029.           OASIS Evaluation Reference Manual
  6030.           OASIS Evaluation Reference Manual
  6031.  
  6032.  
  6033.                                      Drawing Fields
  6034.                                      Drawing Fields
  6035.  
  6036.  
  6037.         | All desired fields in a format must be  determined within  the Layout
  6038.         | Design phase.
  6039.           To  describe  their  position  and  length two special characters are
  6040.         | defined in SFD: The  Left Field  Delimiter (LD)  and the  Right Field
  6041.         | Delimiter (RD). 
  6042.           The default values are '[' for LD and ']' for RD. These values can be
  6043.         | changed to any other character via Design Defaults.
  6044.  
  6045.           A LD determines the begin of a field. SFD always assumes that a field
  6046.                                                 SFD
  6047.           begins at the character position immediately following an LD. 
  6048.           It also assumes that it ends at the position immediately before a RD.
  6049.           A field must always end on  the same  line it  begun, i.e  it may not
  6050.           continue on the next line.
  6051.           In order to allow consecutive fields with only one character position
  6052.           between them, it is possible to omit the RD character.  In this case,
  6053.           the LD  is interpreted as the termination of  a field at the position
  6054.           preceeding it and also as the start of  a new  field at  the position
  6055.           succeding it. 
  6056.           However you  should note that the last field on any line has still to
  6057.           be terminated with an RD character.
  6058.  
  6059.           According to this,  all  the  examples  below  represent  valid field
  6060.           constructions. (The  line below the actual delimiters shows the range
  6061.           of  each  field  as  described  by  the  delimiters  in  form  of 'x'
  6062.           characters).
  6063.  
  6064.  
  6065.  
  6066.  
  6067.  
  6068.            [        ]     [         [        [         ][         ]
  6069.             xxxxxxxx       xxxxxxxxx xxxxxxxx xxxxxxxxx  xxxxxxxxx  
  6070.  
  6071.  
  6072.  
  6073.  
  6074.  
  6075.  
  6076.  
  6077.  
  6078.  
  6079.  
  6080.  
  6081.  
  6082.  
  6083.  
  6084.  
  6085.           Chapter II,  format design                                   page 79
  6086.           Chapter II,  format design                                   page 79
  6087.  
  6088.  
  6089.  
  6090.  
  6091.  
  6092.  
  6093.  
  6094.  
  6095.  
  6096.  
  6097.  
  6098.  
  6099.  
  6100.  
  6101.           OASIS Evaluation Reference Manual
  6102.           OASIS Evaluation Reference Manual
  6103.  
  6104.  
  6105.                                     Special Functions
  6106.                                     Special Functions
  6107.  
  6108.  
  6109.           In order to facilitate the process of developing a format layout, the
  6110.           Layout Editor offers a whole  range  of  special  functions. Although
  6111.           very versalite, they can be activated using very few different keys.
  6112.           The ones  that are  most frequently  used are directly accessible via
  6113.           function keys. Some other, less often used functions can be called up
  6114.           via a small menu which itself is accessible with a function key.
  6115.  
  6116.  
  6117.  
  6118.           The appropriate Function keys are as follows:
  6119.           The appropriate Function keys are as follows:
  6120.  
  6121.  
  6122.                F4  : Delete Block
  6123.  
  6124.                F5  : Mark Block Corner
  6125.  
  6126.                F6  : Copy Block
  6127.  
  6128.                F7  : Undraw Box (or line)
  6129.  
  6130.                F8  : Draw Box
  6131.  
  6132.                F9  : Menu Functions
  6133.  
  6134.  
  6135.           The  following  paragraphs  will  discuss  all  special  functions in
  6136.           logical sequence.
  6137.  
  6138.  
  6139.  
  6140.  
  6141.  
  6142.  
  6143.  
  6144.  
  6145.  
  6146.  
  6147.  
  6148.  
  6149.  
  6150.  
  6151.  
  6152.  
  6153.  
  6154.  
  6155.  
  6156.  
  6157.           Chapter II,  format design                                   page 80
  6158.           Chapter II,  format design                                   page 80
  6159.  
  6160.  
  6161.  
  6162.  
  6163.  
  6164.  
  6165.  
  6166.  
  6167.  
  6168.  
  6169.  
  6170.  
  6171.  
  6172.  
  6173.           OASIS Evaluation Reference Manual
  6174.           OASIS Evaluation Reference Manual
  6175.  
  6176.  
  6177.           Mark Corner (F5)
  6178.           Mark Corner (F5)
  6179.  
  6180.         | Many of the layout editors  special  functions  are  so  called Block
  6181.         | Functions. 
  6182.         | Before any  of these Block Functions can be performed it is necessary
  6183.           to important to describe the rectangular area (block) they should act
  6184.         | upon. This is done by simply marking its two diagonal corners.
  6185.           A block  does not necessarily have to be two-dimensionall it can also
  6186.         | be a line or a column of any desired length. In these cases just mark
  6187.           both ends of it.
  6188.            
  6189.           Pressing F5  sets a  mark at  the cursor  position, shown  as a small
  6190.                    F5
  6191.           rhombus. 
  6192.  
  6193.         | Incidentally set Marks can simply be removed again by positioning the
  6194.         | cursor on them and pressing F5 again.
  6195.  
  6196.  
  6197.           Notes:   Only a  maximum of  two marks  may be  set at  any time, any
  6198.           Notes:
  6199.           additional attempt is refused.  Marks  are  automatically  removed as
  6200.         | soon as the Block Function is performedn
  6201.  
  6202.  
  6203.  
  6204.           Copy Block (F6)
  6205.           Copy Block (F6)
  6206.  
  6207.         | Pressing F6  will duplicate  the marked  block at  the current cursor
  6208.                    F6
  6209.           position (Building it's upper  left  corner).  Please  note  that for
  6210.           obvious reasons  it is  not possible  to copy a block into itself, in
  6211.         | other words to a cursor position enclosed by the marked Block.
  6212.           If the block to be copied is bigger than the  space available  at the
  6213.           cursor  position,  the  parts  which  do  not  fit  are automatically
  6214.           truncated.
  6215.  
  6216.  
  6217.  
  6218.           Delete Block (F4)
  6219.           Delete Block (F4)
  6220.  
  6221.         | F4 erases the marked Block, in other words, moves spaces  to it. This
  6222.           F4
  6223.           function can also be used to erase the whole worksheet by marking its
  6224.           two corners. 
  6225.  
  6226.  
  6227.  
  6228.  
  6229.  
  6230.  
  6231.  
  6232.  
  6233.  
  6234.           Chapter II,  format design                                   page 81
  6235.           Chapter II,  format design                                   page 81
  6236.  
  6237.  
  6238.  
  6239.  
  6240.  
  6241.  
  6242.  
  6243.  
  6244.  
  6245.  
  6246.  
  6247.  
  6248.  
  6249.  
  6250.           OASIS Evaluation Reference Manual
  6251.           OASIS Evaluation Reference Manual
  6252.  
  6253.  
  6254.           Draw Box (F8)
  6255.           Draw Box (F8)
  6256.  
  6257.         | Pressing F8 causes a box to be drawn with the  two marks representing
  6258.                    F8
  6259.           its diagonal corners.
  6260.           The linestyles  used for  both horizontal  and vertical  lines can be
  6261.         | selected via the local menu (for further details refer to "Local Menu
  6262.           Functions"). 
  6263.           When  using  single  or  double  lines  graphic characters the proper
  6264.           connections to other boxes will be done automagically. 
  6265.           Beside for drawing boxes, this function  can  also  be  used  to draw
  6266.           lines  by  positioning  the  two  marks  in  either  the  same column
  6267.           (vertical line) or the same row (horizontal line).
  6268.  
  6269.  
  6270.           Undraw box (F7)
  6271.           Undraw box (F7)
  6272.  
  6273.           Erases the marked box, i.e replaces it by space characters.  The same
  6274.         | rules apply as for the Draw Box Function.
  6275.  
  6276.  
  6277.  
  6278.  
  6279.  
  6280.  
  6281.  
  6282.  
  6283.  
  6284.  
  6285.  
  6286.  
  6287.  
  6288.  
  6289.  
  6290.  
  6291.  
  6292.  
  6293.  
  6294.  
  6295.  
  6296.  
  6297.  
  6298.  
  6299.  
  6300.  
  6301.  
  6302.  
  6303.  
  6304.  
  6305.  
  6306.  
  6307.           Chapter II,  format design                                   page 82
  6308.           Chapter II,  format design                                   page 82
  6309.  
  6310.  
  6311.  
  6312.  
  6313.  
  6314.  
  6315.  
  6316.  
  6317.  
  6318.  
  6319.  
  6320.  
  6321.  
  6322.  
  6323.           OASIS Evaluation Reference Manual
  6324.           OASIS Evaluation Reference Manual
  6325.  
  6326.  
  6327.                                      Menu Functions
  6328.                                      Menu Functions
  6329.  
  6330.  
  6331.           The  menu  can  be  accessed  by pressing F9. It offers the following
  6332.                                                     F9
  6333.           functions:
  6334.  
  6335.  
  6336.           Change Format size
  6337.           Change Format size
  6338.  
  6339.           This function allows to  change  the  size  of  the  currently loaded
  6340.           format layout.
  6341.           Valid  sizes  can  be  anything  from  1  to  25  lines  with 1 to 80
  6342.           characters each. 
  6343.  
  6344.  
  6345.           Boxes Linestyles
  6346.           Boxes Linestyles
  6347.  
  6348.           This function facilitates the selection of the linestyles  to be used
  6349.         | with the Box drawing feature.
  6350.           Possible linestyles  are displayed  in two groups, one for horizontal
  6351.           and  one  for  vertical  lines.  Each  of  them   can  be  determined
  6352.           independently. 
  6353.  
  6354.           Each group contains the following:
  6355.  
  6356.                1.   Double Line Block Graphics characters.
  6357.  
  6358.                2.   Single Line Block Graphics characters.
  6359.  
  6360.                3.   White half Blocks.
  6361.  
  6362.                4 to 6: Full Blocks in different shades. 
  6363.  
  6364.                7.   Any other character, see Text below.
  6365.  
  6366.            
  6367.           For  the  first  two  Options  (Single  and Double line block graphic
  6368.           characters),  SFD  is  even  capable  to  connect  boxes   using  the
  6369.                         SFD
  6370.           appropriate 'X'  and 'T' elements available in the Character set. The
  6371.           last Option is used to choose any other displayable character.
  6372.           If selected,  another  format  comes  up  showing  an  extract  of 32
  6373.           characters at  a time  out of  the complete  system characterset. The
  6374.         | Left and Right  keys  can  then  be  used  to  point  to  the desired
  6375.           character or  to select  another set of 32 Characters to choose fromn
  6376.         | Once the desired character is found just press Return to pick it. 
  6377.           Using this feature boxes and/or lines made up for example  of smiling
  6378.           faces or $-signs can easily be created.
  6379.  
  6380.  
  6381.  
  6382.           Chapter II,  format design                                   page 83
  6383.           Chapter II,  format design                                   page 83
  6384.  
  6385.  
  6386.  
  6387.  
  6388.  
  6389.  
  6390.  
  6391.  
  6392.  
  6393.  
  6394.  
  6395.  
  6396.  
  6397.  
  6398.           OASIS Evaluation Reference Manual
  6399.           OASIS Evaluation Reference Manual
  6400.  
  6401.  
  6402.           Key Redefinition
  6403.           Key Redefinition
  6404.  
  6405.           This  function  allows  to  assign  any  desired  keyboard key to any
  6406.           displayable  character.  It becomes very handy if  certain Characters
  6407.           are required  in a  format which  can not normally be accessed with a
  6408.           keyboard key. 
  6409.           The selection of the appropriate character to be displayed works in a
  6410.         | similar  fashion  as  the  one  above  described  for User selectable
  6411.         | linestyles.
  6412.           Up to six keyboard keys can be redefined at the same time. 
  6413.  
  6414.                        
  6415.           Note: There exists also  another  possibility  to  display characters
  6416.           Note:
  6417.           normally  not  accessible  via  the  keyboard  which  is described in
  6418.           Appendix A under 'Tips and Tricks'.
  6419.  
  6420.  
  6421.  
  6422.  
  6423.  
  6424.  
  6425.  
  6426.  
  6427.  
  6428.  
  6429.  
  6430.  
  6431.  
  6432.  
  6433.  
  6434.  
  6435.  
  6436.  
  6437.  
  6438.  
  6439.  
  6440.  
  6441.  
  6442.  
  6443.  
  6444.  
  6445.  
  6446.  
  6447.  
  6448.  
  6449.  
  6450.  
  6451.  
  6452.  
  6453.  
  6454.  
  6455.           Chapter II,  format design                                   page 84
  6456.           Chapter II,  format design                                   page 84
  6457.  
  6458.  
  6459.  
  6460.  
  6461.  
  6462.  
  6463.  
  6464.  
  6465.  
  6466.  
  6467.  
  6468.  
  6469.  
  6470.  
  6471.           OASIS Evaluation Reference Manual
  6472.           OASIS Evaluation Reference Manual
  6473.  
  6474.  
  6475.                                   Format Specifications
  6476.                                   Format Specifications
  6477.  
  6478.           All format specification parameters are stored  in the  actual format
  6479.           file (<Name>.SCS). 
  6480.         | Once a  new format has been designed and the Layout Editor is exited,
  6481.           all these parameters will be set to default  values, i.e  every field
  6482.           is assumed to be a variable, there is no input check to be performed,
  6483.           the color of the format is white on a black background and so on.
  6484.           These    specifications    can  then  be  tailored  to    your    own
  6485.           requirements.
  6486.           When an  existing format is modified, SFD where format specifications
  6487.                                                 SFD
  6488.         | can be changed. The main one is directly after the  layout Editor has
  6489.           been  exited  and  the  other  one, which is slightly limited in some
  6490.         | aspects is accessible via a local   menu   during  Format Test.   Two
  6491.           main groups  of specifications exist: 
  6492.  
  6493.           Field Specifications
  6494.           Field Specifications
  6495.           The specifications defining a single field on a format. 
  6496.  
  6497.           Global Specifications
  6498.           Global Specifications
  6499.           All specifications proprietary to the whole format.
  6500.  
  6501.           Not  only  are  the  format  specifications  directly  accessible and
  6502.           alterable but it is also possible  to copy  field specifications from
  6503.           another field  or to change colors and attributes of a whole group of
  6504.           fields such as all variables or all constants on a format.
  6505.  
  6506.  
  6507.         | Note:  Some parameters cannot be  modified during  Format Test, where
  6508.           Note:
  6509.           this is the case, it is mentioned in the following.
  6510.  
  6511.           The discussion of the format specifications is subdivided under three
  6512.           headings:
  6513.  
  6514.  
  6515.               *  Field Specifications
  6516.               *  Colors and Attributes
  6517.               *  Global Specifications and Control Parameters
  6518.  
  6519.  
  6520.  
  6521.  
  6522.  
  6523.  
  6524.  
  6525.  
  6526.  
  6527.  
  6528.  
  6529.  
  6530.           Chapter II,  format design                                   page 85
  6531.           Chapter II,  format design                                   page 85
  6532.  
  6533.  
  6534.  
  6535.  
  6536.  
  6537.  
  6538.  
  6539.  
  6540.  
  6541.  
  6542.  
  6543.  
  6544.  
  6545.  
  6546.           OASIS Evaluation Reference Manual
  6547.           OASIS Evaluation Reference Manual
  6548.  
  6549.  
  6550.                                   Field Specifications
  6551.                                   Field Specifications
  6552.  
  6553.  
  6554.                        
  6555.           Type
  6556.           Type
  6557.  
  6558.           Defines the field type.  This  parameter  cannot  be  modified during
  6559.         | Format Test. The possible choices are:
  6560.  
  6561.  
  6562.                Variable:  A  normal  data  entry  field.This  is  the  default.
  6563.                Variable
  6564.         |      Constant: A selectable item (for example in a menu).
  6565.                Constant
  6566.                Output  :
  6567.                Output    A field not accessible  by the  cursor (for  example a
  6568.                          message line).
  6569.  
  6570.  
  6571.  
  6572.           Group from/to
  6573.           Group from/to
  6574.         | Important  for   Constants.  All   Constants  within  one  group  are
  6575.           exclusive, i.e. only one field within a group can be  selected at any
  6576.           one time.  Enter the  numbers of  the first and the last field of the
  6577.           group. The default  is  the  current  field  for  both  values. These
  6578.           parameters have  no meaning  for fields  other than constants. If the
  6579.           field specifications  for the  first field  of a  group are modified,
  6580.           they are  automatically copied to all other fields of that group. The
  6581.           only parameters not being copied are: 'Selected' and 'Messages. 
  6582.         | This parameter can not be modified during Test.
  6583.  
  6584.  
  6585.           Message
  6586.           Message
  6587.           A message can be specified for each field on a  format. It  is stored
  6588.         | in file  <Name>.MSG and  automatically displayed in the Message field
  6589.           (see  under  'Global  Specifications').  There  are  also  some other
  6590.           possibilities  to  use  this  message, see Appendix A under 'Advanced
  6591.           Programming Technics'. The default is no message.
  6592.  
  6593.  
  6594.           Helpscreen
  6595.           Helpscreen
  6596.         | The name of the format to display if the Field help Key, usually 'F2'
  6597.           is pressed. The default is no helpscreen.
  6598.  
  6599.  
  6600.           Fill 
  6601.           Fill
  6602.           Variables only. The character to replace all spaces with if the field
  6603.         | is active. The default is <Space>.
  6604.  
  6605.  
  6606.  
  6607.  
  6608.  
  6609.  
  6610.           Chapter II,  format design                                   page 86
  6611.           Chapter II,  format design                                   page 86
  6612.  
  6613.  
  6614.  
  6615.  
  6616.  
  6617.  
  6618.  
  6619.  
  6620.  
  6621.  
  6622.  
  6623.  
  6624.  
  6625.  
  6626.           OASIS Evaluation Reference Manual
  6627.           OASIS Evaluation Reference Manual
  6628.  
  6629.  
  6630.           Delimiter Left
  6631.           Delimiter Left
  6632.         | The character  to  display  at  the  position  where  the  Left field
  6633.         | delimiter was  put during  Layout Design,  i.e the character position
  6634.           preceeding the field. 
  6635.           The default is <space>.
  6636.  
  6637.           Delimiter Right
  6638.           Delimiter Right
  6639.         | The character to  display  at  the  position  where  the  Right field
  6640.         | delimiter was  put during Layout Design, i.e the position immediately
  6641.           after the field. 
  6642.           The default is <space>. 
  6643.  
  6644.           Justify
  6645.           Justify
  6646.           Determines how text within the field is to be justified. The possible
  6647.           choices are 'Left', 'Right' and 'Center'. The default is 'Left'.
  6648.  
  6649.           Decimals
  6650.           Decimals
  6651.           Numeric  variables  onlyn  Determines  how  many  positions are to be
  6652.           displayed after the decimal point. The default is 0 (zero).
  6653.  
  6654.           Mandatory
  6655.           Mandatory
  6656.           Determines whether input is  mandatory  to  this  field.  In  case of
  6657.         | constants it  determines whether  a selection within the Group has to
  6658.           be made. The default is 'No'.
  6659.  
  6660.           Selected
  6661.           Selected
  6662.           Determines    the    initial  status  of  the    boolean    attribute
  6663.           'Selected'. It  usually applies  to constants but it can also be used
  6664.           for some special effects like highlighting etc. See  Appendix A under
  6665.           'Advanced Programming  Technics' for  details. The  default status is
  6666.           'No'. Note that this attribute cannot be copied to other fields. 
  6667.  
  6668.           Char Check
  6669.           Char Check
  6670.           If this parameter is set  to  'Yes',  each  single  keystroke  can be
  6671.           externally checked,  i.e SCL  hands over  control to your application
  6672.                                    SCL
  6673.           after each keystroke before actually acting on it. For details on the
  6674.           use  of  this  parameter  see  the  description  of the SCL procedure
  6675.                                                                   SCL
  6676.           'Handle_Format' later on in  this  manual.  Additional  hints  can be
  6677.           found in Appendix A (Sample Programs, especially Sample 4).
  6678.  
  6679.           The default for this parameter is 'No'.
  6680.  
  6681.  
  6682.  
  6683.  
  6684.  
  6685.  
  6686.  
  6687.  
  6688.  
  6689.           Chapter II,  format design                                   page 87
  6690.           Chapter II,  format design                                   page 87
  6691.  
  6692.  
  6693.  
  6694.  
  6695.  
  6696.  
  6697.  
  6698.  
  6699.  
  6700.  
  6701.  
  6702.  
  6703.  
  6704.  
  6705.           OASIS Evaluation Reference Manual
  6706.           OASIS Evaluation Reference Manual
  6707.  
  6708.  
  6709.           Input Check
  6710.           Input Check
  6711.           Variables only.  Determines the  kind of data to be accepted as valid
  6712.           input in this field.
  6713.           The possibilities are as follows:
  6714.  
  6715.  
  6716.                        
  6717.                None: No input check is performed.  Any data  may be  entered in
  6718.                None
  6719.                this field. This is the default.
  6720.  
  6721.                Integer: Only integer numbers may be entered. Any other input is
  6722.                Integer
  6723.                refused. The numeric value entered must be within  the limits of
  6724.                'Min' to 'Max' (see below). The maximum possible range is -32768
  6725.                to +32767. Fields where entries outside this range  are required
  6726.                must be declared as 'Real' (see below).
  6727.  
  6728.                Real: Any number with or without a decimal point can be entered.
  6729.                Real
  6730.                It's value must be in the range of  'Min' to  'Max' (see below).
  6731.                It is not possible to enter numbers in scientific notation.
  6732.  
  6733.                Alpha: Only  alpha characters  are allowed  in this field. Other
  6734.                Alpha
  6735.                input is refused.
  6736.  
  6737.         |      Y,y,N,n:  Only  the  characters   defined  as   Boolean_Yes  and
  6738.                Y,y,N,n
  6739.         |      Boolean_No (both  lower and  upper case)  may be entered in this
  6740.                field. For Details see the explanation of these  two SCL routine
  6741.                                                                     SCL
  6742.                upon the  initialisation of  the program.  This feature makes it
  6743.                possible to define optimum formats without any compromises. 
  6744.  
  6745.  
  6746.  
  6747.  
  6748.  
  6749.  
  6750.  
  6751.  
  6752.  
  6753.  
  6754.  
  6755.  
  6756.  
  6757.  
  6758.  
  6759.  
  6760.  
  6761.  
  6762.  
  6763.  
  6764.  
  6765.  
  6766.  
  6767.  
  6768.           Chapter II,  format design                                   page 88
  6769.           Chapter II,  format design                                   page 88
  6770.  
  6771.  
  6772.  
  6773.  
  6774.  
  6775.  
  6776.  
  6777.  
  6778.  
  6779.  
  6780.  
  6781.  
  6782.  
  6783.  
  6784.           OASIS Evaluation Reference Manual
  6785.           OASIS Evaluation Reference Manual
  6786.  
  6787.  
  6788.                                   Monochrome Attributes
  6789.                                   Monochrome Attributes
  6790.                        
  6791.  
  6792.           Normal: The way the field should appear if it is neither 'active' nor
  6793.           Normal
  6794.           'selectedg.  The  possible  choices  are  white characters on a black
  6795.           background  (Norm)  or  white  intensified  characters   on  a  black
  6796.           background (Intens). The default is 'Norm'.
  6797.  
  6798.  
  6799.  
  6800.           Selected:  The  way  the  field  should look if it is 'Selected' (see
  6801.           Selected
  6802.           above). The possible choices are:
  6803.              Invert  : Black text on white background.
  6804.              Underl  : Text underlined.
  6805.              Intens  : Intensified textn
  6806.              Marked  : Two triangles are displayed to the left and the
  6807.                        right of the field.
  6808.  
  6809.  
  6810.           Combinations of above  attributes  are  possible  with  the following
  6811.           exceptions:
  6812.                Invert and Underline are exclusive.
  6813.                Invert and Intensified result in Invert only.
  6814.  
  6815.  
  6816.           Active: The  way the  field should be highlighted if the cursor is in
  6817.           Active
  6818.           it. Possible choices are:
  6819.  
  6820.              Invert  :   The field is inverted.
  6821.              Underl  :   Underlined text.
  6822.              Intens  :   Intensified text.
  6823.              Marked  :   Two blinking triangles are  displayed to  the left and
  6824.                          the right of the field.
  6825.              Blink   :   The field blinks.
  6826.  
  6827.  
  6828.           Combinations  of  the  above  attributes  are  possible with the same
  6829.         | exceptions as the ones mentioned for  the Selected  attributes. Since
  6830.         | the Active  attributes are  just 'added'  if the field becomes active
  6831.           (for example, a constant can be both 'selected'  and 'activeg  at the
  6832.           same time)  careful consideration  should be  given the question what
  6833.           combination of  attributes should  be used.  If for  example the same
  6834.           attributes are choosen for both 'active' and 'selected' it may not be
  6835.           possible to see, in  which  field  the  cursor  is  (in  the  case of
  6836.           'marked', there  is a  differentiation because the triangles blink if
  6837.           the field is active). In addition, restrictions apply to the combined
  6838.           use of  'Invert' together with 'Underline' or 'Intens'. The result is
  6839.           always 'Invert' only. 
  6840.  
  6841.  
  6842.  
  6843.           Chapter II,  format design                                   page 89
  6844.           Chapter II,  format design                                   page 89
  6845.  
  6846.  
  6847.  
  6848.  
  6849.  
  6850.  
  6851.  
  6852.  
  6853.  
  6854.  
  6855.  
  6856.  
  6857.  
  6858.  
  6859.           OASIS Evaluation Reference Manual
  6860.           OASIS Evaluation Reference Manual
  6861.  
  6862.  
  6863.                                     Color Attributes
  6864.                                     Color Attributes
  6865.  
  6866.  
  6867.           The Color Attributes are less complicated to use  than the monochrome
  6868.           ones. For  both 'Normal'  and 'Selected' there is a choice of one out
  6869.           of eight background colors and one  out of  sixteen foreground (text)
  6870.           colors.
  6871.           All available colors are listed in Appendix B.
  6872.  
  6873.           As  far  as  the  'Active'  attribute  is  concerned  there are three
  6874.           different options.
  6875.  
  6876.           Invert:  The  field  colors  are  inverted,  i.e  background  becomes
  6877.           Invert:
  6878.           foreground  and  vice  versa.  Since  intensified  background  is not
  6879.           possible, these colors are  replaced by  their non  intensified (i.e.
  6880.           darker) counterpart.
  6881.  
  6882.           Blink : The field is made blinking.
  6883.           Blink :
  6884.  
  6885.           Intens: The text is displayed intensified. 
  6886.           Intens:
  6887.  
  6888.           The combination  of the  above options  is possible  but it should be
  6889.           considered that the 'Intens'  attribute  is  only  meaningful  if the
  6890.           foreground  colors  choosen  for  'Normal'  and  'Selected'  are  non
  6891.           intensified ones, otherwise it won't be visible.
  6892.  
  6893.  
  6894.  
  6895.  
  6896.  
  6897.  
  6898.  
  6899.  
  6900.  
  6901.  
  6902.  
  6903.  
  6904.  
  6905.  
  6906.  
  6907.  
  6908.  
  6909.  
  6910.  
  6911.  
  6912.  
  6913.  
  6914.  
  6915.  
  6916.  
  6917.           Chapter II,  format design                                   page 90
  6918.           Chapter II,  format design                                   page 90
  6919.  
  6920.  
  6921.  
  6922.  
  6923.  
  6924.  
  6925.  
  6926.  
  6927.  
  6928.  
  6929.  
  6930.  
  6931.  
  6932.  
  6933.           OASIS Evaluation Reference Manual
  6934.           OASIS Evaluation Reference Manual
  6935.  
  6936.  
  6937.                                  Global Specifications 
  6938.                                  Global Specifications 
  6939.                        
  6940.  
  6941.                                   & Control Parameters
  6942.                                   & Control Parameters
  6943.  
  6944.  
  6945.           Global Specifications
  6946.           Global Specifications
  6947.  
  6948.  
  6949.           Cursor Home:
  6950.           Cursor Home:
  6951.           System generated and not changeable. The first cursor accessible (non
  6952.           Output) field on the format.
  6953.  
  6954.  
  6955.           Input Message Field:
  6956.           Input Message Field:
  6957.           The  field  where  all  Input  Messages  are  to  be displayed (Input
  6958.           Messages are the messages  specified  for  single  fields,  see under
  6959.           'Field Specifications'  for details).  If this  Parameter is set to 0
  6960.           (zero)  no  input  messages  are  displayed.  Note  that  for obvious
  6961.           reasons, the field specified for input messages should be an 'Output'
  6962.           field, i.e. not be accessible by the cursor.
  6963.           The default for this parameter is 0.
  6964.  
  6965.  
  6966.           Error Message Field:
  6967.           Error Message Field:
  6968.           The field where all (system as well as user generated) error messages
  6969.         | are  displayed.  Everything  said  above  for the Input Message Field
  6970.           applies here as well. If this field  is  set  to  0  (zero)  no error
  6971.           messages are  displayed. There  are no  restrictions to  use the same
  6972.           field for both error and input messages.
  6973.           The default is 0 (zero) i.e no error messages are displayed.
  6974.  
  6975.  
  6976.           Help Format:
  6977.           Help Format:
  6978.         | The name of the  format  to  be  displayed  if  the  Format  Help Key
  6979.           (usually 'F1') is pressed. The default is no help format.
  6980.  
  6981.  
  6982.           Color Foreground:
  6983.           Color Foreground:
  6984.           One out of sixteen colors in which the text on the format (except for
  6985.           the fields) is to be displayed. This option is only meaningful in the
  6986.           case of Color screens. On monochrome screens, the foreground color is
  6987.           always white, non intensified.
  6988.  
  6989.  
  6990.           Color Background:
  6991.           Color Background:
  6992.           One out of colors in which the format background (except for the 
  6993.           fields) is to be displayed.   For    monochrome  screens,  the format
  6994.           background is always black.
  6995.  
  6996.  
  6997.  
  6998.           Chapter II,  format design                                   page 91
  6999.           Chapter II,  format design                                   page 91
  7000.  
  7001.  
  7002.  
  7003.  
  7004.  
  7005.  
  7006.  
  7007.  
  7008.  
  7009.  
  7010.  
  7011.  
  7012.  
  7013.  
  7014.           OASIS Evaluation Reference Manual
  7015.           OASIS Evaluation Reference Manual
  7016.  
  7017.  
  7018.           Cursor Wraparound:
  7019.           Cursor Wraparound:
  7020.         | If Cursor  Wraparound is  disabled, pressing  Right or Down while the
  7021.         | cursor is in the last field or Left or Up while the cursor is  in the
  7022.           first field causes a beep. Otherwise, the cursor would be advanced to
  7023.           the first or last field, respectively. 
  7024.  
  7025.  
  7026.                        
  7027.           Note:   Alternatively, Cursor  Wraparound can  also be  disabled on a
  7028.           Note:
  7029.           global basis,  i.e effective  for all formats in a program by setting
  7030.           the SCL Constant 'No_Wrap'  to TRUE.  Refer to  the SCL  part of this
  7031.               SCL                                             SCL
  7032.           manual for more details. 
  7033.  
  7034.  
  7035.           Format Abort Ok
  7036.           Format Abort Ok
  7037.         | If  this  option  is  set  to  'Yes', pressing the F10 key causes the
  7038.         | format to be unconditionally terminated, otherwise the Abort function
  7039.           is disabled for this format. 
  7040.  
  7041.  
  7042.  
  7043.  
  7044.  
  7045.  
  7046.  
  7047.  
  7048.  
  7049.  
  7050.  
  7051.  
  7052.  
  7053.  
  7054.  
  7055.  
  7056.  
  7057.  
  7058.  
  7059.  
  7060.  
  7061.  
  7062.  
  7063.  
  7064.  
  7065.  
  7066.  
  7067.  
  7068.  
  7069.  
  7070.  
  7071.  
  7072.  
  7073.           Chapter II,  format design                                   page 92
  7074.           Chapter II,  format design                                   page 92
  7075.  
  7076.  
  7077.  
  7078.  
  7079.  
  7080.  
  7081.  
  7082.  
  7083.  
  7084.  
  7085.  
  7086.  
  7087.  
  7088.  
  7089.           OASIS Evaluation Reference Manual
  7090.           OASIS Evaluation Reference Manual
  7091.  
  7092.  
  7093.                                    User Function Keys
  7094.                                    User Function Keys
  7095.  
  7096.  
  7097.           The  User  Function  Key  specifications control SCL's user interrupt
  7098.                                                            SCL's
  7099.           system. This facility allows to  invoke  user  written  routines upon
  7100.           certain occasions while the format is being handled by SCL routines.
  7101.                                                                  SCL
  7102.           Details and  examples on how to use them can be found in both the SCL
  7103.                                                                             SCL
  7104.           part of this manual and in Appendix A. 
  7105.           In principle they work as follows: 
  7106.           When  a  specified   condition   occurs,      the   SCL     procedure
  7107.                                                               SCL
  7108.           'Handle_format'  notifies  an  external  procedure  and  gives it the
  7109.           choice to do whatever it is intended for (like a  special input check
  7110.           for example). 
  7111.           This external  procedure can also return a result indicating an error
  7112.           or a  exception to  cause 'Handle_format'  to proceed  in the desired
  7113.           way.
  7114.  
  7115.  
  7116.           By default,  i.e. without  the need  to be  explicitly specified, SCL
  7117.                                                                             SCL
  7118.           allows you to invoke external  procedures  whenever  a  new  field is
  7119.           entered with the cursor, when it is being left and when the format is
  7120.           due to be exited. 
  7121.  
  7122.  
  7123.           Beside what  is mentioned  above it  is possible  to specify optional
  7124.         | User Function  Keys for  any format. User Function keys can be any of
  7125.           the ten  actual Function keys (F1 to F10) and additionally to this up
  7126.           to ten other keyboard keys. 
  7127.  
  7128.  
  7129.           F1 through F10:
  7130.           F1 through F10:
  7131.           If selected,  causes 'Handle_format' to transfer control whenever the
  7132.           corresponding function key has been pressed. There are  numerous uses
  7133.           for these  Interrupts like  the initiation of program functions or to
  7134.           temporarily disable SCL functions like 'Help' etc.
  7135.                               SCL
  7136.  
  7137.  
  7138.           Remaining fields:
  7139.           Remaining fields:
  7140.           Up to ten different keyboard keys  can be  defined per  format which,
  7141.           when  pressed,  cause  'Handle_format' to transfer control. 'Keyboard
  7142.           keys' in this context can also be combinations like 'CNTRL-LEFT' etc.
  7143.         | To define a key  as a  User Function  move the  cursor to  one of the
  7144.         | fields containing  the text  '<deleted>' and press Return. Then press
  7145.         | the key  or key  combination you  want to  specify. To  delete a User
  7146.         | function Key  specification, just  position the  cursor on it and hit
  7147.         | Return.
  7148.         |  
  7149.  
  7150.  
  7151.  
  7152.           Chapter II,  format design                                   page 93
  7153.           Chapter II,  format design                                   page 93
  7154.  
  7155.  
  7156.  
  7157.  
  7158.  
  7159.  
  7160.  
  7161.  
  7162.  
  7163.  
  7164.  
  7165.  
  7166.  
  7167.  
  7168.           OASIS Evaluation Reference Manual
  7169.           OASIS Evaluation Reference Manual
  7170.  
  7171.  
  7172.                                     The Test Feature
  7173.                                     The Test Feature
  7174.  
  7175.  
  7176.           Introduction
  7177.           Introduction
  7178.  
  7179.  
  7180.           SFD allows new formats to be  tested without  having to  write a user
  7181.           SFD
  7182.         | program. With  very few limitations, formats under Test react exactly
  7183.           as they later on  will in  a user  program. This  even includes input
  7184.           checks etc. 
  7185.           While a format is being tested, it is possible to modify most of it's
  7186.           specifications and  instantly observe  the results  of these changes,
  7187.           thus allowing for a very interactive way of developing formats.
  7188.  
  7189.  
  7190.  
  7191.                                      The local Menu
  7192.                                      The local Menu
  7193.  
  7194.  
  7195.         | All  functions  to  modify  Format  Specifications  during  Test  are
  7196.           available through a local menu which can be called up by pressing key
  7197.           'F9'. 
  7198.  
  7199.           It offers the following choices:
  7200.  
  7201.  
  7202.           Change Field Specifications/Active Field
  7203.           Change Field Specifications/Active Field
  7204.           Allows  to  change  the  specifications  of  the  field the cursor is
  7205.           currently in. 
  7206.  
  7207.  
  7208.                        
  7209.           Change Field Specification/Other Field
  7210.           Change Field Specification/Other Field
  7211.           This Option is mainly  intended but  not limited  to allow  to change
  7212.           'Output' fields. If choosen, SFD will ask for the number of the field
  7213.                                        SFD
  7214.           whose specifications are to be changed.
  7215.  
  7216.  
  7217.                        
  7218.           Change Global Colors/Attributes
  7219.           Change Global Colors/Attributes
  7220.           Allows to change Colors or attributes of all fields of  a type  to be
  7221.         | specified (Variable,  Constant or Output) on the format under Test in
  7222.           one go.
  7223.  
  7224.  
  7225.                        
  7226.           Change Format/Control Specifications
  7227.           Change Format/Control Specifications
  7228.           Allows to change the Global Specifications  as well  as the Interrupt
  7229.           Parameters.
  7230.  
  7231.  
  7232.  
  7233.  
  7234.           Chapter II,  format design                                   page 94
  7235.           Chapter II,  format design                                   page 94
  7236.  
  7237.  
  7238.  
  7239.  
  7240.  
  7241.  
  7242.  
  7243.  
  7244.  
  7245.  
  7246.  
  7247.  
  7248.  
  7249.  
  7250.           OASIS Evaluation Reference Manual
  7251.           OASIS Evaluation Reference Manual
  7252.  
  7253.  
  7254.                                    System Limitations
  7255.                                    System Limitations
  7256.  
  7257.  
  7258.           The SFD Format Test Feature has a few limitations. These are:
  7259.               SFD
  7260.  
  7261.  
  7262.           Speed
  7263.           Speed
  7264.  
  7265.           Since rather than reading from memory as it normally would be done by
  7266.           SCL much information has to be read from disk, thus  slowing down the
  7267.           SCL
  7268.         | operation of a format under Test quite considerably.
  7269.  
  7270.  
  7271.           Help Formats
  7272.           Help Formats
  7273.  
  7274.           It  is  not  possible  to  access  the Help formats specified for the
  7275.         | format under Test via F1 and F2. They  have to  be tested seperately.
  7276.         | F1  and  F2  display  SFD's  own  help  information  relative to Test
  7277.                                 SFD's
  7278.           operations.
  7279.  
  7280.  
  7281.           Format Specifications
  7282.           Format Specifications
  7283.  
  7284.         | Some specifications can not  be altered  during Test.  These include:
  7285.           Field  Type,  Group  from/to  and  Input and error message fields. In
  7286.           order to change these specifications the format has to be loaded into
  7287.         | the Layout Editor and the changes have to be performed there. 
  7288.  
  7289.              
  7290.  
  7291.  
  7292.  
  7293.  
  7294.  
  7295.  
  7296.  
  7297.  
  7298.  
  7299.  
  7300.  
  7301.  
  7302.  
  7303.  
  7304.  
  7305.  
  7306.  
  7307.  
  7308.  
  7309.  
  7310.  
  7311.           Chapter II,  format design                                   page 95
  7312.           Chapter II,  format design                                   page 95
  7313.  
  7314.  
  7315.  
  7316.  
  7317.  
  7318.  
  7319.  
  7320.  
  7321.  
  7322.  
  7323.  
  7324.  
  7325.  
  7326.  
  7327.           OASIS Evaluation Reference Manual
  7328.           OASIS Evaluation Reference Manual
  7329.  
  7330.  
  7331.  
  7332.  
  7333.  
  7334.  
  7335.  
  7336.  
  7337.  
  7338.  
  7339.  
  7340.  
  7341.  
  7342.  
  7343.  
  7344.  
  7345.  
  7346.  
  7347.  
  7348.  
  7349.                           This Page is intentionally left blank
  7350.  
  7351.  
  7352.  
  7353.  
  7354.  
  7355.  
  7356.  
  7357.  
  7358.  
  7359.  
  7360.  
  7361.  
  7362.  
  7363.  
  7364.  
  7365.  
  7366.  
  7367.  
  7368.  
  7369.  
  7370.  
  7371.  
  7372.  
  7373.  
  7374.  
  7375.  
  7376.  
  7377.  
  7378.  
  7379.  
  7380.  
  7381.           Chapter II,  format design                                   page 96
  7382.           Chapter II,  format design                                   page 96
  7383.  
  7384.  
  7385.  
  7386.  
  7387.  
  7388.  
  7389.  
  7390.  
  7391.  
  7392.  
  7393.  
  7394.  
  7395.  
  7396.  
  7397.           OASIS Evaluation Reference Manual
  7398.           OASIS Evaluation Reference Manual
  7399.  
  7400.  
  7401.  
  7402.  
  7403.  
  7404.  
  7405.  
  7406.  
  7407.  
  7408.  
  7409.  
  7410.  
  7411.  
  7412.  
  7413.  
  7414.  
  7415.  
  7416.  
  7417.  
  7418.  
  7419.  
  7420.  
  7421.  
  7422.                                        Chapter III
  7423.                                        Chapter III
  7424.                        
  7425.  
  7426.  
  7427.  
  7428.  
  7429.  
  7430.  
  7431.  
  7432.  
  7433.  
  7434.  
  7435.  
  7436.  
  7437.  
  7438.  
  7439.  
  7440.  
  7441.  
  7442.  
  7443.  
  7444.  
  7445.  
  7446.  
  7447.  
  7448.  
  7449.  
  7450.  
  7451.  
  7452.  
  7453.  
  7454.  
  7455.  
  7456.  
  7457.  
  7458.  
  7459.  
  7460.  
  7461.  
  7462.  
  7463.  
  7464.  
  7465.  
  7466.  
  7467.  
  7468.           OASIS Evaluation Reference Manual
  7469.           OASIS Evaluation Reference Manual
  7470.  
  7471.  
  7472.  
  7473.  
  7474.  
  7475.  
  7476.  
  7477.  
  7478.  
  7479.  
  7480.  
  7481.  
  7482.  
  7483.  
  7484.  
  7485.  
  7486.  
  7487.  
  7488.  
  7489.  
  7490.  
  7491.                           This Page is intentionally left blank
  7492.  
  7493.  
  7494.  
  7495.  
  7496.  
  7497.  
  7498.  
  7499.  
  7500.  
  7501.  
  7502.  
  7503.  
  7504.  
  7505.  
  7506.  
  7507.  
  7508.  
  7509.  
  7510.  
  7511.  
  7512.  
  7513.  
  7514.  
  7515.  
  7516.  
  7517.  
  7518.  
  7519.  
  7520.  
  7521.  
  7522.           Chapter III, Screen Control Language                         page 98
  7523.           Chapter III, Screen Control Language                         page 98
  7524.  
  7525.  
  7526.  
  7527.  
  7528.  
  7529.  
  7530.  
  7531.  
  7532.  
  7533.  
  7534.  
  7535.  
  7536.  
  7537.  
  7538.           OASIS Evaluation Reference Manual
  7539.           OASIS Evaluation Reference Manual
  7540.  
  7541.  
  7542.  
  7543.              
  7544.             
  7545.  
  7546.  
  7547.  
  7548.  
  7549.  
  7550.  
  7551.  
  7552.  
  7553.  
  7554.  
  7555.  
  7556.  
  7557.  
  7558.  
  7559.  
  7560.  
  7561.                                  Screen Control Language
  7562.                                  Screen Control Language
  7563.                        
  7564.  
  7565.                        
  7566.  
  7567.                                         ( S C L )
  7568.                                         ( S C L )
  7569.                                                  
  7570.  
  7571.  
  7572.  
  7573.  
  7574.  
  7575.  
  7576.  
  7577.  
  7578.  
  7579.  
  7580.  
  7581.  
  7582.  
  7583.  
  7584.  
  7585.  
  7586.  
  7587.  
  7588.  
  7589.  
  7590.  
  7591.  
  7592.  
  7593.  
  7594.  
  7595.  
  7596.  
  7597.  
  7598.  
  7599.           Chapter III, Screen Control Language                         page 99
  7600.           Chapter III, Screen Control Language                         page 99
  7601.  
  7602.  
  7603.  
  7604.  
  7605.  
  7606.  
  7607.  
  7608.  
  7609.  
  7610.  
  7611.  
  7612.  
  7613.  
  7614.  
  7615.           OASIS Evaluation Reference Manual
  7616.           OASIS Evaluation Reference Manual
  7617.  
  7618.  
  7619.                                       Introduction
  7620.                                       Introduction
  7621.                                       ____________
  7622.  
  7623.  
  7624.  
  7625.  
  7626.  
  7627.                                The Screen Control Language
  7628.                                The Screen Control Language
  7629.  
  7630.  
  7631.  
  7632.           SCL  is  accommodated  in  several  TURBO PASCAL Source Library files
  7633.           SCL
  7634.           which must  be 'included'  in your  application programs  in order to
  7635.           access the constructs they contain.
  7636.  
  7637.           The following  is a functional description of all relevant constructs
  7638.         | contained in these Include Files. 
  7639.  
  7640.           For more details on SCL, including explanations and samples available
  7641.                               SCL
  7642.           in Appendix A. 
  7643.  
  7644.            
  7645.  
  7646.  
  7647.  
  7648.  
  7649.  
  7650.  
  7651.  
  7652.  
  7653.  
  7654.  
  7655.  
  7656.  
  7657.  
  7658.  
  7659.  
  7660.  
  7661.  
  7662.  
  7663.  
  7664.  
  7665.  
  7666.  
  7667.  
  7668.  
  7669.  
  7670.  
  7671.  
  7672.  
  7673.  
  7674.           Chapter III, Screen Control Language                         page 100
  7675.           Chapter III, Screen Control Language                         page 100
  7676.  
  7677.  
  7678.  
  7679.  
  7680.  
  7681.  
  7682.  
  7683.  
  7684.  
  7685.  
  7686.  
  7687.  
  7688.  
  7689.  
  7690.           OASIS Evaluation Reference Manual
  7691.           OASIS Evaluation Reference Manual
  7692.  
  7693.  
  7694.                                         SCL Files
  7695.                                         SCL Files
  7696.  
  7697.           The following is a brief description of all SCL files.
  7698.                                                       SCL
  7699.  
  7700.  
  7701.           SCL.TPU : 
  7702.           SCL.TPU : 
  7703.  
  7704.           Contains all SCL definitions and routines. All elements of SCL can be
  7705.                        SCL
  7706.           accessed from your Turbo Pascal 4  program by  specifying SCL  in the
  7707.           USES statement. 
  7708.  
  7709.           Example:
  7710.           Example
  7711.  
  7712.           USES CRT,SCL,PRINTER;
  7713.  
  7714.  
  7715.  
  7716.                        
  7717.           SCL.ERR : 
  7718.           SCL.ERR : 
  7719.  
  7720.           This is a basic Error Message File for your programs and contains all
  7721.           SCL internal error messages.  Its  use  is  explained  later  in this
  7722.           manual.
  7723.  
  7724.  
  7725.  
  7726.  
  7727.  
  7728.  
  7729.  
  7730.  
  7731.  
  7732.  
  7733.  
  7734.  
  7735.  
  7736.  
  7737.  
  7738.  
  7739.  
  7740.  
  7741.  
  7742.  
  7743.  
  7744.  
  7745.  
  7746.  
  7747.  
  7748.  
  7749.  
  7750.  
  7751.           Chapter III, Screen Control Language                         page 101
  7752.           Chapter III, Screen Control Language                         page 101
  7753.  
  7754.  
  7755.  
  7756.  
  7757.  
  7758.  
  7759.  
  7760.  
  7761.  
  7762.  
  7763.  
  7764.  
  7765.  
  7766.  
  7767.           OASIS Evaluation Reference Manual
  7768.           OASIS Evaluation Reference Manual
  7769.  
  7770.  
  7771.                                 SCL - Global Declarations
  7772.                                 SCL - Global Declarations
  7773.  
  7774.  
  7775.                                  General
  7776.                                  General
  7777.  
  7778.  
  7779.         | Many  of  SCL's  Global  Constants  are  actually  declared  as typed
  7780.                            Global  Constants
  7781.         | constants.
  7782.           This was done to allow their alteration during program runtime. 
  7783.         | Despite all their advantages,  Typed Constants  in TURBO  PASCAL also
  7784.           have one slight disadvantage:
  7785.            
  7786.           Since  they  are  are  only  initialized  once,  i.e at the time  the
  7787.           program is  loaded into  memory, irritating  effects can  occur if an
  7788.           application  program  is  compiled  to memory and afterwards run from
  7789.           there more than once. 
  7790.           For this reason it is recommended to compile programs using  SCL to a
  7791.                                                                        SCL
  7792.           '.EXE' file on disk in order to test them.
  7793.  
  7794.            
  7795.         | The  following  chapters  describe most  of  the  Global Declarations
  7796.         | forming  part  of  SCL,  starting  with  the  Global  Constants   and
  7797.         | Variables and  followed by those  Type declarations which could be of
  7798.           use outside SCL as well. 
  7799.                       SCL
  7800.  
  7801.  
  7802.  
  7803.  
  7804.  
  7805.  
  7806.  
  7807.  
  7808.  
  7809.  
  7810.  
  7811.  
  7812.  
  7813.  
  7814.  
  7815.  
  7816.  
  7817.  
  7818.  
  7819.  
  7820.  
  7821.  
  7822.  
  7823.  
  7824.  
  7825.  
  7826.           Chapter III, Screen Control Language                         page 102
  7827.           Chapter III, Screen Control Language                         page 102
  7828.  
  7829.  
  7830.  
  7831.  
  7832.  
  7833.  
  7834.  
  7835.  
  7836.  
  7837.  
  7838.  
  7839.  
  7840.  
  7841.  
  7842.           OASIS Evaluation Reference Manual
  7843.           OASIS Evaluation Reference Manual
  7844.  
  7845.  
  7846.                                  SCL Control Parameters
  7847.                                  SCL Control Parameters
  7848.  
  7849.           The following parameters define the maximum size of  files etc. Their
  7850.           default settings  are layed  out in  such a  way that  they should be
  7851.           sufficient in most cases.
  7852.  
  7853.           They can cater for up to: 
  7854.  
  7855.                100 Error Messages.
  7856.                400 Field (explanatory) Messages.
  7857.                20  Formats displayed simultaneously.
  7858.  
  7859.           Looking at these figures you can see that only some  special, usually
  7860.           very large applications may require parameter changes.
  7861.  
  7862.           Max_Error_Messages
  7863.           Max_Error_Messages
  7864.           Declaration: 
  7865.           CONST Max_Error_Messages = 100;
  7866.  
  7867.           Explanation:  
  7868.           The highest allowed user message number.
  7869.           This constant  must be  set to  a value  equal to or greater than the
  7870.           number of records in file <workfile>.ERR. The default  setting allows
  7871.           for about 60 additional user messages, since approximately 40 records
  7872.           are already occupied with system error messages.
  7873.  
  7874.           Max_Input_Messages
  7875.           Max_Input_Messages
  7876.           Declaration:
  7877.           CONST Max_Input_Messages         = 400;
  7878.  
  7879.           Explanation:  
  7880.         | Contains the maximum number of Field Messages. 
  7881.           This constant must be set to  a value  equal to  or greater  than the
  7882.           number of  records in  file <workfile>.MSG which can be calculated as
  7883.           follows: (Size of file <workfile>.MSG (in bytes) divided by 71) + 1. 
  7884.  
  7885.           Remark:
  7886.           In order to allow for later changes to your formats it is recommended
  7887.           to increase the minimum number calculated as above by at least 50 %.
  7888.  
  7889.           Max_Heap_Screens
  7890.           Max_Heap_Screens
  7891.           Declaration:
  7892.           CONST Max_Heap_Screens           = 20;
  7893.  
  7894.           Explanation:
  7895.           The maximum  number of  formats which  can be 'stacked' one on top of
  7896.           the other on the display.
  7897.  
  7898.  
  7899.  
  7900.           Chapter III, Screen Control Language                         page 103
  7901.           Chapter III, Screen Control Language                         page 103
  7902.  
  7903.  
  7904.  
  7905.  
  7906.  
  7907.  
  7908.  
  7909.  
  7910.  
  7911.  
  7912.  
  7913.  
  7914.  
  7915.  
  7916.           OASIS Evaluation Reference Manual
  7917.           OASIS Evaluation Reference Manual
  7918.  
  7919.  
  7920.                                        File Names
  7921.                                        File Names
  7922.  
  7923.  
  7924.           The following constants define what file name extensions SCL expects.
  7925.                                                                    SCL
  7926.           While it  is recommended to leave them at their default settings (i.e
  7927.           compatible  with  SFD),  it  is  still  possible  to  change  them if
  7928.           required.  In  this  case  the  files  created by SFD must be renamed
  7929.           before they can be used  with  the  appropriate  application.  In any
  7930.           case, make  sure that  you don't use extensions which do have special
  7931.           meanings in your system like '.BAK'  (backup file)  or '.PAS' (Pascal
  7932.           source file). 
  7933.  
  7934.  
  7935.           Screenfile_Ext
  7936.           Screenfile_Ext
  7937.           Declaration:
  7938.           CONST Screenfile_Ext = '.scs';
  7939.  
  7940.           Explanation:
  7941.           File name  extension used  for the format file. Change if a different
  7942.           extension is desired. 
  7943.  
  7944.  
  7945.           Indexfile_Ext
  7946.           Indexfile_Ext
  7947.           Declaration:
  7948.           CONST Indexfile_Ext = '.sci';
  7949.  
  7950.           Explanation:
  7951.           File name extension to be used for the format index file. Change if a
  7952.           different extension is to be used.
  7953.  
  7954.  
  7955.           Errorfile_Ext
  7956.           Errorfile_Ext
  7957.           Declaration:
  7958.           CONST Errorfile_Ext = '.err';
  7959.  
  7960.           Explanation:
  7961.           File name extension to be used for the file containing the system and
  7962.           user error messages. Change if a different extension is to be used.
  7963.  
  7964.  
  7965.           Messagefile_Ext
  7966.           Messagefile_Ext
  7967.           Declaration:
  7968.           CONST Messagefile_Ext = '.msg';
  7969.  
  7970.           Explanation:
  7971.           File name extension to be used  for  the  file  containing  the field
  7972.           messages. Change if a different extension is to be used.
  7973.  
  7974.  
  7975.  
  7976.           Chapter III, Screen Control Language                         page 104
  7977.           Chapter III, Screen Control Language                         page 104
  7978.  
  7979.  
  7980.  
  7981.  
  7982.  
  7983.  
  7984.  
  7985.  
  7986.  
  7987.  
  7988.  
  7989.  
  7990.  
  7991.  
  7992.           OASIS Evaluation Reference Manual
  7993.           OASIS Evaluation Reference Manual
  7994.  
  7995.                                  Help System Parameters
  7996.                                  Help System Parameters
  7997.  
  7998.           Autohelp_Screen
  7999.           Autohelp_Screen
  8000.           Declaration:
  8001.           CONST Autohelp_Screen = 'autohelp';
  8002.  
  8003.           Explanation:
  8004.         | The name of the format to be used for the Autohelp feature. Change if
  8005.           another format is to be used.
  8006.  
  8007.           Maxerrors
  8008.           Maxerrors
  8009.           Declaration:
  8010.           CONST Maxerrors : INTEGER  = 3;
  8011.  
  8012.           Explanation:
  8013.           If 'Autohelp_Set'  is  true,  this  value  determines  the  number of
  8014.         | consecutive errors before the Autohelp format is displayed. 
  8015.  
  8016.           Auto_Help_Set
  8017.           Auto_Help_Set
  8018.           Declaration:
  8019.           CONST Auto_Help_Set : BOOLEAN  = TRUE;
  8020.  
  8021.           Explanation:
  8022.         | If this parameter is TRUE , the Auto_Help feature is enabled, i.e the
  8023.         | format  specified  as  Autohelp_Screen   is  displayed  automatically
  8024.         | whenever Maxerror  consecutive input  errors have been made. If it is
  8025.         | set to FALSE, the Auto_Help feature is disabled. 
  8026.  
  8027.           Code_Help_Field
  8028.           Code_Help_Field
  8029.           Declaration:
  8030.           CONST Code_Help_Field : INTEGER  = 1060;
  8031.  
  8032.           Explanation:
  8033.         | The key used to display the  Help Format  declared for  the currently
  8034.           active field.
  8035.  
  8036.           Code_Help_Format
  8037.           Code_Help_Format
  8038.           Declaration:
  8039.           CONST Code_Help_Format : INTEGER  = 1059;
  8040.  
  8041.           Explanation:
  8042.         | The key  used to  display the  Help Format declared for the currently
  8043.           active format.
  8044.  
  8045.           Note:  For information on  how  keyboard  keys  are  coded  see under
  8046.           Note:  
  8047.         | Keyboard Key Specifications.
  8048.  
  8049.  
  8050.  
  8051.  
  8052.  
  8053.           Chapter III, Screen Control Language                         page 105
  8054.           Chapter III, Screen Control Language                         page 105
  8055.  
  8056.  
  8057.  
  8058.  
  8059.  
  8060.  
  8061.  
  8062.  
  8063.  
  8064.  
  8065.  
  8066.  
  8067.  
  8068.  
  8069.           OASIS Evaluation Reference Manual
  8070.           OASIS Evaluation Reference Manual
  8071.  
  8072.              
  8073.                                      Beep Parameters
  8074.                                      Beep Parameters
  8075.  
  8076.  
  8077.           The following  parameters allow  to change  pitch and duration of the
  8078.         | Beep, i.e. the sound SCL uses in order to attract the users attention
  8079.                                SCL
  8080.           because of input errors etc. 
  8081.  
  8082.  
  8083.           Beep_Off
  8084.           Beep_Off
  8085.  
  8086.           Declaration: 
  8087.           CONST Beep_Off : BOOLEAN = FALSE;
  8088.  
  8089.           Explanation:
  8090.           If set to TRUE SCL will not 'beep' in case of errors.
  8091.                          SCL
  8092.  
  8093.  
  8094.  
  8095.           Beep_Time
  8096.           Beep_Time
  8097.  
  8098.           Declaration: 
  8099.           CONST Beep_Time : INTEGER  = 3;
  8100.  
  8101.           Explanation:
  8102.           Duration of the 'beep' in clock ticks (55 ms).
  8103.  
  8104.  
  8105.  
  8106.           Beep_Frequency_1
  8107.           Beep_Frequency_1
  8108.  
  8109.           Declaration:
  8110.           CONST Beep_Frequency_1 : INTEGER  = 200;
  8111.  
  8112.           Explanation:
  8113.           First frequency used for the 'beep' sound in hertz.
  8114.           The 'beep' consists out of two alternating frequencies.
  8115.  
  8116.  
  8117.  
  8118.           Beep_Frequency_2
  8119.           Beep_Frequency_2
  8120.  
  8121.           Declaration:
  8122.           CONST Beep_Frequency_2 : INTEGER  = 350;
  8123.  
  8124.           Explanation:
  8125.           Second frequency used for the 'beep' sound in hertz.
  8126.           The 'beep' consists out of two alternating frequencies.
  8127.  
  8128.  
  8129.  
  8130.           Chapter III, Screen Control Language                         page 106
  8131.           Chapter III, Screen Control Language                         page 106
  8132.  
  8133.  
  8134.  
  8135.  
  8136.  
  8137.  
  8138.  
  8139.  
  8140.  
  8141.  
  8142.  
  8143.  
  8144.  
  8145.  
  8146.           OASIS Evaluation Reference Manual
  8147.           OASIS Evaluation Reference Manual
  8148.  
  8149.  
  8150.                                      Message Display
  8151.                                      Message Display
  8152.  
  8153.  
  8154.           The following  two parameters  can be  used to  allow different, user
  8155.           selectable 'Help' levels.
  8156.  
  8157.  
  8158.            
  8159.           Input_Msg_Set
  8160.           Input_Msg_Set
  8161.  
  8162.           Declaration:
  8163.           CONST Input_Msg_Set : BOOLEAN  = TRUE;
  8164.  
  8165.           Explanation:
  8166.         | If set to FALSE, no Field Messages will be displayed.
  8167.           Can be used to suppress explanatory messages with experienced users.
  8168.  
  8169.  
  8170.  
  8171.  
  8172.           Error_Msg_Set
  8173.           Error_Msg_Set
  8174.  
  8175.           Declaration:
  8176.           CONST Error_Msg_Set : BOOLEAN  = TRUE;
  8177.  
  8178.           Explanation:
  8179.           If set to FALSE, no messages  will  be  displayed  in  case  of input
  8180.         | errors. SCL will however still 'beep' as long as Beep_Off is FALSE. 
  8181.                   SCL
  8182.  
  8183.  
  8184.  
  8185.  
  8186.  
  8187.  
  8188.  
  8189.  
  8190.  
  8191.  
  8192.  
  8193.  
  8194.  
  8195.  
  8196.  
  8197.  
  8198.  
  8199.  
  8200.  
  8201.  
  8202.  
  8203.  
  8204.           Chapter III, Screen Control Language                         page 107
  8205.           Chapter III, Screen Control Language                         page 107
  8206.  
  8207.  
  8208.  
  8209.  
  8210.  
  8211.  
  8212.  
  8213.  
  8214.  
  8215.  
  8216.  
  8217.  
  8218.  
  8219.  
  8220.           OASIS Evaluation Reference Manual
  8221.           OASIS Evaluation Reference Manual
  8222.  
  8223.  
  8224.                                     Field Attributes
  8225.                                     Field Attributes
  8226.  
  8227.           The following specifications define the blink frequency for constants
  8228.           (see 'Blink' field attribute) as well  as   what characters  are used
  8229.           for the 'Marked' field attribute.
  8230.  
  8231.  
  8232.           Blink_Count
  8233.           Blink_Count
  8234.  
  8235.           Declaration:
  8236.           CONST Blink_Count : INTEGER  = 0;
  8237.  
  8238.           This count  is incremented each clock tick. A clock tick occurs about
  8239.           18.2 times per second (every 55  ms). Blink_count  can be interogated
  8240.           by user routines. 
  8241.  
  8242.  
  8243.           Timer_Intervall
  8244.           Timer_Intervall
  8245.  
  8246.           Declaration:
  8247.           CONST Timer_Intervall : INTEGER  = 4;
  8248.  
  8249.           Explanation:
  8250.           Used  as  a  delay  for  the field blinking procedure. Determines the
  8251.           delay after which the  fieldcolor  is  inverted  again.  Decrease for
  8252.           faster and increase for slower blinking.
  8253.  
  8254.  
  8255.           Mark_Field_Left
  8256.           Mark_Field_Left
  8257.  
  8258.           Declaration:
  8259.           CONST Mark_Field_Left : Byte = 16;
  8260.  
  8261.           Explanation:
  8262.         | The ASCII  code of the character used as the Mark on the left side of
  8263.           the field (see 'Marked' field attribute). 
  8264.  
  8265.  
  8266.           Mark_Field_Right
  8267.           Mark_Field_Right
  8268.  
  8269.           Declaration:
  8270.           CONST Mark_Field_Right : Byte = 17;
  8271.  
  8272.           Explanation:
  8273.         | The ASCII code of the character used as the Mark on the right side of
  8274.           the field (see 'Marked' field attribute).
  8275.  
  8276.  
  8277.  
  8278.  
  8279.           Chapter III, Screen Control Language                         page 108
  8280.           Chapter III, Screen Control Language                         page 108
  8281.  
  8282.  
  8283.  
  8284.  
  8285.  
  8286.  
  8287.  
  8288.  
  8289.  
  8290.  
  8291.  
  8292.  
  8293.  
  8294.  
  8295.           OASIS Evaluation Reference Manual
  8296.           OASIS Evaluation Reference Manual
  8297.  
  8298.  
  8299.                                    Key Specifications
  8300.                                    Key Specifications
  8301.  
  8302.  
  8303.           The values of all keyboard keys associated with functions are defined
  8304.           as constants in order to be  able to  adapt programs  to non standard
  8305.           keyboards.
  8306.            
  8307.           Their values are calculated as follows:
  8308.  
  8309.                1.   Use  the  decimal  ASCII  code  of  the  key to perform the
  8310.                     appropriate function.
  8311.                2. 
  8312.         |           Add 1000 in case this key creates an extended code,
  8313.                     i.e  one preceeded by an 'ESC' character. 
  8314.  
  8315.  
  8316.  
  8317.           Code_Cancel_Act
  8318.           Code_Cancel_Act
  8319.  
  8320.           Declaration:
  8321.           CONST Code_Cancel_Act : INTEGER  = 1061;
  8322.  
  8323.           Explanation:
  8324.           The key used to cancel a change to  a 'variable'  and to  restore the
  8325.           original content of it (Default:F3). Modify in case you want some key
  8326.           to perform this action.
  8327.  
  8328.  
  8329.  
  8330.           Code_Abort
  8331.           Code_Abort
  8332.  
  8333.           Declaration:
  8334.           CONST Code_Abort : INTEGER  = 1068;
  8335.  
  8336.           Explanation:
  8337.           The the key to unconditionally terminate  the current  format in case
  8338.           the   'Abort   Ok'   attribute   is   set  to  'Yes'  in  its  Global
  8339.           specifications. 
  8340.  
  8341.  
  8342.  
  8343.           Code_Escape
  8344.           Code_Escape
  8345.  
  8346.           Declaration:
  8347.           CONST Code_Escape : INTEGER  = 27;
  8348.  
  8349.           Explanation:
  8350.           The key to terminate a format.
  8351.  
  8352.  
  8353.  
  8354.           Chapter III, Screen Control Language                         page 109
  8355.           Chapter III, Screen Control Language                         page 109
  8356.  
  8357.  
  8358.  
  8359.  
  8360.  
  8361.  
  8362.  
  8363.  
  8364.  
  8365.  
  8366.  
  8367.  
  8368.  
  8369.  
  8370.           OASIS Evaluation Reference Manual
  8371.           OASIS Evaluation Reference Manual
  8372.  
  8373.  
  8374.                               Performing 'Edit' functions  
  8375.                               Performing 'Edit' functions
  8376.  
  8377.  
  8378.           CONST  Code_Home        : INTEGER  = 1071;
  8379.           CONST  Code_Tab         : INTEGER  = 9;
  8380.           CONST  Code_Ctrltab     : INTEGER  = 1116;
  8381.           CONST  Code_Rtab        : INTEGER  = 1015;
  8382.           CONST  Code_Return      : INTEGER  = 13;
  8383.           CONST  Code_Left        : INTEGER  = 1075;
  8384.           CONST  Code_Right       : INTEGER  = 1077;
  8385.           CONST  Code_Down        : INTEGER  = 1080;
  8386.           CONST  Code_Up          : INTEGER  = 1072;
  8387.           CONST  Code_End         : INTEGER  = 1079;
  8388.           CONST  Code_Ins         : INTEGER  = 1082;
  8389.           CONST  Code_Del         : INTEGER  = 1083;
  8390.           CONST  Code_Backspace   : INTEGER  = 8;
  8391.           CONST  Code_Pgup        : INTEGER  = 1073;
  8392.           CONST  Code_Pgdown      : INTEGER  = 1081;
  8393.  
  8394.  
  8395.  
  8396.  
  8397.                                       Function Keys
  8398.                                       Function Keys
  8399.  
  8400.  
  8401.         | The following are the codes of the keys associated with  the Function
  8402.         | Key  Interrupts  (see  'Global  Format  Specifications').  Change  as
  8403.           required for non standard keyboard layouts.
  8404.  
  8405.  
  8406.           CONST  Code_F1          : INTEGER  = 1059;
  8407.           CONST  Code_F2          : INTEGER  = 1060;
  8408.           CONST  Code_F3          : INTEGER  = 1061;
  8409.           CONST  Code_F4          : INTEGER  = 1062;
  8410.           CONST  Code_F5          : INTEGER  = 1063;
  8411.           CONST  Code_F6          : INTEGER  = 1064;
  8412.           CONST  Code_F7          : INTEGER  = 1065;
  8413.           CONST  Code_F8          : INTEGER  = 1066;
  8414.           CONST  Code_F9          : INTEGER  = 1067;
  8415.           CONST  Code_F10         : INTEGER  = 1068;
  8416.  
  8417.  
  8418.  
  8419.  
  8420.  
  8421.  
  8422.  
  8423.  
  8424.  
  8425.  
  8426.           Chapter III, Screen Control Language                         page 110
  8427.           Chapter III, Screen Control Language                         page 110
  8428.  
  8429.  
  8430.  
  8431.  
  8432.  
  8433.  
  8434.  
  8435.  
  8436.  
  8437.  
  8438.  
  8439.  
  8440.  
  8441.  
  8442.           OASIS Evaluation Reference Manual
  8443.           OASIS Evaluation Reference Manual
  8444.  
  8445.  
  8446.                                Nationalisation Parameters
  8447.                                Nationalisation Parameters
  8448.  
  8449.  
  8450.           The following declarations determine the message  to be  displayed in
  8451.           case  of  a  fatal  program  abort initiated by SCL. Change for other
  8452.           languages as required.
  8453.  
  8454.           CONST Fatal_Msg_1 = 'FATAL SCL ERROR: ';
  8455.           CONST Fatal_Msg_2 = 'ERROR NR: ';
  8456.           CONST Fatal_Msg_3 = 'PROGRAM ABORTED.';
  8457.  
  8458.  
  8459.         | The following two  parameters  define  the  valid  input  for Boolean
  8460.         | Variables. Change according to the language used.
  8461.  
  8462.  
  8463.           Code_Yes
  8464.           Code_Yes
  8465.  
  8466.           Declaration:
  8467.           CONST Code_Yes : INTEGER  = 89;
  8468.  
  8469.           Explanation:
  8470.           The first  letter of  the word  meaning 'Yes' in upper case (Y). Used
  8471.         | for Boolean Fields. Change for other languages.
  8472.  
  8473.  
  8474.           Code_No
  8475.           Code_No
  8476.  
  8477.           Declaration:
  8478.           CONST Code_No : INTEGER  = 78;
  8479.  
  8480.           Explanation:
  8481.           The first letter of the word meaning 'No' in upper case (N). Used for
  8482.         | Boolean Fields .Change for other languages.
  8483.  
  8484.  
  8485.  
  8486.                               Character sets for Variables
  8487.                               Character sets for Variables
  8488.  
  8489.  
  8490.           The following constants define the characters permitted to be entered
  8491.           into the  various types  of Variable  fields. Change  as required for
  8492.           national character sets. 
  8493.  
  8494.  
  8495.           CONST  Anything_Set  :  SET  OF Byte = [1..6,8,14..27,32..255]; CONST
  8496.           Integer_Set        : SET OF Byte = [32,43,45,48..57];
  8497.           CONST Real_Set     : SET OF Byte = [32,43,45,46,48..57];
  8498.           CONST Alpha_Set    : SET OF Byte = [32,65..90,97..122,128..167]; 
  8499.  
  8500.           Chapter III, Screen Control Language                         page 111
  8501.           Chapter III, Screen Control Language                         page 111
  8502.  
  8503.  
  8504.  
  8505.  
  8506.  
  8507.  
  8508.  
  8509.  
  8510.  
  8511.  
  8512.  
  8513.  
  8514.  
  8515.  
  8516.           OASIS Evaluation Reference Manual
  8517.           OASIS Evaluation Reference Manual
  8518.  
  8519.  
  8520.                              Country Information Parameters
  8521.                              Country Information Parameters
  8522.  
  8523.           SCL_Country
  8524.           SCL_Country
  8525.  
  8526.           Declaration:
  8527.           CONST Scl_Country : INTEGER = 0;  
  8528.  
  8529.           Explanation:
  8530.           The country information to be used for SCL. If this  parameter is set
  8531.           to  0  (zero)  SCL  uses  the  country  specified  in  the  computers
  8532.           CONFIG.SYS file. If another countries informations are to be used set
  8533.           this constant  to the  appropriate value. (Example : 49 for germany).
  8534.           The country codes available  are described  in your  DOS manual under
  8535.           the COUNTRY command. 
  8536.  
  8537.           SCL interrogates  the Country  informations during initialization and
  8538.           sets up the following variables accordingly: 
  8539.  
  8540.  
  8541.           Country
  8542.           Country
  8543.  
  8544.           Declaration:
  8545.           VAR Country : INTEGER;
  8546.  
  8547.           Explanation:
  8548.           Contains the country code of the country currently being used by SCL.
  8549.                                                                            SCL
  8550.           This  is  either  the  Country  code  specified  in  CONFIG.SYS or if
  8551.           'SCL_Country' (see above) is set to a value other than 0 (zero) it is
  8552.           set equal to this.
  8553.  
  8554.  
  8555.           Date_Format
  8556.           Date_Format
  8557.  
  8558.           Declaration:
  8559.           VAR Date_Format : INTEGER;
  8560.  
  8561.           Explanation:
  8562.           Determines the date format being assumed by SCL's date formatting and
  8563.           check routines. 0 means MMDD and 1 means DDMM format. 
  8564.  
  8565.  
  8566.           Date_Separator
  8567.           Date_Separator
  8568.  
  8569.           Declaration:
  8570.           VAR Date_Separator : CHAR;
  8571.  
  8572.           Explanation:
  8573.           The character to be used as a separator between days, months and year
  8574.           by SCL's date formatting routines. 
  8575.  
  8576.           Chapter III, Screen Control Language                         page 112
  8577.           Chapter III, Screen Control Language                         page 112
  8578.  
  8579.  
  8580.  
  8581.  
  8582.  
  8583.  
  8584.  
  8585.  
  8586.  
  8587.  
  8588.  
  8589.  
  8590.  
  8591.  
  8592.           OASIS Evaluation Reference Manual
  8593.           OASIS Evaluation Reference Manual
  8594.  
  8595.  
  8596.           Time_Separator
  8597.           Time_Separator
  8598.  
  8599.           Declaration:
  8600.           VAR Time_Separator : CHAR;
  8601.  
  8602.           Explanation:
  8603.           The character  to be used as a separator between hours and minutes by
  8604.           SCL's time formatting routines.
  8605.            
  8606.  
  8607.           Currency
  8608.           Currency
  8609.  
  8610.           Declaration:
  8611.           VAR Currency : String10;
  8612.  
  8613.           Explanation:
  8614.           Contains the name or symbol of  the  currency  of  the  country being
  8615.           assumed by SCL (see above). 
  8616.  
  8617.  
  8618.  
  8619.  
  8620.                        
  8621.           Note:   Since SCL's  own date  and time formatting routines are using
  8622.           Note:
  8623.           the  above    informations,  they  automatically  adapt  to different
  8624.           countries and  don't therefore  have to be nationalized manually. The
  8625.           same principle should be applied to user written application programs
  8626.           wherever possible. 
  8627.  
  8628.  
  8629.  
  8630.  
  8631.  
  8632.  
  8633.  
  8634.  
  8635.  
  8636.  
  8637.  
  8638.  
  8639.  
  8640.  
  8641.  
  8642.  
  8643.  
  8644.  
  8645.  
  8646.  
  8647.  
  8648.  
  8649.  
  8650.           Chapter III, Screen Control Language                         page 113
  8651.           Chapter III, Screen Control Language                         page 113
  8652.  
  8653.  
  8654.  
  8655.  
  8656.  
  8657.  
  8658.  
  8659.  
  8660.  
  8661.  
  8662.  
  8663.  
  8664.  
  8665.  
  8666.           OASIS Evaluation Reference Manual
  8667.           OASIS Evaluation Reference Manual
  8668.  
  8669.  
  8670.                                  SCL Control Parameters
  8671.                                  SCL Control Parameters
  8672.  
  8673.  
  8674.           Progpath
  8675.           Progpath
  8676.  
  8677.           Declaration:
  8678.           VAR Progpath : String80;
  8679.  
  8680.           Explanation:
  8681.           Progpath holds the complete path description (including Drive) of the
  8682.           subdirectory which was active  when SCL  was initialized,  i.e at the
  8683.           time,  the  procedure  'Select_Format_File' was called. SCL remembers
  8684.           this subdirectory because it expects to find its files there, even if
  8685.           the active  subdirectory was  changed during  program execution. This
  8686.           variable is quite useful to find other, non SCL files  if they reside
  8687.           in the same directory as the program itself.
  8688.  
  8689.                        
  8690.           Example:
  8691.           Example:
  8692.           Assumed a  program using  SCL is started from directory '\Appl\Mydir'
  8693.           on drive C. If SCL has been initialized then 'Progpath'  contains the
  8694.           following     information:     'C:\Appl\Mydir\'.     The    statement
  8695.           'Assign(myfile,Progpath + Example.Fil)' now will assign the following
  8696.           file name to 'Myfile':
  8697.            
  8698.           c:\Appl\Mydir\Example.Fil 
  8699.  
  8700.                        
  8701.           Note:  The information contained in 'Progpath' must not be changed. 
  8702.           Note:
  8703.  
  8704.  
  8705.  
  8706.                        
  8707.           No_Wrap
  8708.           No_Wrap
  8709.  
  8710.           Declaration:
  8711.           CONST No_Wrap : BOOLEAN = FALSE;
  8712.  
  8713.           Explanation:
  8714.         | If  No_Wrap  is  set  to  false,  the  cursor  wraparound  feature is
  8715.           controlled individually  for  each  format  by  its  global attribute
  8716.           'Wraparound Ok'.
  8717.         | In case  No_Wrap is  set to  TRUE, this will override the appropriate
  8718.           specifications and cursor wraparound  will therefore  be disabled for
  8719.           all formats. 
  8720.           This  Option  has  been  provided  to  adapt SCL written applications
  8721.                                                        SCL
  8722.           easily to 'Mouse' operation. 
  8723.         | If a program is  operated with  a keyboard  Cursor Wraparound  can be
  8724.           very helpful,  especially on  large formats. On the other hand , if a
  8725.         | 'Mouse' is being  used,  Cursor  Wraparound  can  be  very confusing.
  8726.         | No_Wrap allows to choose the optimum in both cases.
  8727.  
  8728.  
  8729.           Chapter III, Screen Control Language                         page 114
  8730.           Chapter III, Screen Control Language                         page 114
  8731.  
  8732.  
  8733.  
  8734.  
  8735.  
  8736.  
  8737.  
  8738.  
  8739.  
  8740.  
  8741.  
  8742.  
  8743.  
  8744.  
  8745.           OASIS Evaluation Reference Manual
  8746.           OASIS Evaluation Reference Manual
  8747.  
  8748.  
  8749.                                      Format Pointers
  8750.                                      Format Pointers
  8751.  
  8752.  
  8753.           S_Ptr
  8754.           S_Ptr
  8755.  
  8756.           Declaration:
  8757.           VAR S_Ptr : INTEGER;
  8758.  
  8759.           Explanation:
  8760.           S_Ptr controls  the format stack and always points to its top, i.e to
  8761.           the currently active format.  If a  format is  loaded to  the Heap by
  8762.         | Select_Format, S_Ptr  is incremented  and once the format is finished
  8763.         | it is decremented by Format_Done.
  8764.         | If S_Ptr is 0 (zero) after Format_Done has decremented it  this means
  8765.           that  all  formats  have  been  finished  and the screen is therefore
  8766.           cleared.
  8767.           Other values indicate that there are still one or more formats on the
  8768.         | stack which have not yet been finished. The one S_Ptr is now pointing
  8769.           to is therefore restored and its handling can  continue where  it was
  8770.           interrupted before.
  8771.  
  8772.  
  8773.                        
  8774.           Note:   For more details on the above matter refer to 'SCL Procedures
  8775.           Note:
  8776.           and functions' later in this manual. 
  8777.  
  8778.  
  8779.  
  8780.           R_Ptr
  8781.           R_Ptr
  8782.  
  8783.           Declaration:
  8784.           VAR R_Ptr : INTEGER;
  8785.  
  8786.           Explanation:
  8787.         | R_Ptr is a Variable mainly used by the routines R_Cont, G_Cont, R_Sel
  8788.         | and G_Sel.
  8789.           It points  to the  format to be read from. R_Ptr is adjusted equal to
  8790.         | S_Ptr by the routine  Handle_Format.  This  means,  R_Ptr  will still
  8791.           point to a format, even if this format is not any longer active. 
  8792.           For a detailed description of this mechanism refer to the description
  8793.           of the above mentioned procedures. 
  8794.  
  8795.  
  8796.  
  8797.  
  8798.  
  8799.  
  8800.  
  8801.  
  8802.  
  8803.  
  8804.           Chapter III, Screen Control Language                         page 115
  8805.           Chapter III, Screen Control Language                         page 115
  8806.  
  8807.  
  8808.  
  8809.  
  8810.  
  8811.  
  8812.  
  8813.  
  8814.  
  8815.  
  8816.  
  8817.  
  8818.  
  8819.  
  8820.           OASIS Evaluation Reference Manual
  8821.           OASIS Evaluation Reference Manual
  8822.  
  8823.  
  8824.           W_Ptr
  8825.           W_Ptr
  8826.  
  8827.           Declaration:
  8828.           VAR W_Ptr : INTEGER;
  8829.  
  8830.           Explanation:
  8831.         | W_Ptr is mainly used  by the  routines W_Cont,  C_Cont and  W_Sel. It
  8832.           points to  the format  currently being  written to  W_Ptr is normally
  8833.         | equal to S_Ptr. This means that Format fields can be  written into as
  8834.         | soon as the format has been loaded by Select_Format and as long as it
  8835.         | has not been finished by Format_Done.
  8836.           For a detailed description of this mechanism see Appendix A. 
  8837.                                                                        
  8838.  
  8839.                        
  8840.  
  8841.                        
  8842.  
  8843.                        
  8844.  
  8845.  
  8846.  
  8847.  
  8848.  
  8849.  
  8850.  
  8851.  
  8852.  
  8853.  
  8854.  
  8855.  
  8856.  
  8857.  
  8858.  
  8859.  
  8860.  
  8861.  
  8862.  
  8863.  
  8864.  
  8865.  
  8866.  
  8867.  
  8868.  
  8869.  
  8870.  
  8871.  
  8872.  
  8873.  
  8874.  
  8875.  
  8876.  
  8877.  
  8878.  
  8879.           Chapter III, Screen Control Language                         page 116
  8880.           Chapter III, Screen Control Language                         page 116
  8881.  
  8882.  
  8883.  
  8884.  
  8885.  
  8886.  
  8887.  
  8888.  
  8889.  
  8890.  
  8891.  
  8892.  
  8893.  
  8894.  
  8895.           OASIS Evaluation Reference Manual
  8896.           OASIS Evaluation Reference Manual
  8897.  
  8898.  
  8899.                        
  8900.  
  8901.                                Format Handling Parameters
  8902.                                Format Handling Parameters
  8903.  
  8904.  
  8905.         | Many of the following parameters are  intended  to  be  used  in User
  8906.         | Interrupt  Procedures  during  format handling. Detailed descriptions
  8907.           and examples of user  interrupt handling  procedures can  be found in
  8908.           Appendix A. 
  8909.  
  8910.  
  8911.           Active_Field
  8912.           Active_Field
  8913.  
  8914.           Declaration:
  8915.           VAR Active_Field : INTEGER;
  8916.  
  8917.           Explanation:
  8918.           Active_Field  always   points  to   the  field   being  processed  by
  8919.         | Handle_Format. If a format has no fields, 'Active_Field'  is equal to
  8920.           0 (zero).
  8921.           This  Variable  can  be  interrogated  by  user procedures, typically
  8922.         | during User Interrupt handling.
  8923.  
  8924.  
  8925.  
  8926.           Char_Code
  8927.           Char_Code
  8928.  
  8929.           Declaration:
  8930.           VAR Char_Code : INTEGER;
  8931.  
  8932.           Explanation:
  8933.           Char_Code  contains  the  input  character  last   fetched  from  the
  8934.           keybuffer by Handle_Format.
  8935.                        Handle_Format
  8936.           User interrupt  procedures can interrogate or modify 'Char_Code'. If,
  8937.           for example in case of a  User Function  Key Interrupt  the statement
  8938.                                     User Function  Key Interrupt
  8939.           'Char_Code:=Code_Noop' is  executed, Handle_Format  then ignores this
  8940.           key. 
  8941.  
  8942.  
  8943.           Glb_Error
  8944.           Glb_Error
  8945.  
  8946.           Declaration:
  8947.           VAR Glb_Error : INTEGER;
  8948.  
  8949.           Explanation:
  8950.           This Variable is used by external procedures normally invoked by User
  8951.                                                                            User
  8952.           Interrupts to return an error description to 'Handle_Format'.
  8953.           Interrupts 
  8954.           In  case  the  external  procedure  returns  a  value  other  than  0
  8955.           'Handle_Format' initiates an error routine using the error message to
  8956.           which 'Glb_Err' points. 
  8957.  
  8958.  
  8959.           Chapter III, Screen Control Language                         page 117
  8960.           Chapter III, Screen Control Language                         page 117
  8961.  
  8962.  
  8963.  
  8964.  
  8965.  
  8966.  
  8967.  
  8968.  
  8969.  
  8970.  
  8971.  
  8972.  
  8973.  
  8974.  
  8975.           OASIS Evaluation Reference Manual
  8976.           OASIS Evaluation Reference Manual
  8977.  
  8978.  
  8979.                                Format Handling Parameters
  8980.                                Format Handling Parameters
  8981.  
  8982.  
  8983.           The  following  variables  are  intended  to  be interrogated by user
  8984.           written SCL interrupt handling  procedures to  determine the  type of
  8985.           interrupt having  occurred. They  are all controlled by the procedure
  8986.           Handle_Format.
  8987.           Handle_Format
  8988.           Refer to Appendix A for more details on how to use them. 
  8989.  
  8990.  
  8991.           User_Function
  8992.           User_Function
  8993.  
  8994.           Declaration:
  8995.           VAR User_Function : BOOLEAN;
  8996.  
  8997.           Explanation:
  8998.           This variable  is  TRUE  whenever  either  a  User  Function  Key was
  8999.                                                         User  Function  Key
  9000.           depressed or  any other  key was hit during input to a field with the
  9001.           'CharInt' parameter set to TRUE. 
  9002.           For details  on  the  above  mentioned  parameters  refer  to 'Format
  9003.           Specifications' in the SFD part of this manual. 
  9004.                                  SFD
  9005.  
  9006.  
  9007.           Begin_Of_Field
  9008.           Begin_Of_Field
  9009.  
  9010.           Declaration:
  9011.           VAR Begin_Of_Field : BOOLEAN;
  9012.  
  9013.           Explanation:
  9014.           This variable is TRUE whenever a new field is due to be entered.
  9015.  
  9016.  
  9017.           End_Of_Field
  9018.           End_Of_Field
  9019.  
  9020.           Declaration:
  9021.           VAR End_Of_Field : BOOLEAN;
  9022.  
  9023.           Explanation:
  9024.           This variable  is TRUE  whenever a  field is due to be left and after
  9025.           all SCL internal checks specified for the appropriate field have been
  9026.           successfully completed. 
  9027.  
  9028.  
  9029.  
  9030.  
  9031.  
  9032.  
  9033.  
  9034.  
  9035.  
  9036.           Chapter III, Screen Control Language                         page 118
  9037.           Chapter III, Screen Control Language                         page 118
  9038.  
  9039.  
  9040.  
  9041.  
  9042.  
  9043.  
  9044.  
  9045.  
  9046.  
  9047.  
  9048.  
  9049.  
  9050.  
  9051.  
  9052.           OASIS Evaluation Reference Manual
  9053.           OASIS Evaluation Reference Manual
  9054.  
  9055.  
  9056.           End_Of_Format
  9057.           End_Of_Format
  9058.  
  9059.           Declaration:
  9060.           VAR End_Of_Format : BOOLEAN;
  9061.  
  9062.           Explanation:
  9063.           This variable  is TRUE  whenever a format is due to be left and after
  9064.           all SCL internal  checks  have  been  successfully  completed. Please
  9065.           notice that the Abort feature bypasses this interrupt.
  9066.                           Abort
  9067.  
  9068.  
  9069.           Checkrequired
  9070.           Checkrequired
  9071.  
  9072.           Declaration:
  9073.           VAR Checkrequired : Boolean;
  9074.  
  9075.           Explanation:
  9076.           At the  time of  a End_Of_Field interrupt, 'checkrequired' is true if
  9077.                              End_Of_Field
  9078.           the field has been  changed and  false if  it hasn't. 'Checkrequired'
  9079.           should be  interrogated by an external field input check procedure to
  9080.           find out  whether  a  check  has  to  be  done  or  not.  For further
  9081.           information see Appendix A under 'User Interrupt Procedures'. 
  9082.  
  9083.  
  9084.  
  9085.  
  9086.  
  9087.  
  9088.  
  9089.  
  9090.  
  9091.  
  9092.  
  9093.  
  9094.  
  9095.  
  9096.  
  9097.  
  9098.  
  9099.  
  9100.  
  9101.  
  9102.  
  9103.  
  9104.  
  9105.  
  9106.  
  9107.  
  9108.  
  9109.  
  9110.           Chapter III, Screen Control Language                         page 119
  9111.           Chapter III, Screen Control Language                         page 119
  9112.  
  9113.  
  9114.  
  9115.  
  9116.  
  9117.  
  9118.  
  9119.  
  9120.  
  9121.  
  9122.  
  9123.  
  9124.  
  9125.  
  9126.           OASIS Evaluation Reference Manual
  9127.           OASIS Evaluation Reference Manual
  9128.  
  9129.  
  9130.                                 Screen related Parameters
  9131.                                 Screen related Parameters
  9132.  
  9133.  
  9134.           The  following  variables  can  be  interrogated by user programs but
  9135.           should always be left unchanged.
  9136.  
  9137.           Screen_Mode
  9138.           Screen_Mode
  9139.  
  9140.           Declaration:
  9141.           VAR Screen_Mode : Byte;
  9142.  
  9143.           Explanation:
  9144.           Screen_Mode holds information about what display adapter the computer
  9145.           is currently  working with  and what  mode it  is in.  Since SCL only
  9146.           works in 80 column text mode, the possible values of  Screen_Mode and
  9147.                                                                 Screen_Mode
  9148.           their meaning are:
  9149.  
  9150.                2 : CG Adapter; 80 Columns Text ; No Color.
  9151.                3 : CG Adapter; 80 Columns Text ; With Color.
  9152.                7 : Monochrome (or Hercules) Adapter; 80 Columns Text.
  9153.  
  9154.  
  9155.  
  9156.           Mono_Adapter
  9157.           Mono_Adapter
  9158.  
  9159.           Declaration:
  9160.           VAR Mono_Adapter : BOOLEAN;
  9161.  
  9162.           Explanation:
  9163.           Mono_Adapter is  true whenever  the computer  is using the Monochrome
  9164.           Adapter.
  9165.           The status of 'Mono_Adapter' decides to which display  memory address
  9166.           SCL writes.
  9167.  
  9168.  
  9169.  
  9170.           Color_True 
  9171.           Color_True
  9172.  
  9173.           Declaration:
  9174.           VAR Color_True : BOOLEAN;
  9175.  
  9176.           Explanation: 
  9177.           Color_True is set if Screen_Mode is equal to 3. 
  9178.                                Screen_Mode
  9179.           The status  of Color_True determines which set of field attributes is
  9180.           to be used.
  9181.  
  9182.  
  9183.  
  9184.  
  9185.  
  9186.           Chapter III, Screen Control Language                         page 120
  9187.           Chapter III, Screen Control Language                         page 120
  9188.  
  9189.  
  9190.  
  9191.  
  9192.  
  9193.  
  9194.  
  9195.  
  9196.  
  9197.  
  9198.  
  9199.  
  9200.  
  9201.  
  9202.           OASIS Evaluation Reference Manual
  9203.           OASIS Evaluation Reference Manual
  9204.  
  9205.  
  9206.                                 Format related Parameters
  9207.                                 Format related Parameters
  9208.  
  9209.  
  9210.           Xoff
  9211.           Xoff
  9212.  
  9213.           Declaration:
  9214.           VAR Xoff : INTEGER;
  9215.  
  9216.           Explanation:
  9217.           Xoff holds the horizontal offset of  the currently  active format. If
  9218.           for example  Xoff is  equal to  5, then  the upper left corner of the
  9219.           currently active format starts at column 6 on the screen.
  9220.  
  9221.  
  9222.  
  9223.           Yoff
  9224.           Yoff
  9225.  
  9226.           Declaration:
  9227.           VAR Yoff : INTEGER;
  9228.  
  9229.           Explanation:
  9230.           Yoff holds the vertical offset of the currently active format. If for
  9231.           example  Yoff  is  equal  to  3,  then  the  upper left corner of the
  9232.           currently active format starts at row 4. 
  9233.  
  9234.  
  9235.  
  9236.  
  9237.  
  9238.  
  9239.  
  9240.  
  9241.  
  9242.  
  9243.  
  9244.  
  9245.  
  9246.  
  9247.  
  9248.  
  9249.  
  9250.  
  9251.  
  9252.  
  9253.  
  9254.  
  9255.  
  9256.  
  9257.  
  9258.  
  9259.           Chapter III, Screen Control Language                         page 121
  9260.           Chapter III, Screen Control Language                         page 121
  9261.  
  9262.  
  9263.  
  9264.  
  9265.  
  9266.  
  9267.  
  9268.  
  9269.  
  9270.  
  9271.  
  9272.  
  9273.  
  9274.  
  9275.           OASIS Evaluation Reference Manual
  9276.           OASIS Evaluation Reference Manual
  9277.  
  9278.  
  9279.                             Background Processing Parameters
  9280.                             Background Processing Parameters
  9281.  
  9282.  
  9283.           LP_Background_Pointer
  9284.           LP_Background_Pointer
  9285.  
  9286.           Declaration:
  9287.           VAR LP_Background_Pointer : POINTER;
  9288.  
  9289.           Explanation:
  9290.           This Variable is a pointer to the procedure to be  invoked by  SCL as
  9291.           the low priority background task.
  9292.  
  9293.  
  9294.           Example:
  9295.           Example
  9296.  
  9297.           The  following  statement  would  cause  SCL  to  perform  Myproc  as
  9298.           background task:
  9299.  
  9300.           LP_Background_Pointer:=@Myproc;
  9301.  
  9302.  
  9303.  
  9304.           HP_Background_Pointer
  9305.           HP_Background_Pointer
  9306.  
  9307.           Declaration:
  9308.           VAR HP_Background_Pointer : POINTER;
  9309.  
  9310.           Explanation:
  9311.           This Variable is a pointer to the procedure to be  invoked by  SCL as
  9312.           the high priority background task.
  9313.  
  9314.  
  9315.           Example:
  9316.           The following  statement would  cause SCL  to perform  Myproc as high
  9317.           priority background task:
  9318.  
  9319.           HP_Background_Pointer:=@Myproc;
  9320.  
  9321.  
  9322.  
  9323.           Note:  SCLs background tasking  feature  is  explained  in  detail in
  9324.           Note:
  9325.           Appendix A.
  9326.            
  9327.  
  9328.  
  9329.  
  9330.  
  9331.  
  9332.  
  9333.  
  9334.           Chapter III, Screen Control Language                         page 122
  9335.           Chapter III, Screen Control Language                         page 122
  9336.  
  9337.  
  9338.  
  9339.  
  9340.  
  9341.  
  9342.  
  9343.  
  9344.  
  9345.  
  9346.  
  9347.  
  9348.  
  9349.  
  9350.           OASIS Evaluation Reference Manual
  9351.           OASIS Evaluation Reference Manual
  9352.  
  9353.  
  9354.                                  Miscellaneous Parameters
  9355.                                  Miscellaneous Parameters
  9356.  
  9357.  
  9358.           Glb_Status
  9359.           Glb_Status
  9360.  
  9361.           Declaration:
  9362.           VAR Glb_Status : INTEGER;
  9363.  
  9364.           Explanation:
  9365.           This   Variable   is   a   status  count  controlling  the  procedure
  9366.           'Handle_Format' and carries Information  about the  present status of
  9367.           the format handling process. There is normally no need to interrogate
  9368.           Glb_Status itself, since SCL provides a comprehensive set  of Boolean
  9369.           Glb_Status               SCL
  9370.           variables  for   this  purpose.  Please  refer  to  'Format  Handling
  9371.           Parameters' for details. 
  9372.           Glb_Status should not be changed by user routines.
  9373.  
  9374.  
  9375.  
  9376.           Glb_Ok
  9377.           Glb_Ok
  9378.  
  9379.           Declaration:
  9380.           VAR Glb_Ok : BOOLEAN;
  9381.  
  9382.           Explanation:
  9383.           Glb_Ok is set to FALSE by some SCL  procedures and  functions to flag
  9384.           errors  during  their  execution.  It  can  be  interrogated  by user
  9385.           programs  to  make  sure  that  these  procedures  did  not encounter
  9386.           problems  during  their  execution.  Details  of the conditions under
  9387.           which Glb_Ok is set to FALSE can be found in the descriptions  of the
  9388.           appropriate procedures and functions. 
  9389.  
  9390.  
  9391.  
  9392.           Format_Aborted
  9393.           Format_Aborted
  9394.  
  9395.           Declaration:
  9396.           VAR Format_Aborted : BOOLEAN;
  9397.  
  9398.           Explanation:
  9399.           A  boolean   variable  which   is  set   to  TRUE  by  the  procedure
  9400.           Handle_Format to indicate to succeding procedures  that a  format has
  9401.           Handle_Format
  9402.           been  terminated  via  the  Abort  key and that they should therefore
  9403.                                       Abort  key
  9404.           ignore the data having been entered  so  far  into  this  format (and
  9405.           which is likely to be incomplete, anyway). 
  9406.  
  9407.  
  9408.  
  9409.  
  9410.  
  9411.           Chapter III, Screen Control Language                         page 123
  9412.           Chapter III, Screen Control Language                         page 123
  9413.  
  9414.  
  9415.  
  9416.  
  9417.  
  9418.  
  9419.  
  9420.  
  9421.  
  9422.  
  9423.  
  9424.  
  9425.  
  9426.  
  9427.           OASIS Evaluation Reference Manual
  9428.           OASIS Evaluation Reference Manual
  9429.  
  9430.  
  9431.                                 Global Type Declarations
  9432.                                 Global Type Declarations
  9433.  
  9434.  
  9435.           The following  SCL TYPE declarations are not limited to SCL, they are
  9436.                              TYPE
  9437.           of rather universal use in a TURBO PASCAL program and can be  used in
  9438.           other  parts   of  the   application  program   as  well.  More  type
  9439.           declarations inluding the declarations for the SCL files can be found
  9440.                                                          SCL
  9441.           in the file SCL.DOC.
  9442.  
  9443.  
  9444.  
  9445.  
  9446.  
  9447.           TYPE String128: STRING[128];
  9448.           TYPE String80 : STRING[80];
  9449.           TYPE String70 : STRING[70];
  9450.           TYPE String40 : STRING[40];
  9451.           TYPE String20 : STRING[20];
  9452.           TYPE String13 : STRING[13];
  9453.           TYPE String10 : STRING[10];
  9454.  
  9455.  
  9456.  
  9457.  
  9458.  
  9459.  
  9460.  
  9461.  
  9462.  
  9463.  
  9464.  
  9465.  
  9466.  
  9467.  
  9468.  
  9469.  
  9470.  
  9471.  
  9472.  
  9473.  
  9474.  
  9475.  
  9476.  
  9477.  
  9478.  
  9479.  
  9480.  
  9481.  
  9482.  
  9483.  
  9484.           Chapter III, Screen Control Language                         page 124
  9485.           Chapter III, Screen Control Language                         page 124
  9486.  
  9487.  
  9488.  
  9489.  
  9490.  
  9491.  
  9492.  
  9493.  
  9494.  
  9495.  
  9496.  
  9497.  
  9498.  
  9499.  
  9500.           OASIS Evaluation Reference Manual
  9501.           OASIS Evaluation Reference Manual
  9502.  
  9503.  
  9504.                                 Procedures and Functions
  9505.                                 Procedures and Functions
  9506.  
  9507.  
  9508.           Introduction
  9509.           Introduction
  9510.  
  9511.  
  9512.           The  following  chapters  describe  all  SCL procedures and functions
  9513.           intended to be accessed by user  programs in  logical sequence. While
  9514.           the routines  described here actually only represent a small fraction
  9515.           of the total number of the  SCL routines  being available,  they will
  9516.           enable you to perform all necessary operations.
  9517.           If  you  are  an  experienced  SCL  programmer,  you may come along a
  9518.           occasion where you want to access  a low  level routine  directly for
  9519.           some reason. 
  9520.           While nothing  is actually  preventing you  from doing so, you should
  9521.           take extreme care not to interfere  with SCL.  In addition,  be aware
  9522.           that most  of these  low level  routines are, usually for performance
  9523.           reasons, not protected against  invalid parameters  and may therefore
  9524.           cause runtime errors if you pass such data to them.
  9525.  
  9526.           As a general rule, don't use any undocumented SCL routines unless you
  9527.           As a general rule, don't use any undocumented SCL routines unless you
  9528.           really know exactly what you are doing.
  9529.           really know exactly what you are doing.
  9530.  
  9531.  
  9532.  
  9533.  
  9534.  
  9535.                        
  9536.           Note:  In Appendix B you can find a complete alphabethic list  of all
  9537.           Note:
  9538.           SCL  routines  together  with  brief  comments  on  their purpose and
  9539.           restrictions. 
  9540.  
  9541.  
  9542.  
  9543.  
  9544.  
  9545.  
  9546.  
  9547.  
  9548.  
  9549.  
  9550.  
  9551.  
  9552.  
  9553.  
  9554.  
  9555.  
  9556.  
  9557.  
  9558.  
  9559.  
  9560.           Chapter III, Screen Control Language                         page 125
  9561.           Chapter III, Screen Control Language                         page 125
  9562.  
  9563.  
  9564.  
  9565.  
  9566.  
  9567.  
  9568.  
  9569.  
  9570.  
  9571.  
  9572.  
  9573.  
  9574.  
  9575.  
  9576.           OASIS Evaluation Reference Manual
  9577.           OASIS Evaluation Reference Manual
  9578.  
  9579.  
  9580.                                 Entering and leaving SCL
  9581.                                 Entering and leaving SCL
  9582.  
  9583.  
  9584.           PROCEDURE Select_Format_File(Filename:String10);
  9585.           PROCEDURE Select_Format_File(Filename:String10);
  9586.  
  9587.           This procedure  should  be  the  first  SCL  routine  performed  in a
  9588.           program.
  9589.           It first  checks the  present screen mode to ensure that it is one of
  9590.           the 80 character text modes. 
  9591.           Then it opens the screenfile indicated by 'Filename' (<Filename>.SCS)
  9592.           as well as the Index file (<Filename>.SCI) belonging to it.
  9593.           The index  file is checked in order to ensure that it is sorted. Then
  9594.           the field message file (<Filename>.MSG and,  if available,  the error
  9595.           message file  (<Filename>.ERR) are loaded into the Heap. Finally some
  9596.           SCL variables are initialized and the screen is cleared.
  9597.           If errors are encountered during this process, SCL  halts the program
  9598.           and displays a message indicating the reason for the abort. 
  9599.  
  9600.  
  9601.                        
  9602.           Note:   The parameter 'Filename' must be specified without extension.
  9603.           Note:
  9604.           It is recommended to set the screen mode  to the  desired value using
  9605.           the Turbo Pascal Construct 'TextMode' before SCL is initialized since
  9606.           SCL aborts the program if the mode is wrong. 
  9607.  
  9608.  
  9609.  
  9610.           PROCEDURE Close_Formats;
  9611.           PROCEDURE Close_Formats;
  9612.  
  9613.           This procedure is the last SCL routine to be performed in a program.
  9614.           It frees all space previously occupied by SCL in the Heap, closes the
  9615.                                                                Heap
  9616.           screen files,  clears the  screen and  finally restores the cursor to
  9617.           its normal shape.
  9618.  
  9619.  
  9620.  
  9621.           On the next page you find an  example  of  the  basic  skeleton  of a
  9622.           program using SCL routines.
  9623.  
  9624.  
  9625.  
  9626.  
  9627.  
  9628.  
  9629.  
  9630.  
  9631.  
  9632.  
  9633.  
  9634.  
  9635.  
  9636.           Chapter III, Screen Control Language                         page 126
  9637.           Chapter III, Screen Control Language                         page 126
  9638.  
  9639.  
  9640.  
  9641.  
  9642.  
  9643.  
  9644.  
  9645.  
  9646.  
  9647.  
  9648.  
  9649.  
  9650.  
  9651.  
  9652.           OASIS Evaluation Reference Manual
  9653.           OASIS Evaluation Reference Manual
  9654.  
  9655.  
  9656.                                Structure of a SCL Program
  9657.                                Structure of a SCL Program
  9658.                                
  9659.  
  9660.  
  9661.           PROGRAM EXAMPLE;
  9662.  
  9663.  
  9664.           USES SCL; {make SCL accessible}
  9665.  
  9666.           {User declarations, 
  9667.            procedures and functions }
  9668.  
  9669.  
  9670.           BEGIN; {of main body of program example}
  9671.  
  9672.            Select_Format_File('exforms'); {This is the first SCL statement
  9673.                                            in any program. It loads the
  9674.                                            necessary files and initializes
  9675.                                            SCL.}
  9676.                 
  9677.  
  9678.              {main program}
  9679.  
  9680.  
  9681.  
  9682.             Close_Formats;  {Last SCL statement in any program. 
  9683.                              It closes all SCL files and clears the screen} 
  9684.  
  9685.           END;  {of main body of program example}
  9686.  
  9687.  
  9688.  
  9689.  
  9690.  
  9691.  
  9692.  
  9693.  
  9694.  
  9695.  
  9696.  
  9697.  
  9698.  
  9699.  
  9700.  
  9701.  
  9702.  
  9703.  
  9704.  
  9705.  
  9706.  
  9707.  
  9708.           Chapter III, Screen Control Language                         page 127
  9709.           Chapter III, Screen Control Language                         page 127
  9710.  
  9711.  
  9712.  
  9713.  
  9714.  
  9715.  
  9716.  
  9717.  
  9718.  
  9719.  
  9720.  
  9721.  
  9722.  
  9723.  
  9724.           OASIS Evaluation Reference Manual
  9725.           OASIS Evaluation Reference Manual
  9726.  
  9727.  
  9728.                              Loading and displaying formats
  9729.                              Loading and displaying formats
  9730.                        
  9731.  
  9732.  
  9733.           PROCEDURE Select_Format(Fname:String10);
  9734.           PROCEDURE Select_Format(Fname:String10);
  9735.  
  9736.           Select_Format is the first procedure to be called in order to display
  9737.           and handle a format. 
  9738.           It reads the description of the format indicated by 'Fname'  from the
  9739.           format file and loads it into memory. 
  9740.           If another  format is currently being processed and not yet finished,
  9741.           its status is saved in the stack for later recovery  once 'Fname' has
  9742.           been finished.
  9743.           Since  'Select_Format'  modifies  the  'W_Ptr'  to  point  to the new
  9744.           format, its fields can now be 'prefilled' if necessary.
  9745.  
  9746.  
  9747.  
  9748.           PROCEDURE Display_Format(Xoffset,Yoffset:INTEGER);
  9749.           PROCEDURE Display_Format(Xoffset,Yoffset:INTEGER);
  9750.  
  9751.           Once a format has been 'selected' using procedure  'Select_Format' it
  9752.           is  displayed  on  the  screen  with 'Display_Format'. In addition to
  9753.           display the format, all its fields are initialized according to their
  9754.           specifications  and  the  cursor  is placed into the first accessible
  9755.           field (Cursor Home). If there is no field  on the  format, the cursor
  9756.           is made invisible.
  9757.           Display_Format  requires  two  parameters:  Xoffset and Yoffset. They
  9758.           define where on the screen the upper left corner of the new format is
  9759.           to  be  positioned.  Both  values  are zero based, since they specify
  9760.           offsets counted from the upper left corner of the screen  rather than
  9761.           absolute positions.  Therefore if for example Xoffset is specified as
  9762.                                                         Xoffset
  9763.           '10' and Yoffset as '0' the format will be displayed  with it's upper
  9764.           left corner at Row 1 (the first row), Column 11. 
  9765.  
  9766.           Example:
  9767.           Example
  9768.  
  9769.            
  9770.           PROCEDURE Bring_Up_Myformat;
  9771.           BEGIN;
  9772.             Select_Format('Myformat'); {Loads 'Myformat' into Memory}   
  9773.             Display_Format(0,0);    {displays  it  starting  at the upper left}
  9774.           END;                    {corner of the screen}
  9775.  
  9776.  
  9777.  
  9778.  
  9779.  
  9780.  
  9781.  
  9782.  
  9783.  
  9784.           Chapter III, Screen Control Language                         page 128
  9785.           Chapter III, Screen Control Language                         page 128
  9786.  
  9787.  
  9788.  
  9789.  
  9790.  
  9791.  
  9792.  
  9793.  
  9794.  
  9795.  
  9796.  
  9797.  
  9798.  
  9799.  
  9800.           OASIS Evaluation Reference Manual
  9801.           OASIS Evaluation Reference Manual
  9802.  
  9803.  
  9804.           Note:  It is user responsibility to ensure  that the  space specified
  9805.           Note:
  9806.           by  Xoffset  and  Yoffset  is  large  enough to hold the format to be
  9807.               Xoffset       Yoffset
  9808.           displayed.
  9809.           If the space specified is found  to  be  to  small,  a  'Fatal Error'
  9810.           halting the program will result.
  9811.           Therefore it  is recommended  to preferably use the functions 'X_Max'
  9812.           and 'Y_Max' wherever possible to specify offsets.
  9813.           For details see overleaf.
  9814.  
  9815.  
  9816.  
  9817.  
  9818.  
  9819.  
  9820.  
  9821.  
  9822.  
  9823.  
  9824.  
  9825.  
  9826.  
  9827.  
  9828.  
  9829.  
  9830.  
  9831.  
  9832.  
  9833.  
  9834.  
  9835.  
  9836.  
  9837.  
  9838.  
  9839.  
  9840.  
  9841.  
  9842.  
  9843.  
  9844.  
  9845.  
  9846.  
  9847.  
  9848.  
  9849.  
  9850.  
  9851.  
  9852.  
  9853.  
  9854.  
  9855.  
  9856.           Chapter III, Screen Control Language                         page 129
  9857.           Chapter III, Screen Control Language                         page 129
  9858.  
  9859.  
  9860.  
  9861.  
  9862.  
  9863.  
  9864.  
  9865.  
  9866.  
  9867.  
  9868.  
  9869.  
  9870.  
  9871.  
  9872.           OASIS Evaluation Reference Manual
  9873.           OASIS Evaluation Reference Manual
  9874.  
  9875.  
  9876.                                      X_Max and Y_Max
  9877.                                      X_Max and Y_Max
  9878.  
  9879.  
  9880.           FUNCTION X_Max:INTEGER;
  9881.           FUNCTION X_Max:INTEGER;
  9882.  
  9883.           Returns a value equal to  80  the  width  of  the  currently selected
  9884.           format.  This  function  is  intended  to  be  used together with the
  9885.           'Display_Format' Procedure.
  9886.  
  9887.  
  9888.  
  9889.  
  9890.           FUNCTION Y_Max:INTEGER;
  9891.           FUNCTION Y_Max:INTEGER;
  9892.  
  9893.           Returns a value equal to 25  the  height  of  the  currently selected
  9894.           format.  This  function  is  intended  to  be  used together with the
  9895.           'Display_Format' Procedure.
  9896.  
  9897.  
  9898.           Examples:
  9899.           Examples
  9900.  
  9901.           Display_Format(X_Max,1); 
  9902.           Display_Format(X_Max,1);
  9903.  
  9904.           Displays the format in the upper right corner of the screen.
  9905.  
  9906.  
  9907.           Display_Format(X_Max div 2,Y_Max);
  9908.           Display_Format(X_Max div 2,Y_Max);
  9909.  
  9910.           Displays the format on the  bottom  of  the  screen  and horizontally
  9911.           centered. 
  9912.  
  9913.  
  9914.           Display_Format(1,Y_Max); 
  9915.           Display_Format(1,Y_Max);
  9916.  
  9917.           Displays the format in the lower left corner of the screen.
  9918.  
  9919.  
  9920.           Display_Format(X_Max div 2,Y_Max div 2); 
  9921.           Display_Format(X_Max div 2,Y_Max div 2);
  9922.  
  9923.           Displays the format centered on the screen. 
  9924.  
  9925.  
  9926.           Display_Format(X_Max-3,Y_Max -2);
  9927.           Display_Format(X_Max-3,Y_Max -2);
  9928.  
  9929.           Displays the  format wit  it's lower right corner positioned  on line
  9930.           23, column 77. 
  9931.  
  9932.  
  9933.  
  9934.  
  9935.           Chapter III, Screen Control Language                         page 130
  9936.           Chapter III, Screen Control Language                         page 130
  9937.  
  9938.  
  9939.  
  9940.  
  9941.  
  9942.  
  9943.  
  9944.  
  9945.  
  9946.  
  9947.  
  9948.  
  9949.  
  9950.  
  9951.           OASIS Evaluation Reference Manual
  9952.           OASIS Evaluation Reference Manual
  9953.  
  9954.  
  9955.                                   Handling format input
  9956.                                   Handling format input
  9957.  
  9958.  
  9959.  
  9960.           PROCEDURE Handle_Format;
  9961.           PROCEDURE Handle_Format;
  9962.  
  9963.           This routine can be seen as the kernel of the SCL System.  It's basic
  9964.           purpose is to obtain keyboard input and act upon it. Besides this, it
  9965.           also manages a variety of other important functions such as:
  9966.  
  9967.             *  Cursor control.
  9968.             *  Input checks  according to  field specifications  and display of
  9969.                error messages.
  9970.             *  Display of Help screens and explanatory messages. 
  9971.             *  Formatting and display of field input.
  9972.             *  Control of field attributes according to specifications. 
  9973.             *  User interrupt recognition and handling.
  9974.             *  Invoking of background tasks.
  9975.  
  9976.                        
  9977.           Note:   'Handle_Format' is always called in form of a REPEAT....UNTIL
  9978.           Note:                                                 REPEAT....UNTIL
  9979.           loop.  An  example  is  given  at  the  end  of  the  description  of
  9980.           'Format_Done' on the next page. 
  9981.  
  9982.  
  9983.           FUNCTION Format_Done:BOOLEAN;
  9984.           FUNCTION Format_Done:BOOLEAN;
  9985.  
  9986.           This  Function  is  used  together with the procedure 'Handle_Format'
  9987.           described above in a REPEAT....UNTIL Loop. 
  9988.                                REPEAT....UNTIL
  9989.           It checks whether the format currently being handled is finished and,
  9990.           if this is the case, it then terminates it. 
  9991.           This means:
  9992.           It also  sets the  color of  the first  and last  line as well as the
  9993.           first and last column of the  format  to  Backgroundcolor  if  it was
  9994.                                                     Backgroundcolor
  9995.           highlighted before (see 'Display_Format'). 
  9996.           It then  it checks  for the presence of another format waiting on the
  9997.           stack to be reactivated (one which had not been finished before) and,
  9998.           if this  is the case, restores the parts of the screen which had been
  9999.           overwritten. Then all pointers  are adjusted  to this  format and its
  10000.           handling is carried out from where it was 
  10001.           interrupted before. If there was no format waiting on the stack to be
  10002.           reactivated, the screen is then cleared.
  10003.  
  10004.  
  10005.           Note:  The complete principle of  SCL's format  stacking is described
  10006.           Note:
  10007.           in Appendix A (Sample 3). 
  10008.  
  10009.  
  10010.  
  10011.  
  10012.  
  10013.           Chapter III, Screen Control Language                         page 131
  10014.           Chapter III, Screen Control Language                         page 131
  10015.  
  10016.  
  10017.  
  10018.  
  10019.  
  10020.  
  10021.  
  10022.  
  10023.  
  10024.  
  10025.  
  10026.  
  10027.  
  10028.  
  10029.           OASIS Evaluation Reference Manual
  10030.           OASIS Evaluation Reference Manual
  10031.  
  10032.  
  10033.  
  10034.           Example:
  10035.           Example
  10036.  
  10037.           REPEAT
  10038.             HANDLE_FORMAT; 
  10039.             
  10040.             {Here optional User Interrupt handling 
  10041.              statements could be inserted} 
  10042.  
  10043.           UNTIL FORMAT_DONE;
  10044.  
  10045.  
  10046.           The  above  represents  the  basic  construct of any SCL format input
  10047.           handling procedure. 
  10048.           The REPEAT....UNTIL loop  will  be  left  as  soon  as  the (boolean)
  10049.               REPEAT....UNTIL
  10050.           function 'Format_Done'  detects that the format had been finished (In
  10051.           this case, 'Format_Done' returns TRUE). 
  10052.           Whenever   a   User   Specified   Interrupt   (see    under   'Format
  10053.                          User   Specified   Interrupt
  10054.           Specifications'  in  the  SFD  part  of  this  manual)  comes up, the
  10055.                                     SFD
  10056.           procedure 'Handle_Format' is exited and the user is  given the chance
  10057.           to  take   over  control   via  appropriate   statements  within  the
  10058.           REPEAT....UNTIL  loop  as  indicated  in  the  above  example.  Since
  10059.           REPEAT....UNTIL
  10060.           'Format_Done'  always  returns  FALSE  as  long  as the format is not
  10061.           finished, 'Handle_Format' will be  reentered once  the user specified
  10062.           procedures have been performed. 
  10063.           Note  that  due  to  this  construction  the  specification  of  user
  10064.           interrupt handling  procedures is  optional; even  if interrupts have
  10065.           actually been specified for the appropriate format.
  10066.  
  10067.  
  10068.  
  10069.  
  10070.  
  10071.  
  10072.  
  10073.  
  10074.  
  10075.  
  10076.  
  10077.  
  10078.  
  10079.  
  10080.  
  10081.  
  10082.  
  10083.  
  10084.  
  10085.  
  10086.  
  10087.  
  10088.           Chapter III, Screen Control Language                         page 132
  10089.           Chapter III, Screen Control Language                         page 132
  10090.  
  10091.  
  10092.  
  10093.  
  10094.  
  10095.  
  10096.  
  10097.  
  10098.  
  10099.  
  10100.  
  10101.  
  10102.  
  10103.  
  10104.           OASIS Evaluation Reference Manual
  10105.           OASIS Evaluation Reference Manual
  10106.  
  10107.  
  10108.                                  Format Handling Control
  10109.                                  Format Handling Control
  10110.  
  10111.  
  10112.  
  10113.  
  10114.           PROCEDURE Blank_Format;
  10115.           PROCEDURE Blank_Format;
  10116.  
  10117.           This procedure causes the space the currently handled format occupies
  10118.           on the screen to be cleared (filled with spaces).
  10119.  
  10120.  
  10121.  
  10122.  
  10123.           PROCEDURE Goto_Field(Fieldnr:INTEGER):
  10124.           PROCEDURE Goto_Field(Fieldnr:INTEGER):
  10125.  
  10126.           This Procedure can be  used  during  in  a  User  Interrupt Procedure
  10127.                                                       User  Interrupt Procedure
  10128.           (End_of_Field) to  jump to  another field  on the  format. It is your
  10129.           responsibility to make sure that the field number to jump to is valid
  10130.           and not declared as Output Only.
  10131.                               Output Only
  10132.  
  10133.  
  10134.  
  10135.           PROCEDURE Finish_Format(Check:BOOLEAN);
  10136.           PROCEDURE Finish_Format(Check:BOOLEAN);
  10137.  
  10138.           This procedure  is used  to terminate  the currently displayed format
  10139.           while it is being processed by 'Handle_Format', usually  depending on
  10140.           a  condition  being  checked  within  a  User Interrupt Procedure. It
  10141.                                                    User Interrupt Procedure
  10142.           causes 'Handle_Format' to react in exactly  the  same  way  as  if an
  10143.           appropriate keyboard key would have been pressed.
  10144.           Terminate_Format requires  a boolean  argument which  decides in what
  10145.           way the format is to be finished.
  10146.           If 'Check' is FALSE,  it  will  be  terminated  unconditionally  in a
  10147.           similar way as if the 'ABORT' key would have been pressed. If 'Check'
  10148.           is true, 'Handle_Format' will  react as  if 'ESCape'  would have been
  10149.           pressed.  This  means,  before  actually terminating the format it is
  10150.           checked  whether  all  mandatory  fields  are   filled  in   and  the
  10151.           termination is refused if this should not be the case. 
  10152.  
  10153.  
  10154.  
  10155.                        
  10156.           Notes:  Terminating a format unconditionally with the above procedure
  10157.           Notes:
  10158.           works even in case Abort_OK is set to  FALSE for  this format. Please
  10159.                              Abort_OK
  10160.           remark also, that Format_Aborted is not set to TRUE.
  10161.                             Format_Aborted
  10162.  
  10163.           Detailed examples  of how  to handle formats including User Interrupt
  10164.                                                                  User Interrupt
  10165.           Procedures  can  be  found  in  Appendix  A  under  'SCL  Programming
  10166.           Procedures
  10167.           examples'.
  10168.  
  10169.  
  10170.  
  10171.           Chapter III, Screen Control Language                         page 133
  10172.           Chapter III, Screen Control Language                         page 133
  10173.  
  10174.  
  10175.  
  10176.  
  10177.  
  10178.  
  10179.  
  10180.  
  10181.  
  10182.  
  10183.  
  10184.  
  10185.  
  10186.  
  10187.           OASIS Evaluation Reference Manual
  10188.           OASIS Evaluation Reference Manual
  10189.  
  10190.  
  10191.                              Reading/Writting Format Fields
  10192.                              Reading/Writting Format Fields
  10193.  
  10194.  
  10195.           Introduction
  10196.           Introduction
  10197.  
  10198.           In  order  to  read  and  write  both  the  (boolean)  status  of the
  10199.           'selected' attribute as well as the  actual content  of format fields
  10200.           several SCL routines are provided.
  10201.            
  10202.           The following routines serve to access the field content: 
  10203.           The following routines serve to access the field content: 
  10204.  
  10205.                        
  10206.           R_Cont: 
  10207.           R_Cont:
  10208.           'Read field content'. A procedure to read the content of a field into
  10209.           a string variable.
  10210.  
  10211.                        
  10212.           G_Cont: 
  10213.           G_Cont:
  10214.           'Get field content'. Similar to above, but in form of a function. 
  10215.                                                                             
  10216.           W_Cont: 
  10217.           W_Cont:
  10218.           'Write field content'. A procedure to write the  content of  a string
  10219.           variable to a field.
  10220.  
  10221.                        
  10222.           C_Cont: 
  10223.           C_Cont:
  10224.           'Clear field  content'. A procedure to clear a field i.e to fill it's
  10225.           content with spaces).
  10226.  
  10227.  
  10228.  
  10229.                        
  10230.         | The following routines  serve  to  access  the  Selecte  attribute of
  10231.           The following routines  serve  to  access  the  Selecte  attribute of
  10232.           format fields:
  10233.           format fields:
  10234.  
  10235.  
  10236.                        
  10237.           R_Sel: 
  10238.           R_Sel:
  10239.           'Read field  selected status'.  A procedure to read the status of the
  10240.           'selected' attribute into a boolean variable.
  10241.  
  10242.                        
  10243.           G_Sel: 
  10244.           G_Sel:
  10245.           'Get field selected status'.Similar  to  'R_Sel'  but  in  form  of a
  10246.           boolean function. 
  10247.  
  10248.                        
  10249.           W_Sel:
  10250.           W_Sel:
  10251.           'Write  field  selected  status'.  Sets  the status of the 'selected'
  10252.           attribute to the desired value.
  10253.  
  10254.  
  10255.                        
  10256.           Note:  A detailed description of these routines  can be  found on the
  10257.           Note:
  10258.           following pages. 
  10259.  
  10260.  
  10261.  
  10262.  
  10263.           Chapter III, Screen Control Language                         page 134
  10264.           Chapter III, Screen Control Language                         page 134
  10265.  
  10266.  
  10267.  
  10268.  
  10269.  
  10270.  
  10271.  
  10272.  
  10273.  
  10274.  
  10275.  
  10276.  
  10277.  
  10278.  
  10279.           OASIS Evaluation Reference Manual
  10280.           OASIS Evaluation Reference Manual
  10281.  
  10282.  
  10283.                                   Reading Field Content
  10284.                                   Reading Field Content
  10285.  
  10286.  
  10287.           PROCEDURE R_Cont(Fieldnr:INTEGER; VAR Contents:String80);
  10288.           PROCEDURE R_Cont(Fieldnr:INTEGER; VAR Contents:String80);
  10289.  
  10290.           This procedure acts on the format pointed to by 'R_Ptr'.
  10291.           It  reads  out  the  content  of  field  'Fieldnr'  and  puts it left
  10292.           justified into 'Contents'. Note that  the  content  of  the  field is
  10293.           always returned  in form  of a  string, even  in the  case of numeric
  10294.           variables. 
  10295.           In case the value in 'Fieldnr'  does not  represent a  valid field or
  10296.           'R_Ptr' does not point to a valid format an empty string (length = 0)
  10297.           is returned and 'Glb_Ok' is set to FALSE. 
  10298.  
  10299.  
  10300.           Example: R_Cont(2,Mystring);
  10301.           Example: R_Cont(2,Mystring);
  10302.  
  10303.  
  10304.                    The content of the second field of the format pointed
  10305.                    to by 'R_Ptr' is returned in 'Mystring'. 
  10306.  
  10307.  
  10308.           Note:  R_Ptr normally either points  to the  format in  process or to
  10309.           Note:  
  10310.           the one that was last processed by 'Handle_Format'. 
  10311.           Therefore, as long as 'Handle_Format' has not been performed on a new
  10312.           format, the last one is still accessible, even after it is 'finished'
  10313.           (in this  case however  only as long as no new format has been loaded
  10314.           with 'Select_Format').
  10315.           If no format has been processed yet or if the format last having been
  10316.           processed  was  overwritten  by  a  new  one  (it  was  finished  and
  10317.           'Select_Format' has been called)  'R_Ptr' contains  0 (Zero)  and any
  10318.           attempt to  read a  field now  would result in in a 'Fatal SCL Error'
  10319.           halting the program. 
  10320.  
  10321.           For detailed information on the above refer to Appendix A. 
  10322.  
  10323.  
  10324.  
  10325.           FUNCTION G_Cont(Fn:INTEGER):String80;
  10326.           FUNCTION G_Cont(Fn:INTEGER):String80;
  10327.  
  10328.           This Function calls the procedure 'R_Cont'.
  10329.           Therefore  the  statement   Mystring:=G_Cont(2)   is   equivalent  to
  10330.           R_Cont(2,Mystring).
  10331.           The use  of 'G_Cont'  instead of 'R_Cont' often leads to more elegant
  10332.           constructs and  better readable  programs. It  can also  save in many
  10333.           cases the declaration of local variables. 
  10334.           The  two  (functionally  identical)  examples  on  the  next page may
  10335.           illustrate this.
  10336.  
  10337.  
  10338.           Chapter III, Screen Control Language                         page 135
  10339.           Chapter III, Screen Control Language                         page 135
  10340.  
  10341.  
  10342.  
  10343.  
  10344.  
  10345.  
  10346.  
  10347.  
  10348.  
  10349.  
  10350.  
  10351.  
  10352.  
  10353.  
  10354.           OASIS Evaluation Reference Manual
  10355.           OASIS Evaluation Reference Manual
  10356.  
  10357.  
  10358.                              Examples for R_Cont and G_Cont
  10359.                              Examples for R_Cont and G_Cont
  10360.  
  10361.  
  10362.           Example 1 (using R_Cont):
  10363.           Example 1 (using R_Cont):
  10364.  
  10365.  
  10366.  
  10367.           PROCEDURE Read_Format;
  10368.  
  10369.           VAR
  10370.             Wrkstr:String80;    {TYPE String80 is defined as STRING[80]}
  10371.  
  10372.           BEGIN;
  10373.             R_Cont(1,Surname);  {Read the content of field 1 to 'Surname'}     
  10374.           R_Cont(2,Forename); {Field 2 to 'Forename'}
  10375.             R_Cont(3,Wrkstr);   {Field 3 to 'Wrkstr'}
  10376.             City:=Capital(Wrkstr);   {Change 'Wrkstr' to upper case and}  END; 
  10377.                              {store it in 'City'.} 
  10378.  
  10379.  
  10380.  
  10381.             
  10382.           Example 2 (using G_Cont):
  10383.           Example 2 (using G_Cont):
  10384.  
  10385.  
  10386.           PROCEDURE Read_Format;
  10387.  
  10388.           BEGIN;
  10389.             Surname :=G_Cont(1);      {Read the content of field 1 
  10390.                                       into 'Surname'} 
  10391.             Forename:=G_Cont(2);      {Field 2 to 'Forename'}
  10392.             City:=Capital(G_Cont(3)); {Field converted to uppercase and  END;  
  10393.                               {stored in 'City'.} 
  10394.  
  10395.  
  10396.  
  10397.  
  10398.  
  10399.  
  10400.  
  10401.  
  10402.  
  10403.  
  10404.  
  10405.  
  10406.  
  10407.  
  10408.  
  10409.  
  10410.  
  10411.           Chapter III, Screen Control Language                         page 136
  10412.           Chapter III, Screen Control Language                         page 136
  10413.  
  10414.  
  10415.  
  10416.  
  10417.  
  10418.  
  10419.  
  10420.  
  10421.  
  10422.  
  10423.  
  10424.  
  10425.  
  10426.  
  10427.           OASIS Evaluation Reference Manual
  10428.           OASIS Evaluation Reference Manual
  10429.  
  10430.  
  10431.                                   Writing Field Content
  10432.                                   Writing Field Content
  10433.  
  10434.  
  10435.  
  10436.           PROCEDURE W_Cont(Fieldnr:INTEGER;Cont:String80);
  10437.           PROCEDURE W_Cont(Fieldnr:INTEGER;Cont:String80);
  10438.  
  10439.           This procedure works on the format pointed to by 'W_Ptr'.
  10440.           It writes  the string  'Cont' to the field indicated by 'Fieldnr'. If
  10441.           'Fieldnr' doesn't point to a valid field no  action is  performed and
  10442.           'Glb_Ok' is set to FALSE. 
  10443.           If 'Cont' does not completely fit into the field it is cut off at the
  10444.           appropriate length and 'Glb_Ok' is set  to false  as well.  Note that
  10445.           since W_Cont  expects a  string value,  numeric information has to be
  10446.                 W_Cont
  10447.           converted first. 
  10448.           In case the format  being  written  to  is  currently  displayed, the
  10449.           appropriate field content is changed on the screen as well.
  10450.  
  10451.  
  10452.  
  10453.           Example:
  10454.           Example:
  10455.  
  10456.           PROCEDURE Prefill;
  10457.  
  10458.  
  10459.           VAR
  10460.            Wrkstr            : String80;
  10461.            A_String          : String80;   {Info to be written to field 1} 
  10462.            A_Real_Number     : REAL;       {Info to be written to field 2} 
  10463.            A_Integer_Number  : INTEGER;    {Info to be written to field 3}
  10464.            
  10465.  
  10466.           BEGIN;
  10467.            A_String        :='This is a string';         {Initialize}     
  10468.            A_Real_Number   :=1.234;                      {our silly }     
  10469.            A_Integer_Number:=67;                         {examples  }   
  10470.            W_Cont(1,A_String);              {Writes 'A_String' to field 1} 
  10471.  
  10472.            STR(A_Real_Number,Wrkstr);       {Converts it to a string...}  
  10473.            W_Cont(2,Wrkstr);                {...and writes it to field 2}
  10474.            W_Cont(3,St(A_Integer_Number);   {uses the SCL Function 'St'..} END;
  10475.               {..to convert it to a string and writes it to field 3.}          
  10476.               {Note:'St' can only be used to convert 'INTEGER values} 
  10477.  
  10478.  
  10479.                        
  10480.           Note:   W_Ptr  is initially set by the procedure 'Select_Format'  and
  10481.           Note:
  10482.           keeps on pointing to  this format  until it  is   finished.  Detailed
  10483.           information on 'W_Ptr' can be found in Appendix A. 
  10484.  
  10485.  
  10486.  
  10487.           Chapter III, Screen Control Language                         page 137
  10488.           Chapter III, Screen Control Language                         page 137
  10489.  
  10490.  
  10491.  
  10492.  
  10493.  
  10494.  
  10495.  
  10496.  
  10497.  
  10498.  
  10499.  
  10500.  
  10501.  
  10502.  
  10503.           OASIS Evaluation Reference Manual
  10504.           OASIS Evaluation Reference Manual
  10505.  
  10506.  
  10507.                                  Deleting Field Content
  10508.                                  Deleting Field Content
  10509.  
  10510.  
  10511.           PROCEDURE C_Cont(Fieldnr:INTEGER);
  10512.           PROCEDURE C_Cont(Fieldnr:INTEGER);
  10513.  
  10514.           This  procedure  'clears'  the  field  indicated  by 'Fieldnr'. It is
  10515.           equivalent to: W_Cont(Fieldnr,' '). Everything having been said under
  10516.                          W_Cont(Fieldnr,' ')
  10517.           'W_Cont' applies to 'C_Cont' as well.
  10518.  
  10519.  
  10520.  
  10521.  
  10522.                        
  10523.           Example:
  10524.           Example:
  10525.  
  10526.           C_Cont(1);      {Clears field 1, i.e. writes spaces to it.} 
  10527.  
  10528.  
  10529.  
  10530.  
  10531.  
  10532.  
  10533.  
  10534.  
  10535.  
  10536.  
  10537.  
  10538.  
  10539.  
  10540.  
  10541.  
  10542.  
  10543.  
  10544.  
  10545.  
  10546.  
  10547.  
  10548.  
  10549.  
  10550.  
  10551.  
  10552.  
  10553.  
  10554.  
  10555.  
  10556.  
  10557.  
  10558.  
  10559.  
  10560.  
  10561.  
  10562.           Chapter III, Screen Control Language                         page 138
  10563.           Chapter III, Screen Control Language                         page 138
  10564.  
  10565.  
  10566.  
  10567.  
  10568.  
  10569.  
  10570.  
  10571.  
  10572.  
  10573.  
  10574.  
  10575.  
  10576.  
  10577.  
  10578.           OASIS Evaluation Reference Manual
  10579.           OASIS Evaluation Reference Manual
  10580.  
  10581.  
  10582.                             Reading the 'Selected' Attribute
  10583.                             Reading the 'Selected' Attribute
  10584.  
  10585.  
  10586.  
  10587.           PROCEDURE R_Sel(Fieldnr:INTEGER; VAR Sel:BOOLEAN);
  10588.           PROCEDURE R_Sel(Fieldnr:INTEGER; VAR Sel:BOOLEAN);
  10589.  
  10590.           This procedure acts on the format pointed to by R_Ptr.
  10591.           This procedure  returns in 'Sel' the status of the Selected attribute
  10592.                                                              Selected
  10593.           of the field identified by 'Fieldnr'. 
  10594.           In case the value in 'Fieldnr'  does not  represent a  valid field or
  10595.           'R_Ptr' is not pointing to a valid format 'Glb_Ok' is set to FALSE. 
  10596.           For  further  information  on  'R_Ptr'  refer  to  the description of
  10597.           'R_Cont'. 
  10598.  
  10599.  
  10600.           Example: 
  10601.           Example: 
  10602.  
  10603.                        
  10604.           R_Sel(2,Status);
  10605.           R_Sel(2,Status);
  10606.  
  10607.  
  10608.           After performing this operation, 'Status' will be TRUE  if the second
  10609.           field of the format pointed to by 'R_Ptr'is Selected.
  10610.                                                       Selected
  10611.  
  10612.  
  10613.  
  10614.           FUNCTION G_Sel(Fn:INTEGER):BOOLEAN;
  10615.           FUNCTION G_Sel(Fn:INTEGER):BOOLEAN;
  10616.  
  10617.           This function calls the procedure R_Sel. 
  10618.           Therefore     the  construct   Status:=G_Sel(2)  is  equivalent    to
  10619.           R_Sel(2,Status).
  10620.           In many cases, the use of 'G_Sel' in favour of  'R_Sel' can  not only
  10621.           save the  declaration of  local variables but also allow more elegant
  10622.           constructs.  The  following  two  (functionally  identical)  examples
  10623.           illustrate this.
  10624.  
  10625.  
  10626.           Example 1 (using R_Sel):
  10627.           Example 1 (using R_Sel):
  10628.  
  10629.  
  10630.           R_Sel(1,Mrs);
  10631.           R_Sel(2,Miss);
  10632.           Female:= Mrs or Miss;
  10633.  
  10634.  
  10635.           Example 2 (using G_Sel):
  10636.           Example 2 (using G_Sel):
  10637.  
  10638.  
  10639.           Female:=Gsel(1) or gsel(2);
  10640.  
  10641.  
  10642.           Chapter III, Screen Control Language                         page 139
  10643.           Chapter III, Screen Control Language                         page 139
  10644.  
  10645.  
  10646.  
  10647.  
  10648.  
  10649.  
  10650.  
  10651.  
  10652.  
  10653.  
  10654.  
  10655.  
  10656.  
  10657.  
  10658.           OASIS Evaluation Reference Manual
  10659.           OASIS Evaluation Reference Manual
  10660.  
  10661.  
  10662.                             Writing the 'Selected' Attribute
  10663.                             Writing the 'Selected' Attribute
  10664.  
  10665.  
  10666.  
  10667.           PROCEDURE W_Sel(Fieldnr:INTEGER;Sel:BOOLEAN);
  10668.           PROCEDURE W_Sel(Fieldnr:INTEGER;Sel:BOOLEAN);
  10669.  
  10670.           This procedure works on the format pointed to by 'W_Ptr'.
  10671.           It sets  the 'Selected' attribute of the field indicated by 'Fieldnr'
  10672.           to the boolean value of 'Sel'.
  10673.           If 'Fieldnr' doesn't point to a  valid field  no action  is performed
  10674.           and 'Glb_Ok' is set to FALSE. 
  10675.           In  case  the  format  being  written  to is currently displayed, the
  10676.           appropriate field is changed to reflect the status  of the 'selected'
  10677.           attribute on the screen as well.
  10678.  
  10679.  
  10680.  
  10681.  
  10682.           Example:
  10683.           Example:
  10684.  
  10685.  
  10686.           W_Sel(5,TRUE);   {Marks Field 5 to be 'selected'}
  10687.  
  10688.  
  10689.  
  10690.           Note:   W_Ptr is  initially set  by the procedure 'Select_Format' and
  10691.           Note:   
  10692.           keeps on pointing to this format until it  is finished.  For detailed
  10693.           information on 'W_Ptr' refer to Appendix A.
  10694.  
  10695.  
  10696.  
  10697.  
  10698.  
  10699.  
  10700.  
  10701.  
  10702.  
  10703.  
  10704.  
  10705.  
  10706.  
  10707.  
  10708.  
  10709.  
  10710.  
  10711.  
  10712.  
  10713.  
  10714.  
  10715.  
  10716.           Chapter III, Screen Control Language                         page 140
  10717.           Chapter III, Screen Control Language                         page 140
  10718.  
  10719.  
  10720.  
  10721.  
  10722.  
  10723.  
  10724.  
  10725.  
  10726.  
  10727.  
  10728.  
  10729.  
  10730.  
  10731.  
  10732.           OASIS Evaluation Reference Manual
  10733.           OASIS Evaluation Reference Manual
  10734.  
  10735.  
  10736.                                 String Handling routines
  10737.                                 String Handling routines
  10738.  
  10739.  
  10740.  
  10741.           FUNCTION Capital(Wrkstr: String): String; 
  10742.           FUNCTION Capital(Wrkstr: String): String;
  10743.             
  10744.           This  function  returns  the  input  string  converted  to  uppercase
  10745.           letters. 
  10746.  
  10747.  
  10748.           Example:
  10749.           Example:
  10750.  
  10751.           Mystring:=Capital(Mystring);
  10752.  
  10753.  
  10754.                      If Mystring was ' aBc' it becomes ' ABC'.
  10755.  
  10756.  
  10757.  
  10758.  
  10759.  
  10760.  
  10761.           FUNCTION Stripleft(Wrkstr: String): String;
  10762.           FUNCTION Stripleft(Wrkstr: String): String;
  10763.  
  10764.           Returns the input string with all leading spaces stripped off.
  10765.  
  10766.  
  10767.           Example: 
  10768.           Example:
  10769.  
  10770.           Mystring:=Stripleft(Mystring);
  10771.  
  10772.  
  10773.                    If Mystring was ' ABC ' it becomes 'ABC '.
  10774.  
  10775.  
  10776.  
  10777.  
  10778.  
  10779.           FUNCTION Stripright(Wrkstr: String): String;
  10780.           FUNCTION Stripright(Wrkstr: String): String;
  10781.  
  10782.           Returns the input string with all trailing spaces stripped off.
  10783.  
  10784.  
  10785.           Example:
  10786.           Example:
  10787.  
  10788.           Mystring:=Stripright(Mystring);
  10789.  
  10790.  
  10791.                    If Mystring was ' ABC ' it becomes ' ABC'.
  10792.  
  10793.           Chapter III, Screen Control Language                         page 141
  10794.           Chapter III, Screen Control Language                         page 141
  10795.  
  10796.  
  10797.  
  10798.  
  10799.  
  10800.  
  10801.  
  10802.  
  10803.  
  10804.  
  10805.  
  10806.  
  10807.  
  10808.  
  10809.           OASIS Evaluation Reference Manual
  10810.           OASIS Evaluation Reference Manual
  10811.  
  10812.  
  10813.           PROCEDURE Strip(VAR Wrkstr:String;VAR Len:INTEGER);
  10814.           PROCEDURE Strip(VAR Wrkstr:String;VAR Len:INTEGER);
  10815.  
  10816.           Removes all leading and trailing spaces from Wrkstr  and returns it's
  10817.           resulting length in len.
  10818.  
  10819.           Example:
  10820.           Example:
  10821.            
  10822.           Mystring:=' ABC ';
  10823.           Strip(Mystring,Stlen);
  10824.  
  10825.           After  performing  the  above  statements,  Mystring equals 'ABC' and
  10826.           Stlen equals 3.
  10827.  
  10828.  
  10829.  
  10830.           FUNCTION Charstring(Whatchar:CHAR;Len:INTEGER):String;
  10831.           FUNCTION Charstring(Whatchar:CHAR;Len:INTEGER):String;
  10832.  
  10833.           Returns a string of length = Len, completely filled with Whatchar. 
  10834.                                                                              
  10835.  
  10836.                        
  10837.           Example: 
  10838.           Example:
  10839.  
  10840.           Mystring:=Charstring('A',5);
  10841.  
  10842.                    Mystring now contains 'AAAAA'.
  10843.  
  10844.  
  10845.  
  10846.                        
  10847.           PROCEDURE Frontstring(Str:String; VAR Head,Tail:String);
  10848.           PROCEDURE Frontstring(Str:String; VAR Head,Tail:String);
  10849.  
  10850.           Returns the first word  of  'Str'  in  'Head'  and  the  remainder in
  10851.           'Tail'.  In  both  cases,  leading  blanks  are  stripped  off.  Word
  10852.           separators can be one or more  blanks.  If  'Str'  only  contains one
  10853.           word, 'Tail' is returned with a length of 0 (zero). 
  10854.  
  10855.  
  10856.                        
  10857.           Example:
  10858.           Example:
  10859.  
  10860.           Var
  10861.             S1,
  10862.             S2  :String;
  10863.  
  10864.           Begin;
  10865.            Frontstring('This_is.a-Frontstring 'This_is the tail  ',S1,S2);
  10866.           End;
  10867.  
  10868.           S1 now contains 'This_is.a-Frontstring' and S2 contains
  10869.           'This_is the tail  '.
  10870.           Please notice that trailing spaces in the tail are not removed. 
  10871.           Please notice that trailing spaces in the tail are not removed. 
  10872.  
  10873.  
  10874.           Chapter III, Screen Control Language                         page 142
  10875.           Chapter III, Screen Control Language                         page 142
  10876.  
  10877.  
  10878.  
  10879.  
  10880.  
  10881.  
  10882.  
  10883.  
  10884.  
  10885.  
  10886.  
  10887.  
  10888.  
  10889.  
  10890.           OASIS Evaluation Reference Manual
  10891.           OASIS Evaluation Reference Manual
  10892.  
  10893.  
  10894.           FUNCTION Justify_Left(STR:String;Len:INTEGER):String;
  10895.           FUNCTION Justify_Left(STR:String;Len:INTEGER):String;
  10896.  
  10897.           Returns the input string justified left in a field of length Len. The
  10898.           remaining part of the field is filled up with spaces.
  10899.           If the input string was, after the leading  and trailing  spaces were
  10900.           removed, still  longer than  len, it is cut off at len. In this case,
  10901.           Glb_Ok is set to false.
  10902.  
  10903.  
  10904.                        
  10905.           Example 1 :
  10906.           Example 1 :
  10907.  
  10908.           Mystring:='   abc  ';
  10909.           Mystring:=Justify_Left(Mystring,5);
  10910.                 
  10911.           After execution, Mystring is equal to 'abc  '.
  10912.  
  10913.  
  10914.           Example 2 :
  10915.           Example 2 :
  10916.  
  10917.           Mystring:='   abc  ';
  10918.           Mystring:=Justify_Left(Mystring,2);
  10919.  
  10920.           In this example, Mystring would be returned as 'ab' and  Glb_Ok would
  10921.           be false.
  10922.  
  10923.  
  10924.  
  10925.           FUNCTION Justify_Right(STR:String;Len:INTEGER):String;
  10926.           FUNCTION Justify_Right(STR:String;Len:INTEGER):String;
  10927.  
  10928.           Returns the  input string  justified left  in a  field of length Len.
  10929.           with the part before  the text  being filled  up with  spaces. If the
  10930.           input string  without leading and trailing spaces is longer than len,
  10931.           it is cut off at len. In this case, Glb_Ok is set to false.
  10932.  
  10933.  
  10934.           Example 1:
  10935.           Example 1:
  10936.  
  10937.           Mystring:='   abc  ';
  10938.           Mystring:=Justify_Right(Mystring,5);
  10939.                 
  10940.           This example returns Mystring = '  abc'.
  10941.  
  10942.  
  10943.                        
  10944.           Example 2:
  10945.           Example 2:
  10946.  
  10947.           Mystring:='   abc  ';
  10948.           Mystring:=Justify_Right(Mystring,2);
  10949.  
  10950.           Mystring would now be equal to 'ab' and Glb_Ok would be false.
  10951.  
  10952.           Chapter III, Screen Control Language                         page 143
  10953.           Chapter III, Screen Control Language                         page 143
  10954.  
  10955.  
  10956.  
  10957.  
  10958.  
  10959.  
  10960.  
  10961.  
  10962.  
  10963.  
  10964.  
  10965.  
  10966.  
  10967.  
  10968.           OASIS Evaluation Reference Manual
  10969.           OASIS Evaluation Reference Manual
  10970.  
  10971.  
  10972.           FUNCTION Justify_Center(STR:String;Len:INTEGER):String;
  10973.           FUNCTION Justify_Center(STR:String;Len:INTEGER):String;
  10974.  
  10975.           Returns the input string centered in  a field  of length  Len. If the
  10976.           input string  without leading and trailing spaces is longer than Len,
  10977.           it is cut off at Len. In this case, Glb_Ok is set to false.
  10978.  
  10979.  
  10980.  
  10981.                        
  10982.           Examples :
  10983.           Examples :
  10984.  
  10985.                        Mystring:='  abc            ';
  10986.  
  10987.                    1.  Mystring:=Justify_Center(Mystring,5);      
  10988.  
  10989.                        This example returns Mystring = ' abc '.
  10990.  
  10991.  
  10992.                    2.  Mystring:=Justify_Center(Mystring,1);
  10993.  
  10994.                        The value returned is 'a'  and Glb_Ok is false. 
  10995.  
  10996.  
  10997.  
  10998.  
  10999.  
  11000.  
  11001.  
  11002.  
  11003.  
  11004.  
  11005.  
  11006.  
  11007.  
  11008.  
  11009.  
  11010.  
  11011.  
  11012.  
  11013.  
  11014.  
  11015.  
  11016.  
  11017.  
  11018.  
  11019.  
  11020.  
  11021.  
  11022.  
  11023.  
  11024.  
  11025.           Chapter III, Screen Control Language                         page 144
  11026.           Chapter III, Screen Control Language                         page 144
  11027.  
  11028.  
  11029.  
  11030.  
  11031.  
  11032.  
  11033.  
  11034.  
  11035.  
  11036.  
  11037.  
  11038.  
  11039.  
  11040.  
  11041.           OASIS Evaluation Reference Manual
  11042.           OASIS Evaluation Reference Manual
  11043.  
  11044.  
  11045.                                     System Functions
  11046.                                     System Functions
  11047.  
  11048.                        
  11049.           FUNCTION Environment(Name:String128):String128;
  11050.           FUNCTION Environment(Name:String128):String128;
  11051.  
  11052.           This function returns the content of  the specified  line out  of the
  11053.           DOS Environment. For Details on the DOS Environment and how it can be
  11054.                                               DOS Environment
  11055.           used refer to the  description  of  the  'Set'  command  in  your DOS
  11056.           manual.
  11057.  
  11058.  
  11059.                        
  11060.           Example: 
  11061.           Example:
  11062.  
  11063.           Var Mystr:String;
  11064.  
  11065.           BEGIN;
  11066.             Mystr:=Environment('COMSPEC');
  11067.           END;
  11068.  
  11069.           Mystring  contains  now  the  complete  path and name of your systems
  11070.           primary command processor, for example 'C:/COMMAND.COM'.  
  11071.  
  11072.  
  11073.             PROCEDURE Execute(VAR Progstring:String80); VAR Result:INTEGER);
  11074.             PROCEDURE Execute(VAR Progstring:String80); VAR Result:INTEGER);
  11075.                        
  11076.  
  11077.                        
  11078.           This Procedure executes the  program specified  by 'Progstring'. Once
  11079.           this  program  has  finished  execution,  control  is returned to the
  11080.           calling program (your application). 
  11081.           Since Execute does not read the settings of  'Path' or 'Environment',
  11082.                 Execute
  11083.           'Progstring'  must  contain,  beside  the  actual  program  name, the
  11084.           complete path description if the program to be executed is not in the
  11085.           Active  directory.  In  addition, 'Progstring' can optionally contain
  11086.           Active  directory
  11087.           one or  more parameters.  The program  name extension  (i.e '.EXE' or
  11088.           '.COM' is  optional. If no extension is specified, Execute will first
  11089.                                                              Execute
  11090.           look for a '.COM'  and then,  in case  it is  not found  for a '.EXE'
  11091.           file.  The  result  of  the  operation  are  returned in DOSERROR and
  11092.           DOSEXTCODE (see your Turbo Pascal Manual).
  11093.  
  11094.           Example:
  11095.           Example:
  11096.  
  11097.           Execute('C:\Myprog firstparam secondparam thirdparam');
  11098.  
  11099.           {Fires up 'Myprog' with three parameters. Once 'Myprog' has finished,
  11100.           control is  passed back  to your  application. Note that no extension
  11101.           for 'Myprog' has been  specified in  the above  example. If 'Execute'
  11102.           does not  find an extension, it first tries '.COM' and if such a file
  11103.           cannot be found, it then tries '.EXE'} 
  11104.  
  11105.                        
  11106.           Note:   See also the 'ExecuteDos' command. 
  11107.           Note:
  11108.  
  11109.  
  11110.           Chapter III, Screen Control Language                         page 145
  11111.           Chapter III, Screen Control Language                         page 145
  11112.  
  11113.  
  11114.  
  11115.  
  11116.  
  11117.  
  11118.  
  11119.  
  11120.  
  11121.  
  11122.  
  11123.  
  11124.  
  11125.  
  11126.           OASIS Evaluation Reference Manual
  11127.           OASIS Evaluation Reference Manual
  11128.  
  11129.  
  11130.           PROCEDURE ExecuteDos(Command:String128);
  11131.           PROCEDURE ExecuteDos(Command:String128);
  11132.  
  11133.           This  procedure   fires  up   the  DOS   command  processor  (usually
  11134.           COMMAND.COM) and  passes the string contained in 'Command' to it. The
  11135.           command processor the acts upon this string in the same way as  if it
  11136.           had been entered on the normal DOS prompt. 
  11137.           Once the  command has been executed, the command processor terminates
  11138.           and control is passed back to  your application.  The results  of the
  11139.           operation are  returned in DOSERROR and DOSEXITCODE (see turbo Pascal
  11140.           4.0 Manual).
  11141.           If 'Command' is an empty string (i.e a string with a length  of 0) or
  11142.           if it only contains blanks, the DOS Command processor is fired up and
  11143.           remains active for input until it is terminated with the  DOS Command
  11144.           Exit (refer to your DOS Manual for details).   Then control is passed
  11145.           Exit
  11146.           back to your program. 
  11147.  
  11148.                        
  11149.           Note:  In addition to actual DOS commands  there are  also some other
  11150.           Note:
  11151.           programs which  require COMMAND.COM to be running in order to execute
  11152.           properly. This  applies particularly  to many  external commands (for
  11153.           example CHKDSK.COM)  but also  to all  kind of batch file processing.
  11154.           Such tasks must therefore be  started  up  using  'ExecuteDos' rather
  11155.           than 'Execute'.
  11156.           An important  restriction for  both 'Execute' and 'ExecuteDos' is the
  11157.           fact that they only work if the application program has been compiled
  11158.           to disk.  In addition  you must make sure that enough memory has been
  11159.           left over for the programs to be executed.  In order  to achieve this
  11160.           you  must  limit  the  Maximum  free  dynamic  memory  value (the 'A'
  11161.                                  Maximum  free  dynamic  memory
  11162.           selection on TURBO PASCALS 'Option'  menu)  to  an  appropriate value
  11163.           prior  to  compiling  your  program.  The  value  to choose cannot be
  11164.           exactly determined, it  very  much  depends  on  your  program. Crude
  11165.           guidelines can be found in Appendix A.
  11166.            
  11167.  
  11168.                        
  11169.           Examples: 
  11170.           Examples:
  11171.  
  11172.                        
  11173.           ExecuteDos('Dir a:*.*')
  11174.           ExecuteDos('Dir a:*.*')
  11175.  
  11176.           {Loads the  command processor  and passes 'Dir a:*.*' to it. Once the
  11177.           'Dir' command  has been  performed, the  command processor terminates
  11178.           and control is passed back to your program.} 
  11179.  
  11180.  
  11181.                        
  11182.           ExecuteDos(''); 
  11183.           ExecuteDos(''); 
  11184.  
  11185.           {Invokes DOS  including the  familiar prompt.  You can  now enter any
  11186.           commands you want. 'Exit' returns you to your program. 
  11187.  
  11188.                        
  11189.           Note:  For further examples of the above constructs refer to Appendix
  11190.           Note:
  11191.           A. 
  11192.  
  11193.           Chapter III, Screen Control Language                         page 146
  11194.           Chapter III, Screen Control Language                         page 146
  11195.  
  11196.  
  11197.  
  11198.  
  11199.  
  11200.  
  11201.  
  11202.  
  11203.  
  11204.  
  11205.  
  11206.  
  11207.  
  11208.  
  11209.           OASIS Evaluation Reference Manual
  11210.           OASIS Evaluation Reference Manual
  11211.  
  11212.  
  11213.                                   Date related routines
  11214.                                   Date related routines
  11215.  
  11216.  
  11217.           Most  of  the  following  routines  apply  the  specifications  being
  11218.           contained in the DOS  Country Information  for date  formatting. This
  11219.                            DOS  Country Information
  11220.           offers  the  tremendous  advantage  that the  appropriate routines in
  11221.           your program never have to be changed, independant of the country the
  11222.           program is used in. 
  11223.           For more details on this matter please refer to the Appendix A. 
  11224.  
  11225.  
  11226.  
  11227.  
  11228.                        
  11229.           FUNCTION Date:String10;
  11230.           FUNCTION Date:String10;
  11231.  
  11232.           Returns the  system date  in form  of a  string. Both its format, i.e
  11233.           MMDDYY or DDMMYY, and the  delimiters  being  used  are  obtained and
  11234.           automatically set  according to the Country  Information SCL has been
  11235.                                               Country  Information SCL
  11236.           told to use. By default, SCL assumes the country   specified   in the
  11237.                                    SCL
  11238.           file  'CONFIG.SYS'.  There  are several possibilities to influence or
  11239.           override this selection within SCL, for details refer to Appendix A. 
  11240.                                          SCL
  11241.  
  11242.           Assuming the Country is UK (Country = 44) 'Date' returns  a string of
  11243.           the form  'DD-MM-YY', in  the case of Germany (Country = 49) it would
  11244.           be 'DD.MM.YY' and for USA (Country = 1)  the format  would be 'MM-DD-
  11245.           YY'.
  11246.  
  11247.  
  11248.  
  11249.  
  11250.           FUNCTION Date_String(Y,M,D:WORD):String10;
  11251.           FUNCTION Date_String(Y,M,D:WORD):String10;
  11252.  
  11253.           This function  returns the  date passed to it as integers (Y,M and D)
  11254.           in form of a  string.  Everything  having  been  said  above  for the
  11255.           function 'Date' applies to 'Date_String' as well. Date_String accepts
  11256.           the year in both 2 and 4 digit format. 
  11257.  
  11258.  
  11259.  
  11260.  
  11261.  
  11262.  
  11263.  
  11264.  
  11265.  
  11266.  
  11267.  
  11268.  
  11269.  
  11270.  
  11271.           Chapter III, Screen Control Language                         page 147
  11272.           Chapter III, Screen Control Language                         page 147
  11273.  
  11274.  
  11275.  
  11276.  
  11277.  
  11278.  
  11279.  
  11280.  
  11281.  
  11282.  
  11283.  
  11284.  
  11285.  
  11286.  
  11287.           OASIS Evaluation Reference Manual
  11288.           OASIS Evaluation Reference Manual
  11289.  
  11290.  
  11291.           PROCEDURE Check_Date(VAR Date_Str:String10; VAR Y,M,D:WORD); 
  11292.           PROCEDURE Check_Date(VAR Date_Str:String10; VAR Y,M,D:WORD); 
  11293.  
  11294.           'Check_Date' converts 'Date_Str' into  three integers  values Y,M and
  11295.           D.   'Date_Str' must  contain a  valid date in the format DD-MM-YY or
  11296.           MM-DD-YY,  depending  on  the  Country  Information  being  used (see
  11297.                                          Country  Information
  11298.           above). The  separators can  be any non numerical characters. Leading
  11299.           zeroes can be omitted. The year can be entered either in full (as for
  11300.           example '1987') or as a 2 digit number (as '87'). 
  11301.           The date in 'Date_Str' is checked for validity and, if it is found to
  11302.           be invalid, 'Glb_Ok' is set to false.  
  11303.  
  11304.  
  11305.  
  11306.                        
  11307.           FUNCTION Weekday(Y,M,D:WORD):INTEGER;
  11308.           FUNCTION Weekday(Y,M,D:WORD):INTEGER;
  11309.  
  11310.           'Weekday' calculates the day of the week for the date passed to it in
  11311.           Y,M and  D. The  day of  the week  is returned  in form of an Integer
  11312.           number. The meanings are: 0=Sunday, 1=Monday and so on. Please notice
  11313.           that if  the year  is passed to this function as a 2 digit value 1900
  11314.           is added to it. Therefore this routine cannot be used for years below
  11315.           100 A.D. 
  11316.  
  11317.  
  11318.  
  11319.           FUNCTION Julian_Date(VAR Y,M,D:WORD):REAL;
  11320.           FUNCTION Julian_Date(VAR Y,M,D:WORD):REAL;
  11321.  
  11322.           This function  returns the  date passed  to it  in Y,M,D in form of a
  11323.           number of days since 1.Jan 00 A.D. The value passed  back is  in form
  11324.           of a  REAL number.  Julian_Date can  be ideally used to calculate the
  11325.           number of days between two dates. If 'Y'  contains a  value less than
  11326.           100, 1900  is added to it. Therefore this routine can not be used for
  11327.           any year below 100 A.D.
  11328.  
  11329.  
  11330.  
  11331.           PROCEDURE Normal_Date(VAR Julian:REAL;VAR Y,M,D:WORD);
  11332.           PROCEDURE Normal_Date(VAR Julian:REAL;VAR Y,M,D:WORD);
  11333.  
  11334.           Normal_Date  is  the  counterpart  of  'Julian_Date'  above,  i.e  it
  11335.           converts a  Julian date  passed to it into three Integer Values Year,
  11336.           Month and Day.
  11337.  
  11338.  
  11339.  
  11340.                        
  11341.           Note:  For examples on how to use the above routines please  refer to
  11342.           Note:
  11343.           Appendix A.
  11344.  
  11345.  
  11346.  
  11347.  
  11348.  
  11349.           Chapter III, Screen Control Language                         page 148
  11350.           Chapter III, Screen Control Language                         page 148
  11351.  
  11352.  
  11353.  
  11354.  
  11355.  
  11356.  
  11357.  
  11358.  
  11359.  
  11360.  
  11361.  
  11362.  
  11363.  
  11364.  
  11365.           OASIS Evaluation Reference Manual
  11366.           OASIS Evaluation Reference Manual
  11367.  
  11368.  
  11369.                                   Time related Routines
  11370.                                   Time related Routines
  11371.  
  11372.  
  11373.  
  11374.           FUNCTION Time(Seconds:BOOLEAN):String10;
  11375.           FUNCTION Time(Seconds:BOOLEAN):String10;
  11376.  
  11377.           'Time' returns  the system  time (24 hour based) in form of a string.
  11378.           If 'Seconds' is TRUE, this string has the  format HH:MM:SS, otherwise
  11379.           it is  HH:MM. The  separators being  used (in  the above example ':')
  11380.           depends on the Country Information  and  can  therefore  be different
  11381.                          Country Information
  11382.           depending on the country. Refer to Appendix A for details.
  11383.  
  11384.  
  11385.  
  11386.  
  11387.           FUNCTION Time_String(H,M,S:WORD):String10;
  11388.           FUNCTION Time_String(H,M,S:WORD):String10;
  11389.  
  11390.           'Time_String' converts the time passed to it in H,M and S to a string
  11391.           of  the  form  'HH:MM:SS'.  Leading  blanks  are  replaced   by  '0'.
  11392.           Everything    having  been  said  under  'Time'  regarding separators
  11393.           applies to this function as well. 
  11394.           In order to  obtain  a  time  string  without  seconds  the following
  11395.           construct may be used: 
  11396.  
  11397.           Mystring:=COPY(Time_String(H,M,S),1,5);
  11398.  
  11399.  
  11400.  
  11401.  
  11402.                        
  11403.           PROCEDURE Check_Time(VAR Time_Str:String10; VAR H,M,S : WORD); 
  11404.           PROCEDURE Check_Time(VAR Time_Str:String10; VAR H,M,S : WORD); 
  11405.  
  11406.           Converts the  value in 'Time_Str' to three Integers and checks it for
  11407.           validity. If the check does not  succeed, 'Glb_Ok'  is set  to false.
  11408.           The  string  passed  in  'Time_Str'  must  have  one of the following
  11409.           formats:
  11410.           'HH:MM:SS' or 'HH:MM'. Leading zeroes can be omitted.  Separators can
  11411.           be any non numerical characters. Hours are assumed to be based on the
  11412.           24 hour format. 
  11413.  
  11414.  
  11415.  
  11416.  
  11417.  
  11418.  
  11419.  
  11420.  
  11421.  
  11422.  
  11423.  
  11424.  
  11425.           Chapter III, Screen Control Language                         page 149
  11426.           Chapter III, Screen Control Language                         page 149
  11427.  
  11428.  
  11429.  
  11430.  
  11431.  
  11432.  
  11433.  
  11434.  
  11435.  
  11436.  
  11437.  
  11438.  
  11439.  
  11440.  
  11441.           OASIS Evaluation Reference Manual
  11442.           OASIS Evaluation Reference Manual
  11443.  
  11444.  
  11445.                                Background Processing Tasks
  11446.                                Background Processing Tasks
  11447.  
  11448.  
  11449.           SCL is capable to perform user written routines as Background tasks.
  11450.                                                              Background tasks
  11451.           There are two different hooks for  Background Tasks  provided in SCL,
  11452.                                              Background Tasks
  11453.           one for low priority and the other for high priority work.
  11454.  
  11455.            
  11456.           The High priority background task is unconditionally performed by SCL
  11457.           every  time  it goes through the internal   loop   of 'Handle_Format'
  11458.           (Whenever SCL waits for keyboard input it is idling in this loop).
  11459.           The low  priority background task is identical except that it is only
  11460.           performed when no other tasks are pending, i.e. there is  no keyboard
  11461.           input waiting to be processed and no screen updates are required. 
  11462.  
  11463.  
  11464.           In  order  to  declare  a  user  written  routine  (Procedure)  to be
  11465.           performed as a background task by SCL all you need is to  include one
  11466.           of the following two statements in the program:
  11467.  
  11468.           LP_Background_Pointer:=@<Procedurename>; 
  11469.                 {this will cause SCL to execute <Procedurename> as a Low
  11470.                 Priority  background task}
  11471.  
  11472.            or
  11473.  
  11474.  
  11475.           HP_Background_Pointer:=@<Procedurename>   
  11476.                 {SCL will execute <Procedurename> as a High priority
  11477.                 Background Task}
  11478.  
  11479.  
  11480.  
  11481.                        
  11482.           Note:  Please notice that background procedures must be compiled with
  11483.           Note:
  11484.           the 'Force Far Calls' Compiler Option.
  11485.           More details on Background tasks can be found  in the  explanation of
  11486.           SAMPLE4 distributed in Appendix A.
  11487.  
  11488.  
  11489.  
  11490.  
  11491.  
  11492.  
  11493.  
  11494.  
  11495.  
  11496.  
  11497.  
  11498.  
  11499.  
  11500.           Chapter III, Screen Control Language                         page 150
  11501.           Chapter III, Screen Control Language                         page 150
  11502.  
  11503.  
  11504.  
  11505.  
  11506.  
  11507.  
  11508.  
  11509.  
  11510.  
  11511.  
  11512.  
  11513.  
  11514.  
  11515.  
  11516.           OASIS Evaluation Reference Manual
  11517.           OASIS Evaluation Reference Manual
  11518.  
  11519.  
  11520.                                      Other Routines
  11521.                                      Other Routines
  11522.  
  11523.  
  11524.           FUNCTION St(I:INTEGER):String80;
  11525.           FUNCTION St(I:INTEGER):String80;
  11526.  
  11527.           Returns an  Integer number  converted to  a string.  This function is
  11528.           especially useful to write numeric values to format fields.
  11529.  
  11530.           Example: Mystring:=St(15) returns '15' in Mystring.
  11531.           Example
  11532.  
  11533.  
  11534.  
  11535.  
  11536.           FUNCTION Rst(R:REAL;Decimals:INTEGER):String80;
  11537.           FUNCTION Rst(R:REAL;Decimals:INTEGER):String80;
  11538.  
  11539.           Returns an Real number converted to  a string.  Decimals must contain
  11540.           the number of positions to be shown after the decimal point. 
  11541.  
  11542.           Example: Mystring:=Rst(3.55555,2) returns '3.56'.
  11543.           Example
  11544.  
  11545.  
  11546.  
  11547.  
  11548.                        
  11549.           FUNCTION Nr(St:String80) : INTEGER;
  11550.           FUNCTION Nr(St:String80) : INTEGER;
  11551.  
  11552.           Converts  a  string  into  an  Integer  number. 'St' must be a string
  11553.           expressing an integer value. If 'St' does not epress an Integer value
  11554.           according  to  the  rules  for  numeric constants then 'Nr' returns 0
  11555.           (zero) and Glb_Ok is set to false. 
  11556.           This function is mainly intended to  read numeric  format fields into
  11557.           integer variables.
  11558.  
  11559.           Example: My_Integer_Number :=Nr(G_Var(2)); 
  11560.           Example
  11561.  
  11562.  
  11563.  
  11564.  
  11565.                        
  11566.           FUNCTION Rnr(St:String80) : REAL;
  11567.           FUNCTION Rnr(St:String80) : REAL;
  11568.  
  11569.           Converts  a  string  into  an  Real  number.  'St'  must  be a string
  11570.           expressing a valid real value. If 'St' does  not epress  a Real value
  11571.           according to  the rules  for numeric  constants then  'Rnr' returns 0
  11572.           (zero) and Glb_Ok is set to false. 
  11573.           This function is mainly intended  to  read  the  contents  of numeric
  11574.           format fields into 'Real' variables.
  11575.  
  11576.  
  11577.           Example: My_Real_Number :=Rnr(G_Var(2)); 
  11578.           Example
  11579.  
  11580.  
  11581.           Chapter III, Screen Control Language                         page 151
  11582.           Chapter III, Screen Control Language                         page 151
  11583.  
  11584.  
  11585.  
  11586.  
  11587.  
  11588.  
  11589.  
  11590.  
  11591.  
  11592.  
  11593.  
  11594.  
  11595.  
  11596.  
  11597.           OASIS Evaluation Reference Manual
  11598.           OASIS Evaluation Reference Manual
  11599.  
  11600.  
  11601.           FUNCTION Power(Mantissa, Exponent : REAL):REAL;
  11602.           FUNCTION Power(Mantissa, Exponent : REAL):REAL;
  11603.  
  11604.           Returns the value of Mantissa raised to the power of Exponent.
  11605.  
  11606.  
  11607.  
  11608.           FUNCTION Exist(Fn : String80):BOOLEAN;
  11609.           FUNCTION Exist(Fn : String80):BOOLEAN;
  11610.  
  11611.           Returns TRUE  if a  file with the name of Fn exists. Fn can contain a
  11612.           complete path description according to DOS rules.
  11613.  
  11614.  
  11615.  
  11616.           PROCEDURE Beep;
  11617.           PROCEDURE Beep;
  11618.  
  11619.           Creates a sound with a length of 'Beep_Time' clock ticks, alternating
  11620.           every every clock tick between the two frequencies 'Beep_Frequency_1'
  11621.           and 'Beep_Frequency_2'.
  11622.  
  11623.  
  11624.                        
  11625.           Note:  A clock tick occurs approximately 18.2 times per second (about
  11626.           Note:
  11627.           every 55 ms).
  11628.  
  11629.  
  11630.  
  11631.           FUNCTION Sys_Msg(Msgnr : INTEGER):String80;
  11632.           FUNCTION Sys_Msg(Msgnr : INTEGER):String80;
  11633.  
  11634.           Returns the  text of  record <Msgnr> in file <Screenfile>.ERR. Can be
  11635.           used in user programs to receive strings etc stored in this file (See
  11636.           also Appendix A; "The error message file").
  11637.  
  11638.  
  11639.           FUNCTION Format_Name:String10;
  11640.           FUNCTION Format_Name:String10;
  11641.  
  11642.           Returns the name of the currently active format.
  11643.  
  11644.  
  11645.  
  11646.  
  11647.  
  11648.  
  11649.  
  11650.  
  11651.  
  11652.  
  11653.  
  11654.  
  11655.  
  11656.  
  11657.  
  11658.           Chapter III, Screen Control Language                         page 152
  11659.           Chapter III, Screen Control Language                         page 152
  11660.  
  11661.  
  11662.  
  11663.  
  11664.  
  11665.  
  11666.  
  11667.  
  11668.  
  11669.  
  11670.  
  11671.  
  11672.  
  11673.  
  11674.           OASIS Evaluation Reference Manual
  11675.           OASIS Evaluation Reference Manual
  11676.  
  11677.  
  11678.  
  11679.  
  11680.  
  11681.  
  11682.  
  11683.  
  11684.  
  11685.  
  11686.  
  11687.  
  11688.  
  11689.  
  11690.  
  11691.  
  11692.  
  11693.  
  11694.  
  11695.  
  11696.                                        Chapter IV
  11697.                                        Chapter IV
  11698.                        
  11699.  
  11700.  
  11701.  
  11702.  
  11703.  
  11704.  
  11705.  
  11706.  
  11707.  
  11708.  
  11709.  
  11710.  
  11711.  
  11712.  
  11713.  
  11714.  
  11715.  
  11716.  
  11717.  
  11718.  
  11719.  
  11720.  
  11721.  
  11722.  
  11723.  
  11724.  
  11725.  
  11726.  
  11727.  
  11728.  
  11729.  
  11730.  
  11731.  
  11732.  
  11733.  
  11734.  
  11735.  
  11736.  
  11737.  
  11738.  
  11739.  
  11740.  
  11741.  
  11742.  
  11743.  
  11744.  
  11745.           OASIS Evaluation Reference Manual
  11746.           OASIS Evaluation Reference Manual
  11747.  
  11748.  
  11749.  
  11750.  
  11751.  
  11752.  
  11753.  
  11754.  
  11755.  
  11756.  
  11757.  
  11758.  
  11759.  
  11760.  
  11761.  
  11762.  
  11763.  
  11764.  
  11765.  
  11766.  
  11767.  
  11768.                           This Page is intentionally left blank
  11769.  
  11770.  
  11771.  
  11772.  
  11773.  
  11774.  
  11775.  
  11776.  
  11777.  
  11778.  
  11779.  
  11780.  
  11781.  
  11782.  
  11783.  
  11784.  
  11785.  
  11786.  
  11787.  
  11788.  
  11789.  
  11790.  
  11791.  
  11792.  
  11793.  
  11794.  
  11795.  
  11796.  
  11797.  
  11798.  
  11799.  
  11800.  
  11801.  
  11802.  
  11803.  
  11804.  
  11805.  
  11806.  
  11807.  
  11808.  
  11809.  
  11810.  
  11811.  
  11812.  
  11813.  
  11814.           OASIS Evaluation Reference Manual
  11815.           OASIS Evaluation Reference Manual
  11816.  
  11817.  
  11818.  
  11819.                        
  11820.  
  11821.                        
  11822.  
  11823.                        
  11824.  
  11825.                        
  11826.  
  11827.                        
  11828.  
  11829.                        
  11830.  
  11831.                        
  11832.  
  11833.                        
  11834.  
  11835.                        
  11836.  
  11837.                        
  11838.  
  11839.                        
  11840.  
  11841.                        
  11842.  
  11843.                        
  11844.  
  11845.                                           S C L
  11846.                                           S C L
  11847.                        
  11848.  
  11849.                        
  11850.  
  11851.                        
  11852.  
  11853.                        
  11854.  
  11855.                               Data Communications Subsystem
  11856.                               Data Communications Subsystem
  11857.  
  11858.  
  11859.  
  11860.  
  11861.  
  11862.  
  11863.  
  11864.  
  11865.  
  11866.  
  11867.  
  11868.  
  11869.  
  11870.  
  11871.  
  11872.  
  11873.  
  11874.  
  11875.  
  11876.  
  11877.  
  11878.  
  11879.  
  11880.  
  11881.  
  11882.  
  11883.  
  11884.  
  11885.  
  11886.  
  11887.  
  11888.  
  11889.  
  11890.  
  11891.  
  11892.  
  11893.  
  11894.  
  11895.  
  11896.  
  11897.  
  11898.  
  11899.  
  11900.  
  11901.  
  11902.  
  11903.  
  11904.           OASIS Evaluation Reference Manual
  11905.           OASIS Evaluation Reference Manual
  11906.  
  11907.  
  11908.                                       Introduction
  11909.                                       Introduction
  11910.  
  11911.  
  11912.  
  11913.           Due to  their background tasking capability, SCL programs are ideally
  11914.           suited for data communications. 
  11915.           This opens many exciting  possibilities  especially  in  the  area of
  11916.           micro-mainframe  connections,  but  also  allow you to build terminal
  11917.           emulators etc.
  11918.           The datacom routines provided by  SCL  allow  you  to  easily develop
  11919.           complex protocols that enable SCL programs  to communicate with other
  11920.           machines via the RS232 serial interface. 
  11921.           All  necessary  communications  parameters   can  be  programatically
  11922.           changed and easily adapted to any requirements. 
  11923.           The actual  handling and  monitoring of  the RS232  port is interrupt
  11924.           driven  and  therefore  very  powerful  without  imposing unnecessary
  11925.           overhead on your program. 
  11926.  
  11927.           The  following   discusses  the   complete  SCL  Data  Communications
  11928.           Subsystem. In order to help  you  develop  your  own  protocols   two
  11929.           example programs have been provided on your distribution disks, these
  11930.           will be discussed as well.
  11931.  
  11932.  
  11933.  
  11934.  
  11935.  
  11936.           Note:
  11937.           Note:
  11938.           In order  to  utilize  the  SCL  Data  Communications  routines, your
  11939.           computer  must  be  equipped  with  a  serial  asynchronous Interface
  11940.           (COM1:). This Interface will typically be connected to a Modem. 
  11941.  
  11942.  
  11943.  
  11944.  
  11945.  
  11946.  
  11947.  
  11948.  
  11949.  
  11950.  
  11951.  
  11952.  
  11953.  
  11954.  
  11955.  
  11956.  
  11957.  
  11958.  
  11959.  
  11960.           CHAPTER IV, SCL Data Communication subsystem             page 156
  11961.           CHAPTER IV, SCL Data Communication subsystem             page 156
  11962.  
  11963.  
  11964.  
  11965.  
  11966.  
  11967.  
  11968.  
  11969.  
  11970.  
  11971.  
  11972.  
  11973.  
  11974.  
  11975.  
  11976.           OASIS Evaluation Reference Manual
  11977.           OASIS Evaluation Reference Manual
  11978.  
  11979.  
  11980.  
  11981.                             Global Communications Parameters
  11982.                             Global Communications Parameters
  11983.  
  11984.           The   following parameters  must be  set according   to   your needs.
  11985.           Since all  major parameters  are declared  using Typed Constants this
  11986.                                                            Typed Constants
  11987.           can be done either in the program source or during runtime.
  11988.  
  11989.  
  11990.  
  11991.                        
  11992.           DC_Parity
  11993.           DC_Parity
  11994.  
  11995.           Declaration:
  11996.           CONST Dc_Parity : CHAR = 'E';
  11997.  
  11998.           This parameter  determines which  parity is  being used,  if any. The
  11999.           possible values are 'E' (Even), 'O' (Odd) and 'N' (None). 
  12000.                                                                     
  12001.           DC_Stopbits.
  12002.           DC_Stopbits.
  12003.  
  12004.           Declaration:
  12005.           CONST Dc_Stopbits : Integer = 1;
  12006.  
  12007.           Set this value to 2 if two stopbits are required. 
  12008.  
  12009.  
  12010.                        
  12011.           DC_Speed
  12012.           DC_Speed
  12013.  
  12014.           Declaration:
  12015.           CONST Dc_Speed : Integer = 9600;
  12016.  
  12017.           This parameter determines the line speed in baud. The possible values
  12018.           are 110, 150, 300, 600, 1200, 2400, 4800 and 9600 baud.
  12019.  
  12020.  
  12021.                        
  12022.           DC_Charsize
  12023.           DC_Charsize
  12024.  
  12025.           Declaration:
  12026.           CONST Dc_Charsize : Integer = 7;
  12027.  
  12028.           This value determines the number of bits per  character. The possible
  12029.           values are 7 or 8.
  12030.  
  12031.  
  12032.                        
  12033.           BCC_Set
  12034.           BCC_Set
  12035.  
  12036.           Declaration:
  12037.           CONST BCC_Set : BOOLEAN = FALSE;
  12038.  
  12039.           If this  variable is  TRUE, a  Block Check Character is sent with all
  12040.           messages. Refer  to  the  description  of  'Send_Buffer'  for further
  12041.           details.
  12042.  
  12043.           CHAPTER IV, SCL Data Communication subsystem             page 157
  12044.           CHAPTER IV, SCL Data Communication subsystem             page 157
  12045.  
  12046.  
  12047.  
  12048.  
  12049.  
  12050.  
  12051.  
  12052.  
  12053.  
  12054.  
  12055.  
  12056.  
  12057.  
  12058.  
  12059.           OASIS Evaluation Reference Manual
  12060.           OASIS Evaluation Reference Manual
  12061.  
  12062.  
  12063.                                     Timers and Delays
  12064.                                     Timers and Delays
  12065.  
  12066.           Tx_Char_Timeout
  12067.           Tx_Char_Timeout
  12068.  
  12069.           Declaration:
  12070.           CONST Tx_Char_Timeout : INTEGER = 500;
  12071.  
  12072.           Maximum time  to wait  until the  previous character has been sent in
  12073.           milliseconds. See also procedure 'DC_Write'. 
  12074.  
  12075.  
  12076.           Rts_Cts_Timeout
  12077.           Rts_Cts_Timeout
  12078.  
  12079.           Declaration:
  12080.           CONST Rts_Cts_Timeout : INTEGER = 500;
  12081.  
  12082.           Maximum time in  milliseconds  to  wait  for  'Clear  to  Send' after
  12083.           'Request to send' was raised. See also function 'Tx_Ok'.
  12084.  
  12085.  
  12086.           Rts_Cts_Delay
  12087.           Rts_Cts_Delay
  12088.  
  12089.           Declaration:
  12090.           CONST Rts_Cts_Delay : INTEGER = 0;
  12091.  
  12092.           Minimum time in milliseconds between the raising of 'Request to send'
  12093.           and sending of the first character.
  12094.           This option is required with some datasets where 'clear to  send' may
  12095.           come  up  before  the  modem  is  actually ready to receive the first
  12096.           character.
  12097.  
  12098.  
  12099.           Rts_Holdover
  12100.           Rts_Holdover
  12101.  
  12102.           Declaration:
  12103.           CONST Rts_Holdover : INTEGER = 0;
  12104.  
  12105.           The time in milliseconds to wait before 'Request to send'  is dropped
  12106.           after the last character has been transmitted.
  12107.           This option  is required with some datasets in order to avoid datacom
  12108.           line noise. 
  12109.  
  12110.  
  12111.  
  12112.  
  12113.  
  12114.  
  12115.  
  12116.  
  12117.  
  12118.           CHAPTER IV, SCL Data Communication subsystem             page 158
  12119.           CHAPTER IV, SCL Data Communication subsystem             page 158
  12120.  
  12121.  
  12122.  
  12123.  
  12124.  
  12125.  
  12126.  
  12127.  
  12128.  
  12129.  
  12130.  
  12131.  
  12132.  
  12133.  
  12134.           OASIS Evaluation Reference Manual
  12135.           OASIS Evaluation Reference Manual
  12136.  
  12137.  
  12138.                          Data Communications Control Characters
  12139.                          Data Communications Control Characters
  12140.  
  12141.  
  12142.           The  following  definitions  have   been  provided   to  enhance  the
  12143.           readability  and  to  facilitate  the  writing  of  terminal and line
  12144.           protocols. 
  12145.  
  12146.  
  12147.           CONST    
  12148.             Nul       = $0;
  12149.             Soh       = $1;
  12150.             Stx       = $2;
  12151.             Etx       = $3;
  12152.             Eot       = $4;
  12153.             Enq       = $5;
  12154.             Ack       = $6;
  12155.             Bel       = $7;
  12156.             Con       = $7;
  12157.             Bs        = $8;
  12158.             Ht        = $9;
  12159.             Lf        = $a;
  12160.             Vt        = $b;
  12161.             Ff        = $c;
  12162.             Cr        = $d;
  12163.             S0        = $e;
  12164.             S1        = $f;
  12165.             Dle       = $10;
  12166.             Dc1       = $11;
  12167.             Dc2       = $12;
  12168.             Dc3       = $13;
  12169.             Dc4       = $14;
  12170.             Nak       = $15;
  12171.             Syn       = $16;
  12172.             Etb       = $17;
  12173.             Can       = $18;
  12174.             Em        = $19;
  12175.             Sub       = $1a;
  12176.             Esc       = $1b;
  12177.             Fs        = $1c;
  12178.             Gs        = $1d;
  12179.             Rs        = $1e;
  12180.             Us        = $1f;
  12181.             Pol       = $70;
  12182.             Sel       = $71;
  12183.             Fsl       = $73;
  12184.             Bsl       = $74;
  12185.             Del       = $7f;
  12186.  
  12187.  
  12188.  
  12189.           CHAPTER IV, SCL Data Communication subsystem             page 159
  12190.           CHAPTER IV, SCL Data Communication subsystem             page 159
  12191.  
  12192.  
  12193.  
  12194.  
  12195.  
  12196.  
  12197.  
  12198.  
  12199.  
  12200.  
  12201.  
  12202.  
  12203.  
  12204.  
  12205.           OASIS Evaluation Reference Manual
  12206.           OASIS Evaluation Reference Manual
  12207.  
  12208.  
  12209.                                    Other Declarations
  12210.                                    Other Declarations
  12211.  
  12212.  
  12213.           DC_Buff_Size
  12214.           DC_Buff_Size
  12215.  
  12216.           Declaration:
  12217.           CONST DC_Buff_Size = 2500;
  12218.  
  12219.           This is the  size  of  the  circular  buffer  in  which  the received
  12220.           characters are written by the interrupt service routine. 
  12221.  
  12222.  
  12223.  
  12224.           DC_Rx_Buffer
  12225.           DC_Rx_Buffer
  12226.  
  12227.           Declaration:
  12228.           VAR DC_Rx_Buffer : ARRAY[0..DC_Buff_Size] of BYTE;
  12229.  
  12230.           The circular buffer used by the interrupt service routine. 
  12231.  
  12232.  
  12233.  
  12234.                        
  12235.           DC_Rx_Buff_Bottom
  12236.           DC_Rx_Buff_Bottom
  12237.  
  12238.           Declaration:
  12239.           CONST DC_Rx_Buff_Bottom : INTEGER = 0;
  12240.  
  12241.           Points  to  the  'bottom'  (=  the  first  character  to  be read) of
  12242.           DC_Rx_Buffer. If DC_Rx_Buff_Bottom is  equal  to  DC_Rx_Buff_Top then
  12243.           the receive buffer is empty. 
  12244.  
  12245.  
  12246.  
  12247.                        
  12248.           DC_Rx_Buff_Top
  12249.           DC_Rx_Buff_Top
  12250.  
  12251.           Declaration:
  12252.           CONST DC_Rx_Buff_Top : INTEGER = 0;
  12253.  
  12254.           Points to the 'Top' (= the position where the ISR will write the next
  12255.           character received) of DC_Rx_Buffer. If DC_Rx_Buff_Bottom is equal to
  12256.           DC_Rx_Buff_Top then the receive buffer is empty. 
  12257.  
  12258.                        
  12259.  
  12260.                        
  12261.  
  12262.                        
  12263.  
  12264.  
  12265.  
  12266.  
  12267.  
  12268.  
  12269.           CHAPTER IV, SCL Data Communication subsystem             page 160
  12270.           CHAPTER IV, SCL Data Communication subsystem             page 160
  12271.  
  12272.  
  12273.  
  12274.  
  12275.  
  12276.  
  12277.  
  12278.  
  12279.  
  12280.  
  12281.  
  12282.  
  12283.  
  12284.  
  12285.           OASIS Evaluation Reference Manual
  12286.           OASIS Evaluation Reference Manual
  12287.  
  12288.  
  12289.                        
  12290.           Bcc
  12291.           Bcc
  12292.  
  12293.           Declaration:
  12294.           VAR Bcc : Byte;
  12295.  
  12296.           Used to calculate the block check character. 
  12297.  
  12298.  
  12299.  
  12300.                        
  12301.           DC_Open
  12302.           DC_Open
  12303.  
  12304.           Declaration:
  12305.           CONST Dc_Open : BOOLEAN = FALSE;
  12306.  
  12307.           This  Typed  Constant  is  set  to  TRUE if the SCL datacom system is
  12308.                 Typed  Constant
  12309.           initialized. 
  12310.  
  12311.  
  12312.  
  12313.  
  12314.  
  12315.  
  12316.  
  12317.  
  12318.  
  12319.  
  12320.  
  12321.  
  12322.  
  12323.  
  12324.  
  12325.  
  12326.  
  12327.  
  12328.  
  12329.  
  12330.  
  12331.  
  12332.  
  12333.  
  12334.  
  12335.  
  12336.  
  12337.  
  12338.  
  12339.  
  12340.  
  12341.  
  12342.  
  12343.  
  12344.           CHAPTER IV, SCL Data Communication subsystem             page 161
  12345.           CHAPTER IV, SCL Data Communication subsystem             page 161
  12346.  
  12347.  
  12348.  
  12349.  
  12350.  
  12351.  
  12352.  
  12353.  
  12354.  
  12355.  
  12356.  
  12357.  
  12358.  
  12359.  
  12360.           OASIS Evaluation Reference Manual
  12361.           OASIS Evaluation Reference Manual
  12362.  
  12363.  
  12364.  
  12365.  
  12366.  
  12367.  
  12368.  
  12369.  
  12370.  
  12371.  
  12372.  
  12373.  
  12374.  
  12375.  
  12376.  
  12377.  
  12378.  
  12379.  
  12380.  
  12381.  
  12382.  
  12383.  
  12384.  
  12385.                                  SCL Data Communications
  12386.                                  SCL Data Communications
  12387.                        
  12388.  
  12389.                        
  12390.  
  12391.                        
  12392.  
  12393.                                 Procedures and Functions
  12394.                                 Procedures and Functions
  12395.                                                         
  12396.  
  12397.  
  12398.  
  12399.  
  12400.  
  12401.  
  12402.  
  12403.  
  12404.  
  12405.  
  12406.  
  12407.  
  12408.  
  12409.  
  12410.  
  12411.  
  12412.  
  12413.  
  12414.  
  12415.  
  12416.  
  12417.  
  12418.  
  12419.  
  12420.  
  12421.           CHAPTER IV, SCL Data Communication subsystem             page 162
  12422.           CHAPTER IV, SCL Data Communication subsystem             page 162
  12423.  
  12424.  
  12425.  
  12426.  
  12427.  
  12428.  
  12429.  
  12430.  
  12431.  
  12432.  
  12433.  
  12434.  
  12435.  
  12436.  
  12437.           OASIS Evaluation Reference Manual
  12438.           OASIS Evaluation Reference Manual
  12439.  
  12440.  
  12441.                              Initializing and Terminating DC
  12442.                              Initializing and Terminating DC
  12443.  
  12444.            
  12445.           PROCEDURE Open_Dc(VAR Result:INTEGER);
  12446.           PROCEDURE Open_Dc(VAR Result:INTEGER);
  12447.  
  12448.           This procedure initializes the  datacom  subsystem  and  installs the
  12449.           Interrupt Service  Routine to receive characters. All parameters like
  12450.           line speed, parity etc must be correctly set before this procedure is
  12451.           called.
  12452.           Both Line  and Modem  status after the initialization are returned in
  12453.           'Result'. The meaning of 'Result' is as follows:
  12454.  
  12455.  
  12456.            
  12457.            
  12458.           Bit  High order byte (line status)        Low order Byte (Modem)  
  12459.           Bit  High order byte (line status)        Low order Byte (Modem)  
  12460.           7    Time_Out Error                       Rx line signal detect 
  12461.           6    Transfer Shift Register empty        Ring indicator
  12462.           5    Transfer Holding Register empty      Data set ready
  12463.           4    Break_Detect error                   Clear to send
  12464.           3    Framing error                        Delta RxLSD
  12465.           2    Parity error                         Trailing edge RI 
  12466.           1    Overrun error                        Delta DSR
  12467.           0    Data Ready                           Delta CTS
  12468.  
  12469.  
  12470.  
  12471.  
  12472.  
  12473.  
  12474.           PROCEDURE Close_Dc;
  12475.           PROCEDURE Close_Dc;
  12476.  
  12477.           This procedure must be  called  to  terminate  the  DC  subsystem. It
  12478.           deinstalls the interrupt service routine and reinstates the interrupt
  12479.           vector to its original content. Failing  to call  this routine before
  12480.           the program  is finished  can lead  to strange effects and may make a
  12481.           system reboot necessary.
  12482.  
  12483.  
  12484.  
  12485.  
  12486.  
  12487.  
  12488.  
  12489.  
  12490.  
  12491.  
  12492.  
  12493.  
  12494.  
  12495.  
  12496.           CHAPTER IV, SCL Data Communication subsystem             page 163
  12497.           CHAPTER IV, SCL Data Communication subsystem             page 163
  12498.  
  12499.  
  12500.  
  12501.  
  12502.  
  12503.  
  12504.  
  12505.  
  12506.  
  12507.  
  12508.  
  12509.  
  12510.  
  12511.  
  12512.           OASIS Evaluation Reference Manual
  12513.           OASIS Evaluation Reference Manual
  12514.  
  12515.  
  12516.                                       Sending Data
  12517.                                       Sending Data
  12518.  
  12519.  
  12520.           PROCEDURE Send_Char(Code:BYTE ; VAR OK:BOOLEAN);
  12521.           PROCEDURE Send_Char(Code:BYTE ; VAR OK:BOOLEAN);
  12522.  
  12523.           This procedure  raises  RTS,  and,  once  CTS  is  raised,  sends the
  12524.           character with  the ASCII  code of  'Code' onto  the RS232 interface.
  12525.           Then RTS  is dropped  again. If  either CTS  does not  come up within
  12526.           'RTS_CTS_Timeout'  or   if  the   character  cannot  be  sent  within
  12527.           'Tx_Char_Timeout' then the operation is aborted and 'Ok'  is returned
  12528.           FALSE.
  12529.  
  12530.                        
  12531.           Example:
  12532.           Example:
  12533.           Send_Char(EOT,Ok); {sends an 'EOT' character (ASCII 4) } 
  12534.  
  12535.  
  12536.  
  12537.           PROCEDURE Send_String(Data:String255;VAR OK:BOOLEAN);
  12538.           PROCEDURE Send_String(Data:String255;VAR OK:BOOLEAN);
  12539.  
  12540.           This procedure  is similar to 'Send_Char' except that a string (Data)
  12541.           is sent. 
  12542.  
  12543.                        
  12544.           Example: 
  12545.           Example:
  12546.           Send_String('Hello',Ok); 
  12547.  
  12548.  
  12549.  
  12550.           PROCEDURE Send_Buffer(VAR Tx_Buff;
  12551.           PROCEDURE Send_Buffer(VAR Tx_Buff;
  12552.                                 Buff_Start,Buff_Length,Bcc_Add:INTEGER;    
  12553.                                 Buff_Start,Buff_Length,Bcc_Add:INTEGER;    
  12554.                                 Head:String255; var Ok:BOOLEAN);
  12555.                                 Head:String255; var Ok:BOOLEAN);
  12556.  
  12557.           This procedure first sends the string 'Head', then an 'STX' character
  12558.           (ASCII 2)  and thereafter 'Buff_Length' bytes  of 'Tx_Buff', starting
  12559.           at a displacement of 'Buff_Start' bytes. Then an  'ETX' (ASCII  3) is
  12560.           sent. If  'BCC_Set' is  true, a  block check  character follows. This
  12561.           block check character is calculated by adding all characters starting
  12562.           from  the  'STX'  up  to  and  including the 'ETX' to Bcc_Add without
  12563.           Carry, i.e using an 'XOR' function. 'Bcc_add' can be used  to include
  12564.           'Head' into the Bcc calculation if required.
  12565.           Error  handling  etc  are  identical  to  the  those  described under
  12566.           'Send_String'.  The   data  contained   in  Tx_Buff   must  be  bytes
  12567.           representing  the  ASCII  codes  of  the  characters to be sent. This
  12568.           procedure  is  compatible  with   the  most   commonly  used     data
  12569.           communication protocols. 
  12570.  
  12571.           Note:
  12572.           Note:
  12573.           An example for 'Send_Buffer' is shown on the next page.
  12574.  
  12575.  
  12576.  
  12577.           CHAPTER IV, SCL Data Communication subsystem             page 164
  12578.           CHAPTER IV, SCL Data Communication subsystem             page 164
  12579.  
  12580.  
  12581.  
  12582.  
  12583.  
  12584.  
  12585.  
  12586.  
  12587.  
  12588.  
  12589.  
  12590.  
  12591.  
  12592.  
  12593.           OASIS Evaluation Reference Manual
  12594.           OASIS Evaluation Reference Manual
  12595.  
  12596.  
  12597.                        
  12598.           Example:
  12599.           Example:
  12600.  
  12601.  
  12602.           PROCEDURE Example;
  12603.           VAR
  12604.             My_Buffer:ARRAY[0..2000] of bytes;
  12605.             My_Header:String255;
  12606.             Write_Ok :BOOLEAN;
  12607.           CONST
  12608.             My_String:String255 = 'Hello';
  12609.           BEGIN;
  12610.             BCC_Set:=TRUE;              {send block check character}  
  12611.             My_Header:=SOH + 'A' + '1'; {a typical header for poll/select} 
  12612.             MOVE(My_String,My_Buffer,LENGTH(My_String)+1);   {first  byte is   
  12613.                                                    length         of        the
  12614.           Send_Buffer(My_Buffer,1,LENGTH(My_String),0,My_Header,Write_Ok); END;
  12615.             {displacement of 1 to exclude the byte containing length}         
  12616.           The above procedure causes the following string to be sent: 
  12617.           <SOH>A1<STX>Hello<ETX><BCC>
  12618.  
  12619.           The BCC is calculated without header (starting from 'STX'). If  it is
  12620.           required to  include the  header into  the BCC  calculation,  its BCC
  12621.           must be  calculated  externally  and  passed  to  'Send_Buffer'   via
  12622.           'BCC_Add'.
  12623.           For this  example the  BCC for  the header  could be calculated using
  12624.           the following statement:
  12625.  
  12626.           Head_Bcc := SOH XOR ORD('A') XOR ORDd('1');
  12627.  
  12628.  
  12629.  
  12630.  
  12631.  
  12632.  
  12633.  
  12634.  
  12635.  
  12636.  
  12637.  
  12638.  
  12639.  
  12640.  
  12641.  
  12642.  
  12643.  
  12644.  
  12645.  
  12646.  
  12647.  
  12648.  
  12649.           CHAPTER IV, SCL Data Communication subsystem             page 165
  12650.           CHAPTER IV, SCL Data Communication subsystem             page 165
  12651.  
  12652.  
  12653.  
  12654.  
  12655.  
  12656.  
  12657.  
  12658.  
  12659.  
  12660.  
  12661.  
  12662.  
  12663.  
  12664.  
  12665.           OASIS Evaluation Reference Manual
  12666.           OASIS Evaluation Reference Manual
  12667.  
  12668.  
  12669.                                      Receiving Data
  12670.                                      Receiving Data
  12671.  
  12672.  
  12673.           PROCEDURE Receive_Char(VAR Code:INTEGER; VAR Ok:BOOLEAN); 
  12674.           PROCEDURE Receive_Char(VAR Code:INTEGER; VAR Ok:BOOLEAN); 
  12675.  
  12676.           Returns the ASCII Code  of  the  character  in  the  circular receive
  12677.           buffer  pointed  to  by  the  'Bottom'  pointer  (This  character was
  12678.           received from datacom  and  put  into  the  buffer  by  the Interrupt
  12679.           Service    Routine).    The    'Bottom'  buffer  pointer    is   then
  12680.           incremented.
  12681.           If the circular receive buffer does not contain any characters (Top =
  12682.           Bottom) then 'Ok' is returned FALSE.
  12683.  
  12684.  
  12685.  
  12686.  
  12687.  
  12688.  
  12689.  
  12690.  
  12691.  
  12692.  
  12693.  
  12694.  
  12695.  
  12696.  
  12697.  
  12698.  
  12699.  
  12700.  
  12701.  
  12702.  
  12703.  
  12704.  
  12705.  
  12706.  
  12707.  
  12708.  
  12709.  
  12710.  
  12711.  
  12712.  
  12713.  
  12714.  
  12715.  
  12716.  
  12717.  
  12718.  
  12719.  
  12720.  
  12721.           CHAPTER IV, SCL Data Communication subsystem             page 166
  12722.           CHAPTER IV, SCL Data Communication subsystem             page 166
  12723.  
  12724.  
  12725.  
  12726.  
  12727.  
  12728.  
  12729.  
  12730.  
  12731.  
  12732.  
  12733.  
  12734.  
  12735.  
  12736.  
  12737.           OASIS Evaluation Reference Manual
  12738.           OASIS Evaluation Reference Manual
  12739.  
  12740.  
  12741.                                      Other Functions
  12742.                                      Other Functions
  12743.  
  12744.           PROCEDURE Disable_Port;
  12745.           PROCEDURE Disable_Port;
  12746.  
  12747.           This Procedure  can be  called to disable the RS232 port temporarily,
  12748.           for example to change parameters.
  12749.  
  12750.  
  12751.           PROCEDURE Enable_Port;
  12752.           PROCEDURE Enable_Port
  12753.  
  12754.           This  procedure   reinstates  datacom   if  it   was  disabled  using
  12755.           'Disable_Port'. 
  12756.  
  12757.  
  12758.           PROCEDURE Clear_Rx_Buffer;
  12759.           PROCEDURE Clear_Rx_Buffer;
  12760.  
  12761.           This Procedure  clears the  circular receive  buffer, i.e it sets Top
  12762.           equal to Bottom. 
  12763.  
  12764.  
  12765.           PROCEDURE Set_DC_Params;
  12766.           PROCEDURE Set_DC_Params;
  12767.  
  12768.           This  Procedure  must  be  called  if  data  communication parameters
  12769.           (speed, parity etc) have been changed. 
  12770.           The  following  sequence  of  procedures  is  recommended  to  change
  12771.           communication parameters:
  12772.  
  12773.           Disable_Port;
  12774.           DC_Speed:=4800;
  12775.           Set_DC_Params;
  12776.           Enable_Port;
  12777.           Clear_RX_Buffer;
  12778.  
  12779.  
  12780.           PROCEDURE DC_Diagnose(On:BOOLEAN);
  12781.           PROCEDURE DC_Diagnose(On:BOOLEAN);
  12782.  
  12783.           If 'On' is TRUE, the loopback feature for diagnostic testing  will be
  12784.           set. This causes the output of the 'Send' shift register in the RS232
  12785.           adapter to be directly  looped back  to the  'Receive' shift register
  12786.           input, i.e all data transmitted is immediately received again. If 'On
  12787.           is FALSEl the loopback feature will be reset and normal  operation is
  12788.           resumed. 
  12789.           This feature can be used for test purposes. 
  12790.  
  12791.  
  12792.           PROCEDURE Get_Dc_Status(VAR Status:INTEGER);
  12793.           PROCEDURE Get_Dc_Status(VAR Status:INTEGER);
  12794.  
  12795.           This procedure returns the present line and modem status. The meaning
  12796.           of 'Status' is the same as described under 'Open_Dc'. 
  12797.  
  12798.           CHAPTER IV, SCL Data Communication subsystem             page 167
  12799.           CHAPTER IV, SCL Data Communication subsystem             page 167
  12800.  
  12801.  
  12802.  
  12803.  
  12804.  
  12805.  
  12806.  
  12807.  
  12808.  
  12809.  
  12810.  
  12811.  
  12812.  
  12813.  
  12814.           OASIS Evaluation Reference Manual
  12815.           OASIS Evaluation Reference Manual
  12816.  
  12817.  
  12818.                                    Low Level Routines
  12819.                                    Low Level Routines
  12820.  
  12821.  
  12822.           PROCEDURE Set_Dtr(On:BOOLEAN);
  12823.           PROCEDURE Set_Dtr(On:BOOLEAN);
  12824.  
  12825.           Depending on the the status of  'On', this  procedure sets  or resets
  12826.           Data terminal  Ready. If  'On' is FALSE, Request to send will also be
  12827.           dropped.
  12828.  
  12829.  
  12830.           PROCEDURE Set_Rts(On:BOOLEAN);
  12831.           PROCEDURE Set_Rts(On:BOOLEAN);
  12832.  
  12833.           This procedure raises or drops Request to send.
  12834.  
  12835.  
  12836.           PROCEDURE DC_Write(Code:BYTE;VAR Ok:BOOLEAN);
  12837.           PROCEDURE DC_Write(Code:BYTE;VAR Ok:BOOLEAN);
  12838.  
  12839.           This procedure sends the character indicated by 'Code' onto the RS232
  12840.           Interface. It  does not  manipulate RTS as the appropriate High Level
  12841.           Routines do (Send_...). The  setting  and  resetting  of  RTS  can be
  12842.           performed with 'Tx_Ok' and 'Set_Rts'.
  12843.           If  the   Character  cannot  be  sent  before  'Tx_Char_Timeout'  the
  12844.           operation is aborted and 'Ok' is returned FALSE. 
  12845.  
  12846.  
  12847.           FUNCTION Tx_Ok:BOOLEAN; 
  12848.           FUNCTION Tx_Ok:BOOLEAN;
  12849.  
  12850.           Tx_Ok raises 'Request to send' and  returns  TRUE  if  Clear  to Send
  12851.           comes up before 'Rts_Cts_Timeout'.
  12852.  
  12853.  
  12854.           FUNCTION Dsr:BOOLEAN; 
  12855.           FUNCTION Dsr:BOOLEAN;
  12856.  
  12857.           Dsr returns the present status of Data set ready. 
  12858.  
  12859.  
  12860.           FUNCTION Cts:BOOLEAN; 
  12861.           FUNCTION Cts:BOOLEAN;
  12862.  
  12863.           Cts returns the present status of Clear to send.
  12864.  
  12865.  
  12866.           PROCEDURE DC_Break;
  12867.           PROCEDURE DC_Break;
  12868.  
  12869.           This procedure causes a 'Break' to be sent.
  12870.  
  12871.  
  12872.  
  12873.  
  12874.  
  12875.  
  12876.           CHAPTER IV, SCL Data Communication subsystem             page 168
  12877.           CHAPTER IV, SCL Data Communication subsystem             page 168
  12878.  
  12879.  
  12880.  
  12881.  
  12882.  
  12883.  
  12884.  
  12885.  
  12886.  
  12887.  
  12888.  
  12889.  
  12890.  
  12891.  
  12892.           OASIS Evaluation Reference Manual
  12893.           OASIS Evaluation Reference Manual
  12894.  
  12895.  
  12896.           PROCEDURE DC_Isr;
  12897.           PROCEDURE DC_Isr;
  12898.  
  12899.           This is  the Interrupt  service routine  for interrupt  Hex 0C. It is
  12900.           called by the IRQ4  whenever a  character has  been received  via the
  12901.           RS232 Interface. DC_Isr fetches this character and places it into the
  12902.           circular  Receive  buffer   where   it   the   can   be   read  using
  12903.           'Receive_Char'. DC_Isr may not be called directly by a user program. 
  12904.  
  12905.  
  12906.  
  12907.  
  12908.  
  12909.  
  12910.  
  12911.  
  12912.  
  12913.  
  12914.  
  12915.  
  12916.  
  12917.  
  12918.  
  12919.  
  12920.  
  12921.  
  12922.  
  12923.  
  12924.  
  12925.  
  12926.  
  12927.  
  12928.  
  12929.  
  12930.  
  12931.  
  12932.  
  12933.  
  12934.  
  12935.  
  12936.  
  12937.  
  12938.  
  12939.  
  12940.  
  12941.  
  12942.  
  12943.  
  12944.  
  12945.  
  12946.  
  12947.           CHAPTER IV, SCL Data Communication subsystem             page 169
  12948.           CHAPTER IV, SCL Data Communication subsystem             page 169
  12949.  
  12950.  
  12951.  
  12952.  
  12953.  
  12954.  
  12955.  
  12956.  
  12957.  
  12958.  
  12959.  
  12960.  
  12961.  
  12962.  
  12963.           OASIS Evaluation Reference Manual
  12964.           OASIS Evaluation Reference Manual
  12965.  
  12966.  
  12967.  
  12968.  
  12969.  
  12970.  
  12971.  
  12972.  
  12973.  
  12974.  
  12975.  
  12976.  
  12977.  
  12978.  
  12979.  
  12980.  
  12981.  
  12982.  
  12983.  
  12984.  
  12985.  
  12986.  
  12987.                                  SCL Data communications
  12988.                                  SCL Data communications
  12989.                        
  12990.  
  12991.                        
  12992.  
  12993.                        
  12994.  
  12995.                        
  12996.  
  12997.                        
  12998.  
  12999.                                     Example Programs
  13000.                                     Example Programs
  13001.                                                     
  13002.  
  13003.  
  13004.  
  13005.  
  13006.  
  13007.  
  13008.  
  13009.  
  13010.  
  13011.  
  13012.  
  13013.  
  13014.  
  13015.  
  13016.  
  13017.  
  13018.  
  13019.  
  13020.  
  13021.  
  13022.  
  13023.  
  13024.  
  13025.  
  13026.           Chapter IV, SCL Data Communication example programs          page 170
  13027.           Chapter IV, SCL Data Communication example programs          page 170
  13028.  
  13029.  
  13030.  
  13031.  
  13032.  
  13033.  
  13034.  
  13035.  
  13036.  
  13037.  
  13038.  
  13039.  
  13040.  
  13041.  
  13042.           OASIS Evaluation Reference Manual
  13043.           OASIS Evaluation Reference Manual
  13044.  
  13045.  
  13046.           A Simple Line Monitor (SAMPLE7.PAS)
  13047.           A Simple Line Monitor (SAMPLE7.PAS)
  13048.  
  13049.           In this  example program the SCL datacom routines are used to build a
  13050.           simple  datacom  line  monitor  which  interprets  and  displays  and
  13051.           interprets the traffic on a datacom line. 
  13052.           The  major  datacom  parameters  like  baudrate,  wordsize, number of
  13053.           stopbits  and  parity  can   be  dynamically   changed  while     the
  13054.           interpretation of the line traffic is instantly visible. This program
  13055.           is therefore a neat tool to  rapidly decipher  the parameter settings
  13056.           of the  datacom line  you are  connected to.  In order  to verify the
  13057.           functionality of this program, just connect  COM1: to  a busy datacom
  13058.           line and start it. 
  13059.           Below you  find the complete source code of the line monitor program,
  13060.           a detailed description follows afterwards. 
  13061.  
  13062.  
  13063.  
  13064.  
  13065.  
  13066.  
  13067.  
  13068.  
  13069.  
  13070.  
  13071.  
  13072.  
  13073.  
  13074.  
  13075.  
  13076.  
  13077.  
  13078.  
  13079.  
  13080.  
  13081.  
  13082.  
  13083.  
  13084.  
  13085.  
  13086.  
  13087.  
  13088.  
  13089.  
  13090.  
  13091.  
  13092.  
  13093.  
  13094.  
  13095.  
  13096.  
  13097.           Chapter IV, SCL Data Communication example programs          page 171
  13098.           Chapter IV, SCL Data Communication example programs          page 171
  13099.  
  13100.  
  13101.  
  13102.  
  13103.  
  13104.  
  13105.  
  13106.  
  13107.  
  13108.  
  13109.  
  13110.  
  13111.  
  13112.  
  13113.           OASIS Evaluation Reference Manual
  13114.           OASIS Evaluation Reference Manual
  13115.  
  13116.  
  13117.                                  Listing of SAMPLE7.PAS
  13118.                                  Listing of SAMPLE7.PAS
  13119.  
  13120.  
  13121.           PROGRAM dc_monitor;  {a simple datacom line monitor}
  13122.  
  13123.           uses scl;    {make SCL accessible}
  13124.  
  13125.           VAR
  13126.             Ok      : BOOLEAN;
  13127.             Wrkstr  : String80;
  13128.             Temp    : INTEGER;
  13129.             Freeze  : BOOLEAN;
  13130.  
  13131.           FUNCTION Xlate(Cn:INTEGER):String10;  {datacom control character} VAR
  13132.           Tmp:String10;                     {interpretation}
  13133.           BEGIN;
  13134.             CASE Cn OF
  13135.                $0 : Tmp:='<NUL>';
  13136.                $1 : Tmp:='<SOH>';
  13137.                $2 : Tmp:='<STX>';
  13138.                $3 : Tmp:='<ETX>';
  13139.                $4 : Tmp:='<EOT>';
  13140.                $5 : Tmp:='<ENQ>';
  13141.                $6 : Tmp:='<ACK>';
  13142.                $7 : Tmp:='<BEL>';
  13143.                $8 : Tmp:='<BS>';
  13144.                $9 : Tmp:='<HT>';
  13145.                $a : Tmp:='<LF>';
  13146.                $b : Tmp:='<VT>';
  13147.                $c : Tmp:='<FF>';
  13148.                $d : Tmp:='<CR>';
  13149.                $e : Tmp:='<S0>';
  13150.                $f : Tmp:='<S1>';
  13151.                $10: Tmp:='<DLE>';
  13152.                $11: Tmp:='<DC1>';
  13153.                $12: Tmp:='<DC2>';
  13154.                $13: Tmp:='<DC3>';
  13155.                $14: Tmp:='<DC4>';
  13156.                $15: Tmp:='<NAK>';
  13157.                $16: Tmp:='<SYN>';
  13158.                $17: Tmp:='<ETB>';
  13159.                $18: Tmp:='<CAN>';
  13160.                $19: Tmp:='<EM>';
  13161.                $1a: Tmp:='<SUB>';
  13162.                $1b: Tmp:='<ESC>';
  13163.                $1c: Tmp:='<FS>';
  13164.                $1d: Tmp:='<GS>';
  13165.                $1e: Tmp:='<RS>';
  13166.  
  13167.  
  13168.           Chapter IV, SCL Data Communication example programs          page 172
  13169.           Chapter IV, SCL Data Communication example programs          page 172
  13170.  
  13171.  
  13172.  
  13173.  
  13174.  
  13175.  
  13176.  
  13177.  
  13178.  
  13179.  
  13180.  
  13181.  
  13182.  
  13183.  
  13184.           OASIS Evaluation Reference Manual
  13185.           OASIS Evaluation Reference Manual
  13186.  
  13187.  
  13188.                $1f: Tmp:='<US>';
  13189.                $70: Tmp:='<POL>';
  13190.                $71: Tmp:='<SEL>';
  13191.                $72: Tmp:='<FSL>';
  13192.                $73: Tmp:='<BSL>';
  13193.                $7f: Tmp:='<DEL>';
  13194.                $80..$ff:
  13195.                     Tmp:='<' + St(Cn) + '>';    {return character code}   ELSE
  13196.                     Tmp:=CHR(Cn);               {return character}
  13197.             END;
  13198.             Xlate:=Tmp;
  13199.           END;
  13200.  
  13201.           {$F+} {far call option required for SCL background tasks}
  13202.           PROCEDURE Lp_Background_Task;        {updates the line traffic field}
  13203.           BEGIN;
  13204.             IF NOT Freeze THEN               {F9 toggles Freeze}
  13205.               BEGIN;
  13206.                 REPEAT
  13207.                   Receive_Char(Temp,Ok);     {receive char from datacom}   
  13208.                   IF Ok THEN                 {there was one}
  13209.                     BEGIN;
  13210.                       Wrkstr:=Wrkstr+Xlate(Temp);  {interpret it}
  13211.                       WHILE LENGTH(Wrkstr) > 76 DO {cut off oldest}
  13212.                         DELETE(Wrkstr,1,1);
  13213.                     END;
  13214.                 UNTIL NOT Ok;                      {no more characters}    
  13215.                     W_Cont(7,Wrkstr);            {update traffic field}
  13216.               END;
  13217.           END;
  13218.           {$F-}   {reset far calls again}
  13219.  
  13220.  
  13221.  
  13222.  
  13223.  
  13224.  
  13225.  
  13226.  
  13227.  
  13228.  
  13229.  
  13230.  
  13231.  
  13232.  
  13233.  
  13234.  
  13235.  
  13236.  
  13237.  
  13238.           Chapter IV, SCL Data Communication example programs          page 173
  13239.           Chapter IV, SCL Data Communication example programs          page 173
  13240.  
  13241.  
  13242.  
  13243.  
  13244.  
  13245.  
  13246.  
  13247.  
  13248.  
  13249.  
  13250.  
  13251.  
  13252.  
  13253.  
  13254.           OASIS Evaluation Reference Manual
  13255.           OASIS Evaluation Reference Manual
  13256.  
  13257.  
  13258.           PROCEDURE Update_Params;         {spacebar pressed}
  13259.           VAR Sp:INTEGER;
  13260.           BEGIN;
  13261.             CASE Active_Field OF
  13262.               1: BEGIN;                   {linespeed}
  13263.                    Sp:=Nr(G_Cont(1));     {get current speed}
  13264.                    IF Sp =  110 THEN Sp:= 150 ELSE
  13265.                    IF Sp =  150 THEN Sp:= 300 ELSE {switch}
  13266.                    IF Sp =  300 THEN Sp:= 600 ELSE  {to}
  13267.                    IF Sp =  600 THEN Sp:=1200 ELSE  {next}
  13268.                    IF Sp = 1200 THEN Sp:=2400 ELSE  {speed}
  13269.                    IF Sp = 2400 THEN Sp:=4800 ELSE
  13270.                    IF Sp = 4800 THEN Sp:=9600 ELSE
  13271.                       Sp:=110;
  13272.                    Dc_Speed:=Sp;                    {update speed}
  13273.                    W_Cont(1,St(Sp));                {update field}
  13274.                  END;
  13275.               2: BEGIN;                             {char size}
  13276.                    Sp:=Nr(G_Cont(2));
  13277.                    Sp:=Sp+1;
  13278.                    IF Sp > 8 THEN
  13279.                      Sp:=5;
  13280.                    Dc_Charsize:=Sp;                 {update param}
  13281.                    W_Cont(2,St(Sp));                {update field}
  13282.                  END;
  13283.               3: BEGIN;
  13284.                    Sp:=Nr(G_Cont(3));               {stop bits}
  13285.                    IF Sp = 1 THEN Sp:=2 ELSE Sp:=1;
  13286.                    Dc_Stopbits:=Sp;                 {update param}
  13287.                    W_Cont(3,St(Sp));                {update field}
  13288.                  END;
  13289.               4: IF G_Cont(4) = 'Even'THEN          {parity}
  13290.                    BEGIN;
  13291.                      W_Cont(4,'None');
  13292.                      Dc_Parity:='N';
  13293.                    END
  13294.                  ELSE
  13295.                  IF G_Cont(4) = 'None'THEN
  13296.                    BEGIN;
  13297.                      W_Cont(4,'Odd');
  13298.                      Dc_Parity:='O';
  13299.                    END
  13300.                  ELSE
  13301.                    BEGIN;
  13302.                      W_Cont(4,'Even');
  13303.                      Dc_Parity:='E';
  13304.                    END;
  13305.             END;
  13306.  
  13307.  
  13308.           Chapter IV, SCL Data Communication example programs          page 174
  13309.           Chapter IV, SCL Data Communication example programs          page 174
  13310.  
  13311.  
  13312.  
  13313.  
  13314.  
  13315.  
  13316.  
  13317.  
  13318.  
  13319.  
  13320.  
  13321.  
  13322.  
  13323.  
  13324.           OASIS Evaluation Reference Manual
  13325.           OASIS Evaluation Reference Manual
  13326.  
  13327.  
  13328.             Disable_Port;            {temporary disable datacom}
  13329.             Set_Dc_Params;           {set new dc params}
  13330.             Enable_Port;             {enable datacom again}
  13331.           END;
  13332.  
  13333.           PROCEDURE Handle_Uf;
  13334.           BEGIN;
  13335.             IF Char_Code = 32 THEN    {Spacebar pressed}
  13336.               BEGIN;
  13337.                 Update_Params;        {update dc params}
  13338.                 Char_Code:=Code_Noop; {no further action}
  13339.               END
  13340.             ELSE
  13341.             IF Char_Code = Code_F9 THEN   {F9 Pressed}
  13342.               BEGIN;
  13343.                 Freeze:= NOT Freeze;      {toggle freeze}
  13344.                 Char_Code:=Code_Noop;     {no further action}
  13345.               END
  13346.             
  13347.             ELSE
  13348.             IF Char_Code = Code_Return   THEN Char_Code:=Code_Tab ELSE   
  13349.             IF Char_Code = Code_Escape   THEN Char_Code:=Code_Noop;
  13350.           END;
  13351.  
  13352.  
  13353.           PROCEDURE Handle_First;   {This Procedure handles format
  13354.                                      'first'.} 
  13355.           BEGIN;
  13356.             Select_Format('main');
  13357.             W_Cont(1,St(Dc_Speed));        {prefill}
  13358.             W_Cont(2,St(Dc_Charsize));     {the}
  13359.             W_Cont(3,St(Dc_Stopbits));     {fields}
  13360.             IF Dc_Parity = 'E' THEN W_Cont(4,'Even') ELSE
  13361.             IF Dc_Parity = 'O' THEN W_Cont(4,'Odd') ELSE
  13362.                W_Cont(4,'None');
  13363.             Freeze:=FALSE;          {display incoming traffic}
  13364.             Display_Format(0,0);
  13365.             REPEAT
  13366.               Handle_Format;        {Complete Loop to handle format input} 
  13367.               IF User_Function THEN {user key pressed}
  13368.                 Handle_Uf;          {user interrupt procedure}
  13369.             UNTIL Format_Done;        {Either  completely  filled  in  or abort
  13370.           pressed} END;
  13371.  
  13372.  
  13373.  
  13374.  
  13375.  
  13376.  
  13377.  
  13378.           Chapter IV, SCL Data Communication example programs          page 175
  13379.           Chapter IV, SCL Data Communication example programs          page 175
  13380.  
  13381.  
  13382.  
  13383.  
  13384.  
  13385.  
  13386.  
  13387.  
  13388.  
  13389.  
  13390.  
  13391.  
  13392.  
  13393.  
  13394.           OASIS Evaluation Reference Manual
  13395.           OASIS Evaluation Reference Manual
  13396.  
  13397.  
  13398.           VAR Res:INTEGER;
  13399.  
  13400.           BEGIN; {of main}
  13401.             Wrkstr:='';
  13402.             Select_Format_File('Sample7');  {initializes SCL and loads the
  13403.                                              format file 'Sample7'}
  13404.             LP_Background_pointer:=@LP_Background_task;  {invoke our screen
  13405.                                              updating routine as low priority
  13406.                                              background task}      
  13407.             Auto_Help_Set:=FALSE;            {reset autohelp feature}     
  13408.             Open_Dc(Res);                    {initialize Datacom system}      
  13409.             Handle_First;              {load,display and handle the format}
  13410.             Close_Formats;                   {terminate SCL}
  13411.             Close_Dc;                        {close Datacom system}
  13412.           END.  {of main}
  13413.  
  13414.  
  13415.  
  13416.  
  13417.  
  13418.  
  13419.  
  13420.  
  13421.  
  13422.  
  13423.  
  13424.  
  13425.  
  13426.  
  13427.  
  13428.  
  13429.  
  13430.  
  13431.  
  13432.  
  13433.  
  13434.  
  13435.  
  13436.  
  13437.  
  13438.  
  13439.  
  13440.  
  13441.  
  13442.  
  13443.  
  13444.  
  13445.  
  13446.  
  13447.  
  13448.           Chapter IV, SCL Data Communication example programs          page 176
  13449.           Chapter IV, SCL Data Communication example programs          page 176
  13450.  
  13451.  
  13452.  
  13453.  
  13454.  
  13455.  
  13456.  
  13457.  
  13458.  
  13459.  
  13460.  
  13461.  
  13462.  
  13463.  
  13464.           OASIS Evaluation Reference Manual
  13465.           OASIS Evaluation Reference Manual
  13466.  
  13467.  
  13468.                                Description of SAMPLE7.PAS
  13469.                                Description of SAMPLE7.PAS
  13470.  
  13471.           Main Program
  13472.           Main Program
  13473.  
  13474.           The  first   SCL  datacom  routine  being  called  is  'Open_DC'.  It
  13475.           initializes the datacom system  and  installs  the  Interrupt Service
  13476.                                                               Interrupt Service
  13477.           Routine which  from this  very moment  will receive all characters on
  13478.           Routine
  13479.           the datacom line and place them into the circular receive buffer. 
  13480.           Then the procedure 'Handle_Main' is called to display  and handle the
  13481.           only  screen  format  in  this program. If 'Handle_Main' is finished,
  13482.           'Close_DC'  is  called  which  terminates  the   datacom  system  and
  13483.           deinstalls the ISR.
  13484.           Finally, 'Close_formats' terminates SCL as usual. 
  13485.  
  13486.  
  13487.           Handle_Main
  13488.           Handle_Main
  13489.  
  13490.           As soon  as the  format is  selected, its fields are 'prefilled' with
  13491.           the current settings of the main datacom parameters.
  13492.           The format is then displayed.
  13493.           The  datacom  line  traffic  is  interpreted  and  displayed  by  the
  13494.           procedure LP_Background_Task. 
  13495.  
  13496.  
  13497.           Handle_Uf
  13498.           Handle_Uf
  13499.  
  13500.           'Handle_Uf is  a user  function procedure  acting on several keyboard
  13501.           keys (Spacebar, F9, Return and Escape).
  13502.           In this program,  the spacebar is used to change  datacom parameters.
  13503.           If it  is pressed, the procedure 'Update_Params' is called to process
  13504.           these changes.
  13505.           If F9 is  pressed,  the  boolean  variable  'Freeze'  is  toggled. If
  13506.           'Freeze' is  TRUE, the  display of datacom line traffic is halted for
  13507.           better readability. Pressing F9 again will  restart it.  If Return is
  13508.           pressed, it  is replaced  by a  'Tab' to prevent SCL from terminating
  13509.           the format. 
  13510.           'Escape' is  replaced  by  a  NoOp  (this  program  is  terminated by
  13511.           pressing the 'Abort' key (F10).
  13512.  
  13513.           Update_Params
  13514.           Update_Params
  13515.  
  13516.           This procedure  is called  whenever the  spacebar is pressed. For the
  13517.           currently  active  field,  it  substitutes  the  present  SCL datacom
  13518.           parameter by the next possible choice and displays its new value. 
  13519.           The datacom port is then temporarily disabled ('Disable_Port') before
  13520.           'Set_DC_Params' is called to activate the new parameter setting.
  13521.           Finally the datacom port is enabled again using 'Enable_Port'. 
  13522.  
  13523.  
  13524.  
  13525.           Chapter IV, SCL Data Communication example programs          page 177
  13526.           Chapter IV, SCL Data Communication example programs          page 177
  13527.  
  13528.  
  13529.  
  13530.  
  13531.  
  13532.  
  13533.  
  13534.  
  13535.  
  13536.  
  13537.  
  13538.  
  13539.  
  13540.  
  13541.           OASIS Evaluation Reference Manual
  13542.           OASIS Evaluation Reference Manual
  13543.  
  13544.  
  13545.           LP_Background_Task
  13546.           LP_Background_Task
  13547.  
  13548.           As long as 'Freeze' is FALSE, this 'Background  processing' procedure
  13549.           permanently updates the line traffic display field (field 7). 
  13550.           It reads  all characters  having been  received since the last update
  13551.           from the circular buffer (using 'Receive_Char'). 
  13552.           Each character is interpreted  via the  function 'Xlate'  (see below)
  13553.           and the  resulting string is then displayed in field 7. If the string
  13554.           to be outputed outgrows the size  of the  display window,  the oldest
  13555.           characters are trimmed, thereby creating a horizontal scroll effect.
  13556.           For  further  informations  on  background processing please refer to
  13557.           Appendix A.
  13558.  
  13559.  
  13560.           Xlate
  13561.           Xlate
  13562.  
  13563.           This  procedure  makes the line traffic more readable  by translating
  13564.           all ASCII  codes representing   datacom  control characters into more
  13565.           meaningful strings. For example,  character  ASCII  #4  is translated
  13566.           into the string '<EOT>'. 
  13567.           Similarly,  all  codes  above  ASCII  125 are translated into strings
  13568.           showing their ASCII code  in '<  >' brackets  (example: ASCII  130 is
  13569.           returned as '<130>'). 
  13570.           For  all   other  codes  their  corresponding  character  images  are
  13571.           returned. 
  13572.  
  13573.  
  13574.  
  13575.  
  13576.  
  13577.  
  13578.  
  13579.  
  13580.  
  13581.  
  13582.  
  13583.  
  13584.  
  13585.  
  13586.  
  13587.  
  13588.  
  13589.  
  13590.  
  13591.  
  13592.  
  13593.  
  13594.  
  13595.  
  13596.  
  13597.           Chapter IV, SCL Data Communication example programs          page 178
  13598.           Chapter IV, SCL Data Communication example programs          page 178
  13599.  
  13600.  
  13601.  
  13602.  
  13603.  
  13604.  
  13605.  
  13606.  
  13607.  
  13608.  
  13609.  
  13610.  
  13611.  
  13612.  
  13613.           OASIS Evaluation Reference Manual
  13614.           OASIS Evaluation Reference Manual
  13615.  
  13616.  
  13617.           A Terminal Emulator Program (SAMPLE 8)
  13618.           A Terminal Emulator Program (SAMPLE 8)
  13619.  
  13620.  
  13621.           This example program features a  terminal  emulator  program  using a
  13622.           rather    complex  poll  select  protocol,  which  is even capable of
  13623.           handling multiple receive/transmit buffers. 
  13624.           It has been derived from a 'real world' SCL program which works  on a
  13625.           BURROUGHS mainframe  datacom network together with other terminals in
  13626.           a multipoint  environment  at  9600  baud  and  emulates  the datacom
  13627.           protocol of a BURROUGHS TD830 Terminal.
  13628.           This  example  program  is  intended  to  demonstrate  how to write a
  13629.           datacom    protocol,    for  this  reason  the    screen    interface
  13630.           deliberately is  basic and  only consists of a single format with two
  13631.           fields, one where a message to be sent can be entered and another one
  13632.           were all messages received from the mainframe are displayed.
  13633.           Since nearly  every mainframe type uses a different protocol, details
  13634.           specific to  this protocol  are purposely  not covered  in depth, the
  13635.           intention  is  to  concentrate  on  the more common aspects of how to
  13636.           write terminal protocols with the help of SCL. 
  13637.           Nevertheless this example can probably serve as a good basis for your
  13638.           own developments. 
  13639.  
  13640.  
  13641.  
  13642.  
  13643.           Note: 
  13644.           Note:
  13645.            There are  many different possibilities to interface SCL programs to
  13646.           mainframes;  typically  an  SCL  program  will  emulate  the  datacom
  13647.           interface of a terminal and do all other internal tasks using its own
  13648.           resources,  thus  presenting  the   user   with   its   own  powerful
  13649.           capabilities. Dialogues  with the  mainframe are usually performed in
  13650.           the background, automatically and totally transparent to the user. 
  13651.            
  13652.  
  13653.  
  13654.  
  13655.  
  13656.  
  13657.  
  13658.  
  13659.  
  13660.  
  13661.  
  13662.  
  13663.  
  13664.  
  13665.  
  13666.  
  13667.  
  13668.  
  13669.           Chapter IV, SCL Data Communication example programs          page 179
  13670.           Chapter IV, SCL Data Communication example programs          page 179
  13671.  
  13672.  
  13673.  
  13674.  
  13675.  
  13676.  
  13677.  
  13678.  
  13679.  
  13680.  
  13681.  
  13682.  
  13683.  
  13684.  
  13685.           OASIS Evaluation Reference Manual
  13686.           OASIS Evaluation Reference Manual
  13687.  
  13688.  
  13689.                               Listing of Example Program 8
  13690.                               Listing of Example Program 8
  13691.  
  13692.           The following is an extract of SAMPLE8.PAS and shows the  poll select
  13693.           handling routines used by this program.
  13694.  
  13695.  
  13696.  
  13697.           CONST
  13698.             Tx_Buffers = 1;  {nr of xmit buffers; minimum = 1}
  13699.             Rx_Buffers = 1;  {nr of receive buffers; minimum = 1}
  13700.             Dc_Addr_1 : Byte = $33; {first byte of terminal address}   
  13701.             Dc_Addr_2 : Byte = $31; {second byte of terminal address}
  13702.  
  13703.           TYPE
  13704.             Buffer_Data = ARRAY[1..Dc_Buffer_Size] OF Byte;
  13705.             Buffer_Type =  RECORD     {description of rx and tx buffers}       
  13706.                             Len :INTEGER;  {length of data in buffer} 
  13707.                             Data:Buffer_Data;
  13708.                           END;
  13709.             Rx_Buffer_Type= ARRAY[0..Rx_Buffers] OF Buffer_Type;
  13710.             Tx_Buffer_Type= ARRAY[0..Tx_Buffers] OF Buffer_Type;
  13711.  
  13712.           VAR
  13713.             Rx_Buffer_Overflow:BOOLEAN;   {rx data > buffersize}
  13714.             Rx_Buffer:Rx_Buffer_Type;
  13715.             Tx_Buffer:Tx_Buffer_Type;
  13716.             Result_Ok:BOOLEAN;
  13717.             Ch_Code:INTEGER;
  13718.             State:INTEGER;    {used in poll select state machine}
  13719.             Rx_Buff_Wptr,     {rx buffer to be filled next}
  13720.             Rx_Buff_Rptr,     {rx buffer to be read next}
  13721.             Tx_Buff_Wptr,     {tx buffer to be sent last}
  13722.             Tx_Buff_Rptr   : INTEGER;  {tx buffer to be sent first}
  13723.             This_Char_Done:BOOLEAN;    {used in poll select state machine} 
  13724.             Dc_Msg_Header:String255;
  13725.             Cont_String:String255;
  13726.             Char_Ind:INTEGER;
  13727.             Ok : BOOLEAN;
  13728.             Head_Bcc:INTEGER;
  13729.  
  13730.           PROCEDURE Ps_Handler;        {poll select  state machine.  run as  } 
  13731.           BEGIN;                    {background task}
  13732.               IF This_Char_Done THEN  {previous character finished}
  13733.                 Receive_Char(Ch_Code,Ok); {get  next char from dc rx buffer}   
  13734.             IF Ok THEN                {there was a character}
  13735.  
  13736.  
  13737.  
  13738.  
  13739.  
  13740.           Chapter IV, SCL Data Communication example programs          page 180
  13741.           Chapter IV, SCL Data Communication example programs          page 180
  13742.  
  13743.  
  13744.  
  13745.  
  13746.  
  13747.  
  13748.  
  13749.  
  13750.  
  13751.  
  13752.  
  13753.  
  13754.  
  13755.  
  13756.           OASIS Evaluation Reference Manual
  13757.           OASIS Evaluation Reference Manual
  13758.  
  13759.  
  13760.                 BEGIN;
  13761.                   This_Char_Done:=TRUE;   {preset}
  13762.                   CASE State OF
  13763.                   0:IF Ch_Code = Eot THEN State:=1;  {eot received}
  13764.                   1:IF Ch_Code = Dc_Addr_1 THEN   {first byte of address}
  13765.                       State:=2                    {wait for second byte}  
  13766.                     ELSE
  13767.                        State:=0;                  {reset state machine} 
  13768.                   2:IF Ch_Code = Dc_Addr_2 THEN   {second byte of address} 
  13769.                       State:=3                    {wait for cntrl char}    
  13770.                     ELSE State:=0;                {reset state machine}    
  13771.                   3:IF Ch_Code = Pol THEN State:=4 ELSE {poll string}      
  13772.                     IF Ch_Code = Sel THEN State:=7 ELSE {select string}    
  13773.                     IF Ch_Code = Fsl THEN State:=15 ELSE {fast sel}
  13774.                       State:=0;       {otherwise reset state machine}          
  13775.                   4:IF Ch_Code = Enq THEN   {end of string}
  13776.                       BEGIN;
  13777.                         This_Char_Done:=FALSE;  {dont read next char}  
  13778.                         State:=5                {next is state = 5}
  13779.                       END
  13780.                     ELSE
  13781.                       State:=0;                 {reset state machine}      
  13782.                   5:IF Tx_Buffer[Tx_Buff_Rptr].Len = 0 THEN
  13783.                       BEGIN;                    {no data to send}
  13784.                         Send_Char(Eot,Ok);      {send eot}
  13785.                         State:=0;       {..and reset state machine}
  13786.                       END
  13787.                     ELSE               {there is data to be sent}
  13788.                       BEGIN;           {send it with header and bcc}       
  13789.                         Send_Buffer(Tx_Buffer[Tx_Buff_Rptr].Data,
  13790.                                     1,Tx_Buffer[Tx_Buff_Rptr].Len,Head_Bcc,
  13791.                                     Dc_Msg_Header,Ok);
  13792.                        IF Ok THEN     {successfully sent}
  13793.                          State:=6     {wait for ack}
  13794.                        ELSE
  13795.                          State:=0;    {otherwise reset state machine}     
  13796.                       END;
  13797.                   6:BEGIN;
  13798.                       IF Ch_Code = Ack THEN  {ack received}
  13799.                         BEGIN;
  13800.                           Send_Char(Eot,Ok); {send eot}
  13801.                           IF Ok THEN         {successfully sent}
  13802.                             BEGIN;    {clear buffer & increase pointer}
  13803.                               Tx_Buffer[Tx_Buff_Rptr].Len:=0;
  13804.                               Tx_Buff_Rptr:=SUCC(Tx_Buff_Rptr) MOD
  13805.                               Tx_Buffers;
  13806.                              END;
  13807.                           State:=0;      {reset state machine}
  13808.                         END
  13809.  
  13810.           Chapter IV, SCL Data Communication example programs          page 181
  13811.           Chapter IV, SCL Data Communication example programs          page 181
  13812.  
  13813.  
  13814.  
  13815.  
  13816.  
  13817.  
  13818.  
  13819.  
  13820.  
  13821.  
  13822.  
  13823.  
  13824.  
  13825.  
  13826.           OASIS Evaluation Reference Manual
  13827.           OASIS Evaluation Reference Manual
  13828.  
  13829.                       ELSE
  13830.                       IF Ch_Code = Nak THEN {mainframe didnt receive ok}   
  13831.                         BEGIN;              {resend data}
  13832.                           This_Char_Done:=FALSE;
  13833.                           State:=5;
  13834.                         END
  13835.                       ELSE                  {mainframe did not respond}
  13836.                         State:=0;           {reset state machine}
  13837.                     END;
  13838.                   7: IF Ch_Code = Enq THEN  {end of sel string}
  13839.                        BEGIN;
  13840.                          This_Char_Done:=FALSE; {dont  receive next char}      
  13841.                          State:=8;              {answer}
  13842.                        END
  13843.                      ELSE
  13844.                        State:=0;                {reset state machine}       
  13845.                   8: IF Rx_Buffer[Rx_Buff_Wptr].Len > 0 THEN
  13846.                       BEGIN;         {we have no rx buffer available}      
  13847.                         Send_Char(Nak,Ok);     {send nak}
  13848.                         State:=0;              {reset state machine}       
  13849.                       END
  13850.                     ELSE        {we can receive data}
  13851.                       BEGIN;
  13852.                         Send_Char(Ack,Ok);  {send ack}
  13853.                         IF Ok THEN State:=9 ELSE   {ack could be sent}     
  13854.                           State:=0;  {otherwise reset state machine}           
  13855.                     END;
  13856.                  9: IF Ch_Code = Soh THEN
  13857.                       State:=10      {SOH received}
  13858.                     ELSE State:=0;
  13859.                 10: IF Ch_Code = Dc_Addr_1 THEN  {first byte of address}   
  13860.                       State:=11
  13861.                     ELSE State:=0;
  13862.                 11: IF Ch_Code = Dc_Addr_2 THEN
  13863.                       State:=12  {second byte of address received}
  13864.                     ELSE State:=0;
  13865.                 12: BEGIN;
  13866.                       IF Ch_Code = Stx THEN    {stx received}
  13867.                         BEGIN;
  13868.                           Bcc:=Stx XOr Head_Bcc; {start bcc calculation} 
  13869.                           Char_Ind:=1;       {init rx buffer}
  13870.                           State:=13;         {rx data}
  13871.                         END
  13872.                       ELSE
  13873.                         State:=0;            {reset state machine}
  13874.                     END;
  13875.              
  13876.  
  13877.  
  13878.  
  13879.  
  13880.           Chapter IV, SCL Data Communication example programs          page 182
  13881.           Chapter IV, SCL Data Communication example programs          page 182
  13882.  
  13883.  
  13884.  
  13885.  
  13886.  
  13887.  
  13888.  
  13889.  
  13890.  
  13891.  
  13892.  
  13893.  
  13894.  
  13895.  
  13896.           OASIS Evaluation Reference Manual
  13897.           OASIS Evaluation Reference Manual
  13898.  
  13899.  
  13900.                 13: BEGIN;    {receive data & write into rx buffer}
  13901.                       IF (Char_Ind < Dc_Buffer_Size) AND (Ch_Code <> Etx) THEN 
  13902.                         BEGIN; {buffer not full and not etx received}  
  13903.                           Rx_Buffer[Rx_Buff_Wptr].Data[Char_Ind]:=Ch_Code; 
  13904.                           Bcc:=Bcc XOr Ch_Code; {bcc calculation}
  13905.                           Char_Ind:=SUCC(Char_Ind); {increase buffer index} 
  13906.                         END
  13907.                       ELSE
  13908.                       IF Ch_Code = Etx THEN  {etx received}
  13909.                         BEGIN;
  13910.                           Bcc:=Bcc XOr Etx;  {get final bcc}
  13911.                           Rx_Buffer[Rx_Buff_Wptr].Len:=Char_Ind - 1;       
  13912.                           State:=14;
  13913.                         END
  13914.                       ELSE          {rx buffer overflow}
  13915.                         BEGIN;
  13916.                           State:=0; {reset state machine}
  13917.                           Rx_Buffer_Overflow:=TRUE; {set flag}
  13918.                         END;
  13919.                     END;
  13920.                 14: BEGIN;
  13921.                       IF Ch_Code = Bcc THEN  {received = calculated bcc} 
  13922.                         BEGIN;
  13923.                           Send_Char(Ack,Ok); {send an ACK}
  13924.                           IF Ok THEN {successfully sent, next rx buffer} 
  13925.                             Rx_Buff_Wptr:=SUCC(Rx_Buff_Wptr) MOD Rx_Buffers  
  13926.                           ELSE
  13927.                             Rx_Buffer[Rx_Buff_Wptr].Len:=0;{forget rx  data}   
  13928.                         END
  13929.                       ELSE                    {bcc error}
  13930.                         BEGIN;
  13931.                           Rx_Buffer[Rx_Buff_Wptr].Len:=0;{forget rx data}
  13932.                           Send_Char(Nak,Ok); {send nak}
  13933.                         END;
  13934.                       State:=0;     {reset state machine}
  13935.                     END;
  13936.                 15: IF Ch_Code = Soh THEN State:=16 ELSE State:=0; {FSL}   
  13937.                 16: IF Ch_Code = Dc_Addr_1 THEN State:=17 ELSE State:=0; 
  13938.                 17: IF Ch_Code = Dc_Addr_2 THEN State:=18 ELSE State:=0;
  13939.              
  13940.  
  13941.  
  13942.  
  13943.  
  13944.  
  13945.  
  13946.  
  13947.  
  13948.  
  13949.  
  13950.           Chapter IV, SCL Data Communication example programs          page 183
  13951.           Chapter IV, SCL Data Communication example programs          page 183
  13952.  
  13953.  
  13954.  
  13955.  
  13956.  
  13957.  
  13958.  
  13959.  
  13960.  
  13961.  
  13962.  
  13963.  
  13964.  
  13965.  
  13966.           OASIS Evaluation Reference Manual
  13967.           OASIS Evaluation Reference Manual
  13968.  
  13969.  
  13970.                 18: BEGIN;
  13971.                       IF Ch_Code = Stx THEN  {stx received}
  13972.                         BEGIN;
  13973.                           IF Rx_Buffer[Rx_Buff_Wptr].Len > 0 THEN
  13974.                             State:=0    {no rx buffer available}
  13975.                           ELSE
  13976.                             BEGIN;      {start bcc calculation}
  13977.                               Bcc:=Stx XOr Head_Bcc;
  13978.                               Char_Ind:=1; {init buff index}
  13979.                               State:=13;   {wait for rx data}
  13980.                             END;
  13981.                         END
  13982.                       ELSE
  13983.                         State:=0;      {reset state machine}
  13984.                     END;
  13985.                  ELSE State:=0;  {reset state machine}
  13986.                 END; {end case}
  13987.                 IF Ch_Code = Eot THEN State:=1; {preset state machine}    
  13988.               END;
  13989.             END;
  13990.  
  13991.           PROCEDURE Clear_Rx_Buffers;  {clear all rx buffers}
  13992.           VAR X:INTEGER;
  13993.           BEGIN;
  13994.             FOR X:=0 TO Rx_Buffers DO
  13995.               Rx_Buffer[X].Len:=0;    {set length to 0}
  13996.             Rx_Buff_Wptr:=0;          {both pointers to 0}
  13997.             Rx_Buff_Rptr:=0;
  13998.           END;
  13999.  
  14000.           PROCEDURE Clear_Tx_Buffers; {clear all xmit buffers}
  14001.           VAR X:INTEGER;
  14002.           BEGIN;
  14003.             FOR X:=0 TO Tx_Buffers DO
  14004.               Tx_Buffer[X].Len:=0;   {set length to 0}
  14005.             Tx_Buff_Wptr:=0;         {set both pointers to 0}
  14006.             Tx_Buff_Rptr:=0;
  14007.           END;
  14008.  
  14009.  
  14010.  
  14011.  
  14012.  
  14013.  
  14014.  
  14015.  
  14016.  
  14017.  
  14018.  
  14019.  
  14020.           Chapter IV, SCL Data Communication example programs          page 184
  14021.           Chapter IV, SCL Data Communication example programs          page 184
  14022.  
  14023.  
  14024.  
  14025.  
  14026.  
  14027.  
  14028.  
  14029.  
  14030.  
  14031.  
  14032.  
  14033.  
  14034.  
  14035.  
  14036.           OASIS Evaluation Reference Manual
  14037.           OASIS Evaluation Reference Manual
  14038.  
  14039.  
  14040.           PROCEDURE Init_Ps;         {init poll select system}
  14041.           VAR
  14042.             Stat:INTEGER;
  14043.           BEGIN;
  14044.             Rx_Buffer_Overflow:=FALSE;
  14045.             Cont_String:=CHR(Dc_Addr_1) + CHR(Dc_Addr_2)
  14046.                         + CHR(Pol) + CHR(Enq);  {set up contention string}
  14047.             Dc_Msg_Header:=CHR(Soh)+CHR(Dc_Addr_1)+CHR(Dc_Addr_2); {header}
  14048.             Head_Bcc:=Dc_Addr_1 XOr Dc_Addr_2;  {calculate bcc for header}
  14049.             State:=0;             {reset state machine}
  14050.             Clear_Rx_Buffers;     {clear rx buffers}
  14051.             Clear_Tx_Buffers;     {clear tx buffers}
  14052.             This_Char_Done:=TRUE;
  14053.             Open_Dc(Stat);        {open datacom & install ISR}
  14054.             Send_String(Cont_String,Result_Ok); {send contention string}
  14055.           END;
  14056.  
  14057.           FUNCTION Data_Received:BOOLEAN;  {returns  true  if  at  least  one }
  14058.           BEGIN;         {of the rx buffers contains data}
  14059.             Data_Received:= Rx_Buffer[Rx_Buff_Rptr].Len > 0;
  14060.           END;
  14061.  
  14062.           FUNCTION Dc_Write_Ok:BOOLEAN;  {returns true if at least one}
  14063.           BEGIN;            {of the tx buffers is available}
  14064.             Dc_Write_Ok:=Tx_Buffer[Tx_Buff_Wptr].Len = 0;
  14065.           END;
  14066.  
  14067.  
  14068.           PROCEDURE  Read_Dc(VAR Data;VAR Len:INTEGER;VAR Ok:BOOLEAN);
  14069.           BEGIN;   {call this routine to obtain data received from Mainframe}  
  14070.            IF Data_Received THEN {one of the rx buffers contains data}
  14071.               BEGIN;              {return it}
  14072.                 Len:=Rx_Buffer[Rx_Buff_Rptr].Len;
  14073.                 Move(Rx_Buffer[Rx_Buff_Rptr].Data,Data,Len);
  14074.                 Rx_Buffer[Rx_Buff_Rptr].Len:=0; {clear this buffer}
  14075.                 Rx_Buff_Rptr:=SUCC(Rx_Buff_Rptr) MOD Rx_Buffers; {incr pointer}
  14076.                 Ok:=TRUE;
  14077.               END
  14078.             ELSE
  14079.               Ok:=FALSE;       {no rx data available}
  14080.           END;
  14081.  
  14082.  
  14083.  
  14084.  
  14085.  
  14086.  
  14087.  
  14088.  
  14089.  
  14090.           Chapter IV, SCL Data Communication example programs          page 185
  14091.           Chapter IV, SCL Data Communication example programs          page 185
  14092.  
  14093.  
  14094.  
  14095.  
  14096.  
  14097.  
  14098.  
  14099.  
  14100.  
  14101.  
  14102.  
  14103.  
  14104.  
  14105.  
  14106.           OASIS Evaluation Reference Manual
  14107.           OASIS Evaluation Reference Manual
  14108.  
  14109.  
  14110.           PROCEDURE  Write_Dc(VAR Buff; Len:INTEGER;VAR Ok:BOOLEAN); 
  14111.           BEGIN;  {call this routine to send data to mainframe}
  14112.             IF Dc_Write_Ok THEN  {tx buffer available}
  14113.               BEGIN;
  14114.                 Move(Buff,Tx_Buffer[Tx_Buff_Wptr].Data,SIZEOF(Buff));
  14115.                 Tx_Buffer[Tx_Buff_Wptr].Len:=Len;
  14116.                 Tx_Buff_Wptr:=SUCC(Tx_Buff_Wptr) MOD Tx_Buffers;
  14117.                 Ok:=TRUE;
  14118.               END
  14119.             ELSE
  14120.               Ok:=FALSE;        {no tx buffer available}
  14121.           END;
  14122.  
  14123.  
  14124.  
  14125.  
  14126.  
  14127.  
  14128.  
  14129.  
  14130.  
  14131.  
  14132.  
  14133.  
  14134.  
  14135.  
  14136.  
  14137.  
  14138.  
  14139.  
  14140.  
  14141.  
  14142.  
  14143.  
  14144.  
  14145.  
  14146.  
  14147.  
  14148.  
  14149.  
  14150.  
  14151.  
  14152.  
  14153.  
  14154.  
  14155.  
  14156.  
  14157.  
  14158.  
  14159.  
  14160.           Chapter IV, SCL Data Communication example programs          page 186
  14161.           Chapter IV, SCL Data Communication example programs          page 186
  14162.  
  14163.  
  14164.  
  14165.  
  14166.  
  14167.  
  14168.  
  14169.  
  14170.  
  14171.  
  14172.  
  14173.  
  14174.  
  14175.  
  14176.           OASIS Evaluation Reference Manual
  14177.           OASIS Evaluation Reference Manual
  14178.  
  14179.  
  14180.                                Description of SAMPLE8.PAS
  14181.                                Description of SAMPLE8.PAS
  14182.  
  14183.           The following is a broad discussion of the  datacom routines  used in
  14184.           example program  8 including  some useful  hints on  how to implement
  14185.           such datacom protocols in a SCL program. 
  14186.  
  14187.  
  14188.           Poll-Select Terminal Protocol Handling System
  14189.           Poll-Select Terminal Protocol Handling System
  14190.  
  14191.           The main  routines  in  this  system  are  'Write_DC',  'Read_DC' and
  14192.           'PS_Handler'.
  14193.            
  14194.           'Write_DC' does  not actually write to the datacom line (this is done
  14195.           by  the  underlying  SCL   Datacom  system   under  the   control  of
  14196.           'PS_Handler'). It  just places  the message to be sent into the first
  14197.           available transmit buffer. If no empty buffer is available (i.e queue
  14198.           full) an  error code  is returned to the calling procedure within the
  14199.           user program. 
  14200.  
  14201.           'Read_DC' works  in a  similar fashion,  it just  returns the message
  14202.           waiting in  the first  read buffer. If there are no messages pending,
  14203.           an error code is returned. 
  14204.  
  14205.           'PS_Handler'  forms  the  interface  to  the  underlying  SCL Datacom
  14206.           system.     It  runs   as  a   background  job  (called  from  within
  14207.           'HP_Background_Task').  'PS_Handler'  checks  all   incoming  datacom
  14208.           traffic for messages addressed to this terminal and acts upon them as
  14209.           required.
  14210.           It mimics a typical 'State Machine' in form  of a  big case statement
  14211.           and is controlled by the variable 'State'.
  14212.           Whenever  the  mainframe  polls  the  terminal,  'PS_Handler'  checks
  14213.           whether there is a message in the write buffer. If there is  none, it
  14214.           sends  an  'EOT',  otherwise  it  sends the message, preceeded with a
  14215.           header containing the terminal address  and  followed  by  ETX  and a
  14216.           block check character. 
  14217.           If  the  mainframe  prompts  this  message  with an ACK the buffer is
  14218.           discarded and the pointer increased to the next buffer to be sent. 
  14219.           In case the  mainframe  sends  a  message,  'PS_Handler'  removes the
  14220.           header  and  the  control  characters  and  stores  it  in  the first
  14221.           available receive buffer where it then can be fetched by 'Read_DC'. 
  14222.           This way of implementing a datacom  protocol in  a SCL  program takes
  14223.           full advantage of SCL's background processing capabilities and allows
  14224.           a user program to treat complex  datacom transactions  very much like
  14225.           writing and  reading to  an ordinary  file, without  having to bother
  14226.           about any protocol conventions and underlying logic etc.
  14227.  
  14228.           On the following page you find a detailed description of  the flow of
  14229.           data through the different layers of this datacom system.
  14230.  
  14231.  
  14232.           Chapter IV, SCL Data Communication example programs          page 187
  14233.           Chapter IV, SCL Data Communication example programs          page 187
  14234.  
  14235.  
  14236.  
  14237.  
  14238.  
  14239.  
  14240.  
  14241.  
  14242.  
  14243.  
  14244.  
  14245.  
  14246.  
  14247.  
  14248.           OASIS Evaluation Reference Manual
  14249.           OASIS Evaluation Reference Manual
  14250.  
  14251.  
  14252.  
  14253.                       Poll Select Handler   Datacom read data flow
  14254.                       Poll Select Handler   Datacom read data flow
  14255.                       ____________________________________________
  14256.  
  14257.  
  14258.           1    The RS232 adapter hardware receives the datacom message from the
  14259.                mainframe and, whenever a complete character  has been received,
  14260.                raises a hardware interrupt.
  14261.  
  14262.           2.   This hardware  interrupt invokes SCL's Interrupt Service Routine
  14263.                                                       Interrupt Service Routine
  14264.                (DC_ISR) which fetches this character  and  places  it  into the
  14265.                circular receive buffer.
  14266.  
  14267.           3.   'PS_Handler',  called  from  within  'HP_Background_Task' checks
  14268.                whether one or more characters have been received since the last
  14269.                time  it  was  executing  and,    if  this  is  the case,  calls
  14270.                'Receive_Char' to read them,  one at  a time,  from the circular
  14271.                receive buffer. 
  14272.                It then  determines the  necessary action depending on the value
  14273.                of 'State'. 
  14274.                In case the character is not  intended for  this terminal  it is
  14275.                discarded, otherwise,  if it  is the last character of a control
  14276.                string,  'PS_Handler'  sends  a  prompt  to  the  mainframe, and
  14277.                finally, if  it belongs  to a  message just being received it is
  14278.                placed into  the  first  available  receive  buffer.    Once all
  14279.                characters of  this message  have been  received and placed into
  14280.                the  receive  buffer,  this  buffer  is  marked  valid  and  now
  14281.                available to be read by 'Read_DC'. 
  14282.  
  14283.           4.   'Read_DC',  called  from  within  the  user  program,  moves the
  14284.                complete message from the receive buffer into the  selected user
  14285.                variable. 
  14286.  
  14287.  
  14288.  
  14289.  
  14290.  
  14291.  
  14292.  
  14293.  
  14294.  
  14295.  
  14296.  
  14297.  
  14298.  
  14299.  
  14300.  
  14301.  
  14302.  
  14303.  
  14304.  
  14305.           Chapter IV, SCL Data Communication example programs          page 188
  14306.           Chapter IV, SCL Data Communication example programs          page 188
  14307.  
  14308.  
  14309.  
  14310.  
  14311.  
  14312.  
  14313.  
  14314.  
  14315.  
  14316.  
  14317.  
  14318.  
  14319.  
  14320.  
  14321.           OASIS Evaluation Reference Manual
  14322.           OASIS Evaluation Reference Manual
  14323.  
  14324.  
  14325.                       Poll Select Handler   Datacom write data flow
  14326.                       Poll Select Handler   Datacom write data flow
  14327.                       _____________________________________________
  14328.  
  14329.  
  14330.           1.   Called  from  within  the  user  program,  'Write_Dc'  moves the
  14331.                message to be sent to the first available write buffer.
  14332.  
  14333.           2.   If 'PS_Handler' receives a Pollstring it  checks whether  one of
  14334.                the write  buffers contains  data to  be sent and if this is the
  14335.                case, passes  it, together  with a  header, on  to the procedure
  14336.                'Send_Buffer'.
  14337.  
  14338.           3.   Send_Buffer  then  calls  'DC_Write'  to  send  it, character by
  14339.                character, out to the datacom line.
  14340.  
  14341.           4.   'PS_Handler' then waits for  an  'ACK'  from  the  mainframe and
  14342.                subsequently discards the content of the write buffer.
  14343.  
  14344.  
  14345.  
  14346.  
  14347.  
  14348.  
  14349.  
  14350.  
  14351.  
  14352.  
  14353.  
  14354.  
  14355.  
  14356.  
  14357.  
  14358.  
  14359.  
  14360.  
  14361.  
  14362.  
  14363.  
  14364.  
  14365.  
  14366.  
  14367.  
  14368.  
  14369.  
  14370.  
  14371.  
  14372.  
  14373.  
  14374.  
  14375.  
  14376.  
  14377.           Chapter IV, SCL Data Communication example programs          page 189
  14378.           Chapter IV, SCL Data Communication example programs          page 189
  14379.  
  14380.  
  14381.  
  14382.  
  14383.  
  14384.  
  14385.  
  14386.  
  14387.  
  14388.  
  14389.  
  14390.  
  14391.  
  14392.  
  14393.           OASIS Evaluation Reference Manual
  14394.           OASIS Evaluation Reference Manual
  14395.  
  14396.            
  14397.  
  14398.  
  14399.  
  14400.  
  14401.  
  14402.  
  14403.  
  14404.  
  14405.  
  14406.  
  14407.  
  14408.  
  14409.  
  14410.  
  14411.  
  14412.  
  14413.  
  14414.  
  14415.  
  14416.                                        Appendix A
  14417.                                        Appendix A
  14418.  
  14419.  
  14420.  
  14421.                                 Sample Program Discussion
  14422.                                 Sample Program Discussion
  14423.  
  14424.  
  14425.  
  14426.  
  14427.  
  14428.  
  14429.  
  14430.  
  14431.  
  14432.  
  14433.  
  14434.  
  14435.  
  14436.  
  14437.  
  14438.  
  14439.  
  14440.  
  14441.  
  14442.  
  14443.  
  14444.  
  14445.  
  14446.  
  14447.  
  14448.  
  14449.  
  14450.  
  14451.  
  14452.  
  14453.  
  14454.  
  14455.  
  14456.  
  14457.  
  14458.  
  14459.  
  14460.  
  14461.  
  14462.  
  14463.  
  14464.           OASIS Evaluation Reference Manual
  14465.           OASIS Evaluation Reference Manual
  14466.  
  14467.  
  14468.                                       Introduction
  14469.                                       Introduction
  14470.  
  14471.           In  this  section  you  be  given  some  insight  of  the programming
  14472.           mechanisms used in the 5 small demo programs  made available  to you.
  14473.           Key SCL programming technic are demonstrated and discussed here. 
  14474.  
  14475.           You will  be able  to make  ample use  of these programs for training
  14476.           purposes, we actually recommend that you study them thoroughly.  
  14477.           Having OASIS installed in  your  system  and  being  already somewhat
  14478.           familiar with  its operation  (It's dead easy, very intuitive indeed)
  14479.           you will then be in a position to  examine the  specifications of the
  14480.           formats used in these sample programs.
  14481.           For each  program, under  the header  'What you  could try:' you will
  14482.                                                 'What you  could try:'
  14483.           find some ideas and recommendations to familiarize yourself  with SCL
  14484.           and to understand the features & constructs used in the program under
  14485.           review.  
  14486.           By following these recommendations, you will soon realize  how simple
  14487.           and  effective  the  use  of  SCL  can  be.  In the mean time you can
  14488.           appreciate the purity of code, the speed and the flexibility provided
  14489.           by OASIS SCL designed programs. 
  14490.  
  14491.  
  14492.           Below is a brief overview of all sample programs described herewith.
  14493.  
  14494.           SAMPLE1
  14495.           SAMPLE1
  14496.           A very short program including a single format. This program is of no
  14497.           practical  use  and  is   mainly  intended   to  exhibit   the  basic
  14498.           architecture and requirements of any SCL program. 
  14499.  
  14500.           SAMPLE2
  14501.           SAMPLE2
  14502.           A simple program to print mailing labels on your printer. 
  14503.  
  14504.           SAMPLE3
  14505.           SAMPLE3
  14506.           A  program  demonstrating  how  the  SCL  format stack works. In this
  14507.           example,    up    to  10  formats  are  displayed  on   the    screen
  14508.           simultaneously, overlapping each other. 
  14509.  
  14510.           SAMPLE4
  14511.           SAMPLE4
  14512.           An automatic  Disk menu program. Any program can be executed directly
  14513.           from the menu just  by pointing  to it.  It can  also let  you wander
  14514.           across all subdirectories on your disk. 
  14515.  
  14516.           SAMPLE5
  14517.           SAMPLE5
  14518.           A little  Demo Program  giving an overview on some of the features of
  14519.           SCL. Run it !
  14520.  
  14521.  
  14522.  
  14523.  
  14524.  
  14525.  
  14526.  
  14527.  
  14528.  
  14529.  
  14530.  
  14531.           Appendix A,  sample programs discussion                      page 191
  14532.           Appendix A,  sample programs discussion                      page 191
  14533.  
  14534.  
  14535.  
  14536.  
  14537.  
  14538.  
  14539.  
  14540.  
  14541.           OASIS Evaluation Reference Manual
  14542.           OASIS Evaluation Reference Manual
  14543.  
  14544.  
  14545.                              Example 1  (OASIS Easy Fields) 
  14546.                              Example 1  (OASIS Easy Fields) 
  14547.                              ______________________________
  14548.  
  14549.  
  14550.           Due to  its  simplicity,  the  first  example  program  offers little
  14551.           practical use,  but beside  showing the  very basic structure and the
  14552.           minimum requirements of any  SCL program  it is  perfectly suited for
  14553.           your first acquaintance with OASIS. 
  14554.  
  14555.  
  14556.  
  14557.           It consists of the following files:
  14558.  
  14559.  
  14560.           SAMPLE1.SCS : The format file, containing a single format. 
  14561.  
  14562.           SAMPLE1.SCI : The index file to above.
  14563.           SAMPLE1.MSG : Contains all Field Messages.
  14564.                                      Field Messages
  14565.           SAMPLE1.PAS : The Turbo Pascal source program as listed below. 
  14566.  
  14567.           SAMPLE1.EXE : Compiled version of SAMPLE1.PAS.
  14568.  
  14569.  
  14570.           Below is  a complete  listing of SAMPLE1.PAS. It is meant to give you
  14571.           some basic knowledge about programming with  SCL. As  you can  see it
  14572.           can't be easier. Note how little code is required. 
  14573.  
  14574.  
  14575.           PROGRAM first;
  14576.           {$V-}          {No Length Checks for Strings. Mandatory for SCL} USES
  14577.           SCL;      {Make SCL accessible}
  14578.  
  14579.           PROCEDURE handle_first;   {This  Procedure  handles  format 'first'.}
  14580.           BEGIN;
  14581.             Select_Format('first'); {Load the format from disk}
  14582.             Display_Format(0,0);      {Display it  in the upper left corner}   
  14583.           REPEAT
  14584.               Handle_Format;      {Complete  Loop to  handle format  input}    
  14585.           UNTIL Format_Done;   {Either completed or abort key pressed} END;
  14586.  
  14587.  
  14588.           BEGIN; {of main}
  14589.             Select_Format_File('Sample1');   {initialize SCL and load the} 
  14590.                                              {format file 'Sample1'}      
  14591.             handle_first;             {load,display and handle the format} 
  14592.             Close_Formats;            {terminate SCL }
  14593.           END.  {of main}
  14594.  
  14595.  
  14596.  
  14597.  
  14598.  
  14599.  
  14600.  
  14601.  
  14602.  
  14603.  
  14604.           Appendix A,  sample programs discussion                      page 192
  14605.           Appendix A,  sample programs discussion                      page 192
  14606.  
  14607.  
  14608.  
  14609.  
  14610.  
  14611.  
  14612.  
  14613.  
  14614.           OASIS Evaluation Reference Manual
  14615.           OASIS Evaluation Reference Manual
  14616.  
  14617.  
  14618.           Explanations of SAMPLE1.PAS
  14619.           Explanations of SAMPLE1.PAS
  14620.  
  14621.  
  14622.  
  14623.           Compiler Option '$V-'
  14624.           Compiler Option '$V-'
  14625.  
  14626.           This  Option  is  required  in  any  SCL  program. More details about
  14627.           compiler options can be found in your 'TURBO PASCAL' manual.  Without
  14628.           this compiler option specified SCL programs  won't compile. 
  14629.  
  14630.  
  14631.            
  14632.           USES Statement
  14633.           USES Statement
  14634.  
  14635.           "USES SCL;" makes SCL accessible from within this program.
  14636.  
  14637.  
  14638.            
  14639.           Main Program
  14640.           Main Program
  14641.  
  14642.           The first statement is Select_Format_File('Sample1');. This procedure
  14643.                                  Select_Format_File('Sample1');
  14644.           initializes SCL and all required  files.  Since  no  file SAMPLE1.ERR
  14645.           exists in  this case, SCL only initializes the error numbers (without
  14646.           the messages).
  14647.           'Select_Format_File' is the first SCL statement to be executed and it
  14648.           appears only once in any program. 
  14649.           Close_Formats;  is  the  last  SCL statement. It`closes all files and
  14650.           Close_Formats;
  14651.           frees the memory space previously used by SCL. 
  14652.           Between these  two  statements,  the  procedure  which  processes the
  14653.           format in this program, Handle_first, is called.
  14654.                                   Handle_first
  14655.  
  14656.  
  14657.  
  14658.           Format Handling
  14659.           Format Handling
  14660.  
  14661.           The procedure  'Handle_First' performs  the complete  handling of our
  14662.           screen format.
  14663.           The first statement, 'Select_Format('first');' loads our format (with
  14664.                                'Select_Format('first');'
  14665.           the  name  'First')  from  the  format  file into the format stack in
  14666.           memory.
  14667.           'Display_Format(0,0);' then displays it on the screen starting at the
  14668.           upper left corner (Displacement 0,0).
  14669.  
  14670.           Then follows the actual format handling loop:
  14671.  
  14672.  
  14673.           REPEAT
  14674.             Handle_Format;        
  14675.           UNTIL Format_Done;
  14676.  
  14677.  
  14678.  
  14679.  
  14680.  
  14681.  
  14682.  
  14683.           Appendix A,  sample programs discussion                      page 193
  14684.           Appendix A,  sample programs discussion                      page 193
  14685.  
  14686.  
  14687.  
  14688.  
  14689.  
  14690.  
  14691.  
  14692.  
  14693.           OASIS Evaluation Reference Manual
  14694.           OASIS Evaluation Reference Manual
  14695.  
  14696.  
  14697.           The same  Loop is  used to  process any format in SCL.  The procedure
  14698.           Handle_Format is exited when any of the following occurs: 
  14699.           Handle_Format
  14700.  
  14701.           * Before a new field on the format is initialized (=entered) 
  14702.           * Before a field is left 
  14703.           * Before the format is left (if it is finished)
  14704.  
  14705.           * and, optionally, depending on the format specifications, if a
  14706.             User Function Key has been pressed. 
  14707.             User Function Key
  14708.  
  14709.  
  14710.           The boolean function  'Format_Done'  returns  FALSE  as  long  as the
  14711.                                 'Format_Done'
  14712.           format has not been finished. 
  14713.           The format  is considered  to be finished if any one of the following
  14714.           conditions occurs: 
  14715.  
  14716.           * All mandatory fields are filled in and either 'Escape' was hit
  14717.             or 'Return' was pressed while being in the last field. 
  14718.  
  14719.           * The 'Abort' key (F10) is pressed.
  14720.  
  14721.           Apart from reading and writing fields  and, the  format handling loop
  14722.           is always the same, independent of the number and type of fields on a
  14723.           format. In fact, the above loop can fulfill  the handling  of any SCL
  14724.                                                                         any
  14725.           screen format. There is no need to define any logic for Help screens,
  14726.           Display of messages, Input error handling,   field  check and  so on.
  14727.           All  this  is  performed  automatically  by SCL as part of the Format
  14728.           Specifications which can be modified anytime via SFD. 
  14729.  
  14730.           Note:  This program does not provide the facility to read or to write
  14731.           Note:
  14732.           into fields. This will be covered in the next examples.
  14733.  
  14734.  
  14735.  
  14736.           What you could try :
  14737.           What you could try :
  14738.  
  14739.            1.  Run the program and see what happens.
  14740.  
  14741.            2.  Load the format into SFD and study its specifications. 
  14742.  
  14743.            3.  Add  a  field  to  the format 'First' and/or re-specify existing
  14744.                fields. 
  14745.  
  14746.            4.  Create your own format and  modify  the  program  to  process it
  14747.                according to your requirements. 
  14748.  
  14749.  
  14750.  
  14751.  
  14752.  
  14753.  
  14754.  
  14755.  
  14756.  
  14757.  
  14758.  
  14759.           Appendix A,  sample programs discussion                      page 194
  14760.           Appendix A,  sample programs discussion                      page 194
  14761.  
  14762.  
  14763.  
  14764.  
  14765.  
  14766.  
  14767.  
  14768.  
  14769.           OASIS Evaluation Reference Manual
  14770.           OASIS Evaluation Reference Manual
  14771.  
  14772.  
  14773.                              Example 2  (OASIS Print Labels)
  14774.                              Example 2  (OASIS Print Labels)
  14775.                              _______________________________
  14776.  
  14777.  
  14778.           This program  captures address  data from a screen format and uses it
  14779.           to output a specified number of mailing labels  on your  printer. Its
  14780.           basic structure  is exactly the same as in example 1. For this reason
  14781.           only the new features are discussed. 
  14782.           Notice the use of prompt  and  error  message  fields  (called output
  14783.                                                                          output
  14784.           field in OASIS) at the bottom of your screen.
  14785.           field
  14786.           The error  messages are held in a file called SAMPLE2.ERR. Failing to
  14787.           provide such  file would  still produce  error numbers.  In this very
  14788.           case  SAMPLE2.ERR  is  just  a  straight  copy of 'SCL.ERR' therefore
  14789.           exclusively contains messages for SCL internal errors handling rather
  14790.           than any user defined ones. 
  14791.           References to other files description can be found in example 1.
  14792.  
  14793.  
  14794.  
  14795.           It consists of the following files:
  14796.  
  14797.  
  14798.           SAMPLE2.SCS : The format file, containing a single format. 
  14799.  
  14800.           SAMPLE2.SCI : The index file to above.
  14801.           SAMPLE2.MSG : Contains all Field Messages.
  14802.                                      Field Messages
  14803.           SAMPLE2.PAS : The Turbo Pascal source program as listed below. 
  14804.  
  14805.           OAS2LAB.EXE : Compiled version of SAMPLE2.PAS.
  14806.  
  14807.  
  14808.  
  14809.  
  14810.           The format file SAMPLE2.SCS
  14811.           The format file SAMPLE2.SCS
  14812.  
  14813.           It contains 3 formats:
  14814.  
  14815.           'Address' : The label entry format.
  14816.           'Autohelp': See the AutoHelp Feature and the note below. 
  14817.                               AutoHelp Feature
  14818.           'Forhelp' : Specified as the format to be displayed if F1 is
  14819.                                                                  F1
  14820.                       pressed in the global specifications of 'Address'. 
  14821.  
  14822.           Note:   In case 'Autohelp' cannot be found, SCL displays the adequate
  14823.           Note:   
  14824.           error message. Setting the SCL variable 'Autohelp_Set' to false would
  14825.           prevent its display. 
  14826.           For the format 'Address', no Field Help Formats have been specified. 
  14827.                                        Field Help Formats
  14828.  
  14829.  
  14830.  
  14831.  
  14832.  
  14833.  
  14834.  
  14835.  
  14836.  
  14837.  
  14838.  
  14839.           Appendix A,  sample programs discussion                      page 195
  14840.           Appendix A,  sample programs discussion                      page 195
  14841.  
  14842.  
  14843.  
  14844.  
  14845.  
  14846.  
  14847.  
  14848.  
  14849.           OASIS Evaluation Reference Manual
  14850.           OASIS Evaluation Reference Manual
  14851.  
  14852.  
  14853.           Explanations of SAMPLE2.PAS
  14854.           Explanations of SAMPLE2.PAS
  14855.  
  14856.  
  14857.           The following  describes all  new SCL constructs introduced with this
  14858.           program.  You  can  find  the  complete   program  listing   on  your
  14859.           distribution disks. 
  14860.  
  14861.  
  14862.  
  14863.           Beep_Time:=2;
  14864.           Beep_Time:=2;
  14865.  
  14866.           This statement changes the duration of SCL's 'Beep' sound. By default
  14867.           this value is set to 4. Modifying it as shown above causes the 'Beep'
  14868.           to be shorter.
  14869.           Most of  the other  SCL default values can be modified in exactly the
  14870.           same fashion.
  14871.  
  14872.  
  14873.  
  14874.           REPEAT                   {stay in loop until 'Abort' is pressed}  
  14875.            Get_Data;                {display format and obtain data}
  14876.            IF NOT Format_Aborted THEN   {format contains valid data}
  14877.              Print_Labels;              {then print the desired labels}
  14878.           UNTIL Format_Aborted;         {F10 ('Abort') key was pressed} 
  14879.  
  14880.  
  14881.           'Get_Data' is the familiar format handling  loop, literally identical
  14882.           to the one discussed in example 1.
  14883.           'Format_Aborted' is  a boolean variable, which is TRUE if a format is
  14884.           aborted rather than normally  completed. In  other words,  as long as
  14885.           'Format_Aborted' is  FALSE we  know that  the format was completed in
  14886.           the normal way and therefore contains valid data in agreement  to the
  14887.           format specifications.
  14888.           'Print_Labels'  contains  routines  to  read  out  the content of the
  14889.           format and print the appropriate mailing labels. Obviously,  this can
  14890.           only be  done if  the format  contains valid  data (i.e  has not been
  14891.           aborted). 
  14892.           This  sequence (Display of an empty format,  reading  the information
  14893.           and printing  the desired  quantity of  labels) is repeated until the
  14894.           user terminates by pressing 'Abort'.  
  14895.  
  14896.  
  14897.  
  14898.           Display_Format(X_Max DIV 2,Y_Max DIV 2);
  14899.           Display_Format(X_Max DIV 2,Y_Max DIV 2);
  14900.  
  14901.           X_Max is a function  returning  the  maximum  horizontal displacement
  14902.           possible for  the current  format. Y_Max returns the maximum vertical
  14903.           displacement.  Hence  'Display_Format(X_Max,Y_Max)'  would  display a
  14904.           format in  the lower  right corner  of the screen. Combined with 'DIV
  14905.           2', the format is consequently displayed in the center of the screen.
  14906.  
  14907.  
  14908.  
  14909.  
  14910.  
  14911.  
  14912.           Appendix A,  sample programs discussion                      page 196
  14913.           Appendix A,  sample programs discussion                      page 196
  14914.  
  14915.  
  14916.  
  14917.  
  14918.  
  14919.  
  14920.  
  14921.  
  14922.           OASIS Evaluation Reference Manual
  14923.           OASIS Evaluation Reference Manual
  14924.  
  14925.  
  14926.           Reading the Format Content
  14927.           Reading the Format Content
  14928.  
  14929.           The procedure  'Print_Labels'  is  also  tasked  to  read  the format
  14930.           content. Below  you find  a complete  listing of  this procedure. Its
  14931.           relevant contructs are discussed afterwards.
  14932.  
  14933.  
  14934.           PROCEDURE Print_Labels; {prints desired Qty of labels using  the} VAR
  14935.                             {data on format 'Address'}
  14936.             Wrkstr: String80;
  14937.             I     : INTEGER;
  14938.  
  14939.           BEGIN;
  14940.             FOR I:=1 TO Nr(G_Cont(7)) DO     {number of labels}
  14941.               BEGIN;
  14942.                 IF G_Sel(1) THEN Wrkstr:=G_Cont(1) ELSE`  {'Mr'}
  14943.                 IF G_Sel(2) THEN Wrkstr:=G_Cont(2) ELSE   {'Mrs'}
  14944.                 IF G_Sel(3) THEN Wrkstr:=G_Cont(3);       {'Miss'}
  14945.                 WRITELN(lst,wrkstr,' ',g_cont(4));{concatenate  the above}     
  14946.                    {with a space and the content of the 'Name' field}
  14947.                 WRITELN(Lst);              {Blank line}
  14948.                 WRITELN(Lst,G_Cont(5));    {the street}
  14949.                 WRITELN(Lst,Capital(G_Cont(6)));    {the city}
  14950.                 WRITELN(Lst,Charstring('=',LENGTH(G_Cont(6)))); 
  14951.                                 {underline the city with '=' chars}
  14952.                 WRITELN(Lst);
  14953.                 WRITELN(Lst);               {Two blank lines}
  14954.               END;          {for loop}
  14955.           END;    {procedure print_labels}
  14956.  
  14957.  
  14958.  
  14959.           Explanations to the above Procedure
  14960.           Explanations to the above Procedure
  14961.  
  14962.           As mentioned earlier in this manual,  fields on  formats can  be read
  14963.           from the  very moment a format is handled ('Handle_Format') until the
  14964.           next one is just about to be processed. 
  14965.           In our example this is done at the completion of the format. 
  14966.  
  14967.           'G_Cont(n)' is a function returning the content of field 'n'  in form
  14968.           of a string.
  14969.  
  14970.           'Nr' is another function converting a string into an integer number.
  14971.  
  14972.           Therefore the construct 'Nr(G_Cont(7)' reads the content of
  14973.           field 7,  converts it  and returns  it in  form of an integer number.
  14974.           Please note that there  is no  need to  check whether  field 7 really
  14975.           contains an  Integer number,  since the  relevant checks have already
  14976.           been  performed by SCL in  accordance   with   the  specifications of
  14977.           the format  itself. We can therefore be sure at this  moment that the
  14978.           field contains an integer  in  the predetermined range (1..25 in this
  14979.           case).
  14980.  
  14981.  
  14982.  
  14983.  
  14984.           Appendix A,  sample programs discussion                      page 197
  14985.           Appendix A,  sample programs discussion                      page 197
  14986.  
  14987.  
  14988.  
  14989.  
  14990.  
  14991.  
  14992.  
  14993.  
  14994.           OASIS Evaluation Reference Manual
  14995.           OASIS Evaluation Reference Manual
  14996.  
  14997.  
  14998.           'G_Sel(n)' is  a function returning the Selected status of field 'n'.
  14999.                                                   Selected
  15000.           Fields 1 to 3 are arranged into a Group of constants. This means that
  15001.                                             Group
  15002.           only  one  field  can  be  selected  at  any time. Since we also have
  15003.           specified this group as Mandatory, we know that  at least  (and only)
  15004.                                   Mandatory
  15005.           one field  has been selected. In our example, we find out which field
  15006.           this is and move its content ('Mr','Mrs' or 'Miss') to  'Wrkstr'. The
  15007.           content of  field 4  (the name)  is then  added to it, seperated by a
  15008.           blank space, and finally the whole string is printed. 
  15009.  
  15010.           Next, the content of field 5 (Street) is read and printed. 
  15011.  
  15012.           The City (content of field 6)  is  printed  in  capital  letters. The
  15013.           construct  'Capital(G_Cont(6))'  elegantly  performs  this operation.
  15014.           Finally to underline the  city  with  '='  characters,  the construct
  15015.           'Charstring('=',length(g_cont(6)))'   returns   a   string   of   '='
  15016.           characters with a length of  the  information  contained  in  field 6
  15017.           (City).
  15018.  
  15019.  
  15020.  
  15021.           Help system
  15022.           Help system
  15023.  
  15024.           As previously  mentioned, the format file for this program contains 3
  15025.           formats, two of them being 'Help screens'. As  you probably realized,
  15026.           there is  no logic whatsoever in the program to handle these screens.
  15027.           In order to feature an SCL program with help screens, all you have to
  15028.           do is  to design  them and add their names in the format specs of the
  15029.           format(s) they relate to.  The Autohelp  screen does  not have  to be
  15030.                                          Autohelp
  15031.           specified at  all. SCL checks whether it exists and if it does, it is
  15032.           automatically displayed after a  predetermined number  of consecutive
  15033.           input errors has occurred.
  15034.           The  name  of  the  'Autohelp'  format  must  be identical to the one
  15035.           specified  as 'Autohelp_Screen' in SCLs Global Declarations (Default:
  15036.           'AutoHelp').
  15037.  
  15038.  
  15039.                        
  15040.           Note:    Help  screens  relative  to  a  Format are specified in that
  15041.           Note:                                    Format
  15042.           formats Global  Specifications. Help  screens associated  with one or
  15043.                   Global  Specifications
  15044.           more fields  on a format are specified in the Field specifications of
  15045.                fields                                   Field specifications
  15046.           the appropriate field(s). 
  15047.  
  15048.  
  15049.  
  15050.           Input Messages
  15051.           Input Messages
  15052.  
  15053.           In order to  display  explanatory  field  input  messages  in  an SCL
  15054.           program  you  just  have  to  specify  these  messages  in  the Field
  15055.                                                                           Field
  15056.           Specifications of the appropriate field and  enter the  number of the
  15057.           Specifications
  15058.           field they  should be  displayed into in the Global Specifications of
  15059.                                                        Global Specifications
  15060.           the format. Again, there is  no  logic  required  within  the program
  15061.           itself for this feature to be incorporated.
  15062.  
  15063.  
  15064.  
  15065.  
  15066.  
  15067.           Appendix A,  sample programs discussion                      page 198
  15068.           Appendix A,  sample programs discussion                      page 198
  15069.  
  15070.  
  15071.  
  15072.  
  15073.  
  15074.  
  15075.  
  15076.  
  15077.           OASIS Evaluation Reference Manual
  15078.           OASIS Evaluation Reference Manual
  15079.  
  15080.  
  15081.           Error Messages
  15082.           Error Messages
  15083.  
  15084.           System or  user generated error messages are  automatically displayed
  15085.           if the number of the field they should be displayed into is specified
  15086.           in the Global Specifications of the appropriate format.
  15087.                  Global Specifications
  15088.           In case no error file (<Name>.ERR) exists, only the error number will
  15089.           be shown, otherwise the suitable message is displayed. 
  15090.  
  15091.  
  15092.  
  15093.  
  15094.           What you could try :
  15095.           What you could try :
  15096.  
  15097.            1.  Run the program and see what it does.
  15098.  
  15099.            2.  Try to enter invalid data and see how the program reacts.
  15100.  
  15101.            3.  Load the format file into  SFD and study the  specifications of 
  15102.                the three formats.
  15103.  
  15104.            4.  Run the   program without the file SAMPLE2.ERR being  available 
  15105.                and see what happens if you make an input error.
  15106.  
  15107.            5.  Change the  parameters  'Error Msg Field'  and/or  'Input   Msg 
  15108.                Field' in  the Global  Specifications of the format 'ADDRESS' to
  15109.                0 (zero) and run the program. See what happens.
  15110.  
  15111.            6.  Try to implement 'Field Help Screens' for 'ADDRESS'. 
  15112.  
  15113.            7.  Allow the program to print up to 50 labels (25 is the   current 
  15114.                maximum).
  15115.  
  15116.            8.  Change some   other  Global SCL  Parameters in   the   program, 
  15117.                recompile and run it.
  15118.  
  15119.            9.  Add a  field for the postal code on 'ADDRESS' and  modify   the 
  15120.                program in such a way that it is printed on the label.
  15121.             
  15122.  
  15123.  
  15124.  
  15125.  
  15126.  
  15127.  
  15128.  
  15129.  
  15130.  
  15131.  
  15132.  
  15133.  
  15134.  
  15135.  
  15136.  
  15137.  
  15138.  
  15139.  
  15140.           Appendix A,  sample programs discussion                      page 199
  15141.           Appendix A,  sample programs discussion                      page 199
  15142.  
  15143.  
  15144.  
  15145.  
  15146.  
  15147.  
  15148.  
  15149.  
  15150.           OASIS Evaluation Reference Manual
  15151.           OASIS Evaluation Reference Manual
  15152.  
  15153.              
  15154.                            Example 3  (OASIS Formats Stack)  
  15155.                            Example 3  (OASIS Formats Stack)  
  15156.                            ________________________________
  15157.  
  15158.  
  15159.           This  Program  is  a  demonstration  of  the  ability of SCL to stack
  15160.           formats. A format is  pushed on  the stack  whenever a  new format is
  15161.           loaded while  the previous one is not yet finished. It is popped from
  15162.           the stack, i.e. restored as soon as the format on top of the stack is
  15163.           finished.
  15164.  
  15165.            
  15166.           In simple terms, this program works as follows:
  15167.  
  15168.                Load & Display format 'One'.
  15169.                Start handling format 'One'.
  15170.                Load & Display format 'Two'.
  15171.                Start handling format 'Two'.
  15172.                -- Keep doing the  -- 
  15173.                -     same          -
  15174.                -  with formats     -
  15175.                - 'Three' to 'Nine' - 
  15176.                Load & Display format 'Ten'.
  15177.                Start handling format 'Ten'.
  15178.                Terminate format 'Ten'.
  15179.                Restore format 'Nine'.
  15180.                Continue handling format 'Nine'.
  15181.                Terminate format 'Nine'.
  15182.                -- and so on down --
  15183.                -- to format 'Two'--
  15184.                Restore format 'One'.
  15185.                Continue handling format 'One'.
  15186.                Terminate format 'One'.
  15187.                Terminate program.
  15188.  
  15189.  
  15190.           This means  that while  format ten  is being  loaded, nine unfinished
  15191.           formats are waiting in the stack  to be  continued. This  may sound a
  15192.           lot, but  SCL can  simultaneously hold  far more formats in its stack
  15193.           without any problems. There is no real limit  apart from  the size of
  15194.           your computer memory. 
  15195.           If you  should require  more than  20 unfinished formats on the stack
  15196.           simultaneously,    you  must  then  adjust   the     Global  Constant
  15197.                                                                Global  Constant
  15198.           'Max_Heap_Screens' in  SCL to  reflect the required maximum number of
  15199.           formats. For guidelines to  calculate the  memory requirements  of an
  15200.           SCL program  please refer  to 'System Resource Considerations' in the
  15201.           reference manual.
  15202.  
  15203.                        
  15204.           Note:    The  above  consideration  only  refers  to  the  number  of
  15205.           Note:
  15206.           unfinished Formats,  formats that  are finished before another format
  15207.           unfinished Formats
  15208.           is loaded do not take up any space on the stack. The  Total Number of
  15209.                                                                 Total Number of
  15210.           Formats in a program is only restricted by your disk space capacity.
  15211.           Formats
  15212.  
  15213.  
  15214.  
  15215.  
  15216.  
  15217.  
  15218.           Appendix A,  sample programs discussion                      page 200
  15219.           Appendix A,  sample programs discussion                      page 200
  15220.  
  15221.  
  15222.  
  15223.  
  15224.  
  15225.  
  15226.  
  15227.  
  15228.           OASIS Evaluation Reference Manual
  15229.           OASIS Evaluation Reference Manual
  15230.  
  15231.  
  15232.           Listing of SAMPLE3.PAS
  15233.           Listing of SAMPLE3.PAS
  15234.  
  15235.           PROGRAM Stackdemo;
  15236.           {$V-}                {Disables LENGTH Checks FOR Strings}
  15237.           USES SCL;            {invoke SCL}
  15238.  
  15239.  
  15240.           PROCEDURE Scl_Defaults;
  15241.           BEGIN;
  15242.             Beep_Time:=20;          {Beep shorter}
  15243.             Auto_Help_Set:=FALSE;   {No autohelp in this program}
  15244.           END;
  15245.  
  15246.           FUNCTION Up:BOOLEAN;
  15247.           BEGIN;
  15248.             Up:=FALSE;
  15249.             IF User_Function THEN   {user function key pressed}
  15250.               BEGIN;
  15251.                 IF (Active_Field = 1) AND       {'Up' field}
  15252.                  (Char_Code = Code_Return) THEN { wants to select field}   
  15253.                   BEGIN;
  15254.                     Up:=TRUE;
  15255.                     Char_Code:=Code_Noop;   { SCL should not do anything}  
  15256.                   END                       { with this input character,}  
  15257.               END;                          { i.e not mark the field as }
  15258.           END;                              { selected}
  15259.  
  15260.  
  15261.           PROCEDURE Do_Format(This_Name:String10;This_X,This_Y:INTEGER); 
  15262.           VAR
  15263.             N,
  15264.             Next_Name:String10;
  15265.             Next_X,
  15266.             Next_Y   :INTEGER;
  15267.  
  15268.           BEGIN;
  15269.             Select_Format(This_Name);          {load it from disk}
  15270.             Display_Format(This_X,This_Y);     {display it }
  15271.             Next_X:=This_X+2;          {increase displacements}
  15272.             Next_Y:=This_Y+1;          {for the next format to be loaded}  
  15273.             REPEAT
  15274.               Handle_Format;                   {handle this format}
  15275.               IF Up THEN                       {user wants to go up}       
  15276.                 BEGIN;
  15277.                   N:=Capital(This_Name);       {capital letters}
  15278.                   IF N =  'ONE'   THEN Next_Name:='Two'   ELSE {Which}     
  15279.                   IF N =  'TWO'   THEN Next_Name:='Three' ELSE {format}    
  15280.                   IF N =  'THREE' THEN Next_Name:='four'  ELSE {is}
  15281.                   IF N =  'FOUR'  THEN Next_Name:='Five'  ELSE {the
  15282.                   IF N =  'FIVE'  THEN Next_Name:='Six'   ELSE {next}      
  15283.                   IF N =  'SIX'   THEN Next_Name:='Seven' ELSE {one} 
  15284.                   IF N =  'SEVEN' THEN Next_Name:='Eight' ELSE { ? } 
  15285.  
  15286.  
  15287.  
  15288.  
  15289.           Appendix A,  sample programs discussion                      page 201
  15290.           Appendix A,  sample programs discussion                      page 201
  15291.  
  15292.  
  15293.  
  15294.  
  15295.  
  15296.  
  15297.  
  15298.  
  15299.           OASIS Evaluation Reference Manual
  15300.           OASIS Evaluation Reference Manual
  15301.  
  15302.  
  15303.                   IF N =  'EIGHT' THEN Next_Name:='Nine'  ELSE
  15304.                   IF N =  'NINE'  THEN Next_Name:='Ten';
  15305.                   Do_Format(Next_Name,Next_X,Next_Y);      {Recursive}
  15306.                 END;            {call with new name and displacements}
  15307.              UNTIL Format_Done; {this format is finished.}
  15308.           END; {of Do_Format}
  15309.  
  15310.           BEGIN; {of main}
  15311.             Select_Format_File('Sample3');   {initialize SCL and load}     
  15312.                                              {format file 'Sample2'}    
  15313.             Scl_Defaults;                    {change some SCL defaults}    
  15314.             Do_Format('one',0,0);            {display&handle format 'one'} 
  15315.             Close_Formats;                   {terminate SCL}
  15316.           END.  {of main}
  15317.  
  15318.  
  15319.  
  15320.           Explanations of SAMPLE3.PAS
  15321.           Explanations of SAMPLE3.PAS
  15322.  
  15323.           The only  new features  in this  sample program  are a User Interrupt
  15324.                                                                  User Interrupt
  15325.           Procedure and the fact that a new format is called  up while  the old
  15326.           Procedure
  15327.           one is  not yet  finished. There  is no  need to emphasize how simply
  15328.           this can be achieved using SCL.
  15329.  
  15330.  
  15331.  
  15332.           User Interrupt Procedure 
  15333.           User Interrupt Procedure
  15334.  
  15335.           We mentioned already in the explanations of Sample 1 that  there were
  15336.           four conditions under which the procedure 'Handle_format' was exited.
  15337.           A  User  Interrupt  Procedure  is  a user written routine which takes
  15338.              User  Interrupt  Procedure
  15339.           control at this point.  To accomplish  this, the  appropriate routine
  15340.           (or a  call to it) must be positioned within the format handling loop
  15341.           as follows:
  15342.  
  15343.  
  15344.           REPEAT
  15345.             Handle_Format;
  15346.             {---User Interrupt Routine----}
  15347.           UNTIL Format_Done; 
  15348.  
  15349.  
  15350.           Hence   the   User   Interrupt   routine   is   always   executed  if
  15351.                         User   Interrupt   routine
  15352.           'Handle_Format'  has  been  exited,  i.e.  one of the four conditions
  15353.           occurred. 
  15354.           Among those four possible conditions one states that  a User Function
  15355.                                                                   User Function
  15356.           Key has been pressed.
  15357.           Key
  15358.           This is  actually the condition our user interrupt procedure is based
  15359.           on in this example. 
  15360.           We want  to interfere  as soon  as the  program user  tries to select
  15361.           field 1  (Up). In  case field 2 (Down) is selected no action is taken
  15362.           and SCL terminates the format. (If no interference occurs in the case
  15363.           of field  1, SCL  also automatically  finishes the format since there
  15364.           are no further fields to be filled in). 
  15365.  
  15366.  
  15367.           Appendix A,  sample programs discussion                      page 202
  15368.           Appendix A,  sample programs discussion                      page 202
  15369.  
  15370.  
  15371.  
  15372.  
  15373.  
  15374.  
  15375.  
  15376.  
  15377.           OASIS Evaluation Reference Manual
  15378.           OASIS Evaluation Reference Manual
  15379.  
  15380.  
  15381.           The  test  pertaining  to  the  occurrence  of  the  above  mentioned
  15382.           condition is  performed by the boolean function 'Up'. Up returns TRUE
  15383.           if: 
  15384.  
  15385.  
  15386.                1.   A User Function Key (in this case Return) was pressed
  15387.                and
  15388.                2.   field 1 (the 'Up' field) is currently selected. 
  15389.                and 
  15390.                3.   the current Input character (char_code) is 'Return'.
  15391.  
  15392.  
  15393.           If 'Up' is TRUE, the input character is replaced by  a 'No-Op', which
  15394.           causes SCL  to ignore it later on (SCL will then act as if the Return
  15395.           key was never pressed and consequently wait for User input). 
  15396.           If this does not  happen SCL  would, as  soon as  it regains control,
  15397.           carry on  from where  it left  off and  consequently mark  field 1 as
  15398.           'Selected' before it automatically terminates the format. 
  15399.  
  15400.           If 'Up' returns TRUE, a recursive call to 'Do_Format' is made and the
  15401.           whole process  starts over  again with the next format. If one format
  15402.           is finished, i.e 'Down'  has been  selected or  F10 (Abort)  has been
  15403.           pressed then  SCL automatically restores the previous format from the
  15404.           stack.
  15405.  
  15406.  
  15407.  
  15408.  
  15409.           What you could try:
  15410.           What you could try:
  15411.  
  15412.            1.  Load the format file into  SCL and study the  specifications of 
  15413.                one   of   the  formats (they are all  identical  except  format
  15414.                'Ten', which does not have any fields). 
  15415.            
  15416.            2.  Remove the statement 'Char_code:=Code_Noop;' from the  function 
  15417.                'Up', recompile and run the program and see what happens.
  15418.  
  15419.            3.  Write your  own program  without  recursion and with only 2 or 3
  15420.                formats (you may use the format file from this example).
  15421.  
  15422.  
  15423.  
  15424.  
  15425.  
  15426.  
  15427.  
  15428.  
  15429.  
  15430.  
  15431.  
  15432.  
  15433.  
  15434.  
  15435.  
  15436.  
  15437.  
  15438.           Appendix A,  sample programs discussion                      page 203
  15439.           Appendix A,  sample programs discussion                      page 203
  15440.  
  15441.  
  15442.  
  15443.  
  15444.  
  15445.  
  15446.  
  15447.  
  15448.           OASIS Evaluation Reference Manual
  15449.           OASIS Evaluation Reference Manual
  15450.  
  15451.  
  15452.                          Example 4  (OASIS Automatic Disk Menu)
  15453.                          Example 4  (OASIS Automatic Disk Menu)
  15454.                          ______________________________________
  15455.  
  15456.  
  15457.           This example program  is  quite  a  useful  DOS  utility  program. It
  15458.           displays all executable files of the current directory along with all
  15459.           subdirectories and the parent directory (if  applicable) on  a screen
  15460.           format.
  15461.           You can  execute any  program from the current directory or move to a
  15462.           different subdirectory by just pointing to it.
  15463.           When compared to the three  previous  examples,  this  one  is fairly
  15464.           complex and employs a lot more SCL features. 
  15465.           Despite  (and  maybe  especially  because  of) the fact, that SCL has
  15466.           certainly not been designed  to develop  DOS utilities,  this example
  15467.           demonstrates and highlights its tremendous power and flexibility. 
  15468.  
  15469.  
  15470.           The main new features exhibited in this program are:
  15471.  
  15472.  
  15473.                - The 'Execute' and , 'ExecuteDos' routines.
  15474.            
  15475.                - Background processing.
  15476.  
  15477.                - More sophisticated User Interrupt Procedures. 
  15478.  
  15479.  
  15480.  
  15481.  
  15482.  
  15483.           The  relevant  components  of  the  program  will be discussed in the
  15484.           following.
  15485.  
  15486.  
  15487.           The Procedure Menu
  15488.           The Procedure Menu
  15489.  
  15490.           This program  only uses  one Format  and the  procedure handling this
  15491.           format is  called 'Menu'.  It uses some advanced technics we have not
  15492.           covered yet. 
  15493.           In the  previous  examples  'Display_format'  was  immediately called
  15494.           after  'Select_format'  whereas  here  the  format  is first 'filled'
  15495.           before being displayed. 
  15496.           The  procedures  involved  in   this   task   are  'Init_Dir_Search',
  15497.           'Display_Files' and 'Tell_Result'. 
  15498.           Apart from  this, within  the actual Format handling loop, you find a
  15499.                                                Format handling loop
  15500.           statement which invokes a User Interrupt  Procedure ('Handle_Key') in
  15501.                                     User Interrupt  Procedure
  15502.           case a  User Function  Key has  been pressed.  If the format has been
  15503.                   User Function  Key
  15504.           finished (and was not aborted), the procedure 'Do_Work' is executed. 
  15505.           All the  above mentioned  procedures are  described in  detail on the
  15506.           following pages.
  15507.  
  15508.  
  15509.  
  15510.  
  15511.  
  15512.  
  15513.  
  15514.           Appendix A,  sample programs discussion                      page 204
  15515.           Appendix A,  sample programs discussion                      page 204
  15516.  
  15517.  
  15518.  
  15519.  
  15520.  
  15521.  
  15522.  
  15523.  
  15524.           OASIS Evaluation Reference Manual
  15525.           OASIS Evaluation Reference Manual
  15526.  
  15527.  
  15528.           Init_Dir_Search 
  15529.           Init_Dir_Search
  15530.  
  15531.           This procedure  initializes the  parameters for our Directory search.
  15532.           It sets the boolean variable 'First' to TRUE  and the  search mask to
  15533.           '*.*' (all files). 
  15534.  
  15535.                        
  15536.           Note:  'First' is a parameter for the directory search which if TRUE,
  15537.           Note:
  15538.           causes it to initialize a new search, i.e to find  the first filename
  15539.           matching the  specified mask.  Once the first file has been found, it
  15540.           is set to false and subsequent searches will search for the remaining
  15541.           files.
  15542.  
  15543.  
  15544.  
  15545.           Display_Files
  15546.           Display_Files
  15547.  
  15548.           The first  part of this procedure is a REPEAT..UNTIL loop which calls
  15549.           'Dir'. If  'Dir'  returns  a  result  of  0  (zero),  meaning  that a
  15550.           filename      matching   the   mask   was  found,    the    procedure
  15551.           'Pick_it_if_we_need_it' is called, which determines whether this file
  15552.           is either  an executable  file or  a directory  entry. If this is the
  15553.           case, the file name  is moved  to the  first available  field and the
  15554.           field count is increased by 1. In order to determine whether the file
  15555.           found should be displayed on the format, we  access the  SCL variable
  15556.           'Dta'  (For  details  about  the  content  of  'Dta'  please refer to
  15557.           'Advanced Programming Technics'in the reference manual). 
  15558.           We exit the REPEAT..UNTIL  loop under  any one  of the  following two
  15559.           conditions:  either  the  format  is  full or there are no more files
  15560.           matching the mask.  In  the  latter  case  we  reinitialize  'Dir' by
  15561.           calling  'Init_Dir_Search'  again  and  we  also  blank the remaining
  15562.           fields on the format. In every case,  we  also  make  a  note  of the
  15563.           highest field on our format containing a filename entry.
  15564.           Now that's where the real tricky part starts:
  15565.           On this  format we  want to  have two active fields at the same time,
  15566.           one being the field containing the  filename to  be executed  and the
  15567.           other one  where the optional parameters can be entered. SCL can only
  15568.           have one active field at a time, therefore we have to cheat somehow.
  15569.           One way  to  achieve  this  is  to  declare  all  the  fields holding
  15570.           filenames (2  to 46)  as 'Output'  fields and manipulate these fields
  15571.           independent from the normal SCL field  processing. This  just leaves,
  15572.           what SCL  concerns, field  49 as  the only cursor accessible field on
  15573.           this format  which  is  consequently  active,  i.e  ready  for input,
  15574.           anytime the format is displayed. 
  15575.           In order to highlight the currently chosen filename field, we use the
  15576.           'selected'  field  attribute.  The   procedure  'Handle_Keys',  which
  15577.           monitors  the  'arrow'  keys,  determines  which  filename  is  to be
  15578.           highlighted next and the  highlighting  itself  is  performed  by the
  15579.           procedure 'New_Field'. 
  15580.  
  15581.  
  15582.  
  15583.  
  15584.  
  15585.  
  15586.  
  15587.  
  15588.           Appendix A,  sample programs discussion                      page 205
  15589.           Appendix A,  sample programs discussion                      page 205
  15590.  
  15591.  
  15592.  
  15593.  
  15594.  
  15595.  
  15596.  
  15597.  
  15598.           OASIS Evaluation Reference Manual
  15599.           OASIS Evaluation Reference Manual
  15600.  
  15601.  
  15602.           Handle_Keys
  15603.           Handle_Keys
  15604.  
  15605.           This  procedure  acts  on  all  User  Function  Keys defined for this
  15606.                                           User  Function  Keys
  15607.           format.
  15608.           In  case F9 is pressed,  the field holding  the currently highlighted
  15609.           filename is  deselected and  'Display_files' is  called to refill the
  15610.           format. 
  15611.           In case the display  of the  current directory  is not  yet complete,
  15612.           ('first' is FALSE) the remaining entries are searched to be displayed
  15613.           now, otherwise a new search cycle is initiated  to display  the first
  15614.           page of file names.
  15615.  
  15616.           In  case,  one  of  the  'arrows'  or  'Home'  or 'End' is pressed we
  15617.           determine the next field  (file  name)  to  be  highlighted  and call
  15618.           'Next_Field' to do it. 
  15619.  
  15620.           The  next  two  keys  are  only  intercepted for user convenience: If
  15621.           'Escape'  is  pressed,  it  is  replaced   by  'F10'   (Abort)  which
  15622.           subsequently causes the program to be terminated.
  15623.           If 'Return'  is pressed  and the parameter field (49) contains spaces
  15624.           this key is replaced  by  an  'Escape'  character,  which  causes the
  15625.           format to  be terminated  instantly. The  reason for this is that SCL
  15626.           would interpret 'Return' in this case as a command to switch field 49
  15627.           to  'Edit  Mode'  and  we  would have to press 'Return' (or 'Escape')
  15628.           again to finish the format,  therefore  this  manipulation  saves the
  15629.           user an additional keystroke. 
  15630.  
  15631.           With the  exception of  the last  two cases we want SCL to ignore any
  15632.           other key depression by substituting 'No_Op'. 
  15633.  
  15634.  
  15635.  
  15636.           New_Field
  15637.           New_Field
  15638.  
  15639.           This procedure is called with  two  parameters,  the  field currently
  15640.           highlighted (due  to be  deselected) and the new field (the one about
  15641.           to be selected, i.e highlighted). 
  15642.           This task is performed by the first two statements. 
  15643.           Once this is done, 'current field'  matches the  new field  now being
  15644.           highlighted. 
  15645.           In  the  same  time  frame  three  more fields need to be updated but
  15646.           instead of being processed here it  is treated  as a  background task
  15647.           because another  'Arrow' key  could also  already be pressed. In this
  15648.           case priority is given to handle this key first before  attempting to
  15649.           update any one of the three fields. 
  15650.           By making  this task  a background job we ensure that it is only done
  15651.           when spare time is available, without  delaying any  pending keyboard
  15652.           input.
  15653.           In order  to notify  the Background processing procedure that updates
  15654.                                    Background processing procedure
  15655.           are to be carried out ,  three boolean  flags are  set, one  for each
  15656.           field to be revised.
  15657.            
  15658.  
  15659.  
  15660.  
  15661.  
  15662.           Appendix A,  sample programs discussion                      page 206
  15663.           Appendix A,  sample programs discussion                      page 206
  15664.  
  15665.  
  15666.  
  15667.  
  15668.  
  15669.  
  15670.  
  15671.  
  15672.           OASIS Evaluation Reference Manual
  15673.           OASIS Evaluation Reference Manual
  15674.  
  15675.  
  15676.           Do_Work
  15677.           Do_Work
  15678.  
  15679.           This procedure  first fetches  the file name from the field currently
  15680.           highlighted. In case of a  directory  entry  it  changes  the current
  15681.           directory accordingly. 
  15682.           If we  are dealing  with an executable file instead it first builds a
  15683.           string out of the filename (including  path) and  the parameter entry
  15684.           and then  executes this  file. Depending  on whether  it is an '.EXE'
  15685.           file or not, 'Execute' or 'ExecuteDos' is used. 
  15686.           The reason for this is that all '.BAT' and some  of the  '.COM' files
  15687.           (mainly some external DOS commands) require COMMAND.COM to be present
  15688.           while '.EXE' files can be started directly.  
  15689.           On  return    from  the  previously  executed  program,  a  check for
  15690.           successful execution  is done  and if  this is the case a prompt asks
  15691.           the user to press 'Return' to go back to the menu program (The reason
  15692.           for  not  going  directly  back  is  to give him a chance to read the
  15693.           screen content). 
  15694.           In case of problems during execution we directly go back  to the menu
  15695.           program and 'Tell_Result' displays an appropriate error message. 
  15696.  
  15697.  
  15698.  
  15699.           Tell_Result
  15700.           Tell_Result
  15701.  
  15702.           This procedure simply checks whether 'Execute' or 'ExecuteDos' caused
  15703.           a result code indicating an error. 
  15704.           If an  error occurred  the relevant  (user defined)  error message is
  15705.           displayed in field 50 and a 'beep' is initiated. 
  15706.  
  15707.                        
  15708.           Note:   More information  on user defined error messages can be found
  15709.           Note:
  15710.           under 'Advanced Programming Technics'in this appendix. 
  15711.  
  15712.  
  15713.  
  15714.           LP_Background_Task
  15715.           LP_Background_Task
  15716.  
  15717.           This  is    assigned    as  a  SCL    background    Task    via   the
  15718.           'LP_Background_Pointer:=@LP_Background_Task;'  statement  in the main
  15719.           body of the program.
  15720.           It is called by the SCL  procedure 'Handle_Format'  whenever there is
  15721.           no keyboard  input pending  and no  other work needs to be done. This
  15722.           procedure is  used  here  to  update  fields  46,47  and  49  after a
  15723.           different filename  has been selected by the user. It is based on the
  15724.           simple principle that whenever the  procedure  is  entered  all three
  15725.           flags set by 'Next_Field' are checked. 
  15726.           If  one  of  these  flags  is  found  to be TRUE the pertinent update
  15727.           procedure is performed and the flag is then set to  FALSE. The update
  15728.           procedures themselves  are clear and easy to understand and therefore
  15729.           not separately described here.
  15730.  
  15731.  
  15732.  
  15733.  
  15734.  
  15735.  
  15736.  
  15737.           Appendix A,  sample programs discussion                      page 207
  15738.           Appendix A,  sample programs discussion                      page 207
  15739.  
  15740.  
  15741.  
  15742.  
  15743.  
  15744.  
  15745.  
  15746.  
  15747.           OASIS Evaluation Reference Manual
  15748.           OASIS Evaluation Reference Manual
  15749.  
  15750.  
  15751.                                Example 5  (OASIS SCL Demo)
  15752.                                Example 5  (OASIS SCL Demo)
  15753.                                ___________________________
  15754.  
  15755.  
  15756.  
  15757.           This program  is  a  little  demo  giving  an  overview  on  some SCL
  15758.           features. Although 14 different screen formats are handled it remains
  15759.           a rather simple program.
  15760.           It consists of a main menu proposing a selection of 8 different demos
  15761.           plus the possibility to terminate the program. 
  15762.           In  order  to  demonstrate  background  processing it also features a
  15763.           display of time and date on each format.
  15764.           The  following  is a detailed explanation of its  various procedures.
  15765.  
  15766.  
  15767.  
  15768.  
  15769.  
  15770.                        
  15771.           Menu
  15772.           Menu
  15773.            
  15774.           The  Menu  procedure  is  very  straightforward.  The  menu format is
  15775.           processed using the very  same  basic  Format  Handling  Loop already
  15776.                                                  Format  Handling  Loop
  15777.           described in  example 1.  Once the format is finished, upon detection
  15778.           of the selected field the corresponding demo procedure  is called up.
  15779.           In the  case field  13 being selected, the boolean variable 'Progend'
  15780.           becomes TRUE which then causes the program to  exit the REPEAT..UNTIL
  15781.           loop  and  subsequently  terminates  the demo program. The reason for
  15782.           using this boolean variable rather than 'UNTIL G_Sel(13)' is simple:
  15783.           Just imagine you would  come from  a demo  format where  field 13 was
  15784.           selected.  Since  R_Ptr  would  still  point  to  this  demo  format,
  15785.                             R_Ptr
  15786.           'G_Sel(13)' would access field 13 on this format  rather than  on our
  15787.           menu. We must therefore make sure that we pass 'Handle_Format' (which
  15788.           adjusts R_Ptr to the menu again) before any attempt to  read a field.
  15789.           This  is  realized  by  simply  including the 'G_Sel' into our 'case'
  15790.           statement.
  15791.  
  15792.            
  15793.           Five out of the eight different demos are  performed by  just calling
  15794.           the procedure 'Do_Format' with the appropriate format name while  the
  15795.           other three demos required some additional programming.
  15796.           'Do_Format' is a simple procedure which selects a format, displays it
  15797.           and then handles it. 
  15798.           In  order  to  be  able  to  blank the format when completed the User
  15799.           Interrupt Procedure monitoring 'End_Of_Format' is employed. The other
  15800.           three  demos  are  a  bit  more  complicated  and  will  therefore be
  15801.           discussed in detail.
  15802.  
  15803.  
  15804.  
  15805.  
  15806.  
  15807.  
  15808.  
  15809.  
  15810.  
  15811.  
  15812.  
  15813.           Appendix A,  sample programs discussion                      page 208
  15814.           Appendix A,  sample programs discussion                      page 208
  15815.  
  15816.  
  15817.  
  15818.  
  15819.  
  15820.  
  15821.  
  15822.  
  15823.           OASIS Evaluation Reference Manual
  15824.           OASIS Evaluation Reference Manual
  15825.  
  15826.  
  15827.                                       Country Demo
  15828.                                       Country Demo
  15829.  
  15830.           Country demo demonstrates  SCL's  capability  to  work  with  the DOS
  15831.           country information. 
  15832.           When compared  with 'Do_Format',  the main  procedure of country demo
  15833.           offers two additional features. 
  15834.           The first procedure was added to set up the fields  before the format
  15835.           was  actually  displayed  on  screen  ('Update_Fields').  The  second
  15836.           procedure acts on 'End_of_field'-User Interrupts.
  15837.                                                 Interrupts
  15838.  
  15839.  
  15840.  
  15841.           Procedure Update_Fields
  15842.           Procedure Update_Fields
  15843.            
  15844.           This procedure accesses some  of  the  Country  dependent Information
  15845.           provides by  SCL and  writes it  to the  proper fields on the format.
  15846.           Please note  that  the  numeric  (integer)  values  are  converted to
  15847.           strings using the 'St' function. 
  15848.  
  15849.  
  15850.  
  15851.           Procedure Handle_End_of_Field
  15852.           Procedure Handle_End_of_Field
  15853.  
  15854.           This procedure  is the  actual heart of 'Country demo'. Below you can
  15855.           examine  its  listing.   All   programming   details   are  discussed
  15856.           afterwards.
  15857.  
  15858.  
  15859.  
  15860.           PROCEDURE Handle_End_Of_Field; {user interrupt procedure}
  15861.           BEGIN;
  15862.             IF Active_Field = 4 THEN     {new country code entered}
  15863.               BEGIN;
  15864.                 IF G_Cont(4) > ' ' THEN  {not blank}
  15865.                   BEGIN;
  15866.                     Scl_Country:=Nr(G_Cont(4)); {move it to SCL_Country}   
  15867.                     Get_Country;                {get country information}  
  15868.                     IF (Country <> Scl_Country) AND (Scl_Country > 0) THEN 
  15869.                       BEGIN;            {invalid country code was entered} 
  15870.                         Glb_Error:=24;  {error number to SCL}
  15871.                         Scl_Country:=Nr(G_Cont(5)); {restore old country}  
  15872.                         Get_Country;                {get country info}     
  15873.                       END
  15874.                     ELSE                {country code was valid}
  15875.                       Update_Fields;    {display new country info}
  15876.                   END;
  15877.               END;
  15878.           END;
  15879.  
  15880.            
  15881.  
  15882.  
  15883.  
  15884.  
  15885.  
  15886.  
  15887.           Appendix A,  sample programs discussion                      page 209
  15888.           Appendix A,  sample programs discussion                      page 209
  15889.  
  15890.  
  15891.  
  15892.  
  15893.  
  15894.  
  15895.  
  15896.  
  15897.           OASIS Evaluation Reference Manual
  15898.           OASIS Evaluation Reference Manual
  15899.  
  15900.  
  15901.           The first  two 'IF' statements ensure that we are in field 4 and that
  15902.           this field contains data. 
  15903.           If this is the case,  the  content  will  be  read,  converted  to an
  15904.           integer and placed into 'SCL_Country'.
  15905.           We then  call the  SCL procedure  Get_Country' which accesses the DOS
  15906.           country  information  and   updates   the   relevant   SCL  variables
  15907.           accordingly. 
  15908.  
  15909.           'Get_Country' acts as follows:
  15910.           If  'SCL_Country'  contains  0  (the  default  value)  it borrows the
  15911.           country  information  according  to  the  setting  of  your  computer
  15912.           (Country=xxx  statement  in  CONFIG.SYS). If SCL_Country contains any
  15913.           other value (a Country-code)  then SCL  is set  up according  to this
  15914.           code.
  15915.           Once 'Get_Country' has been called, a check for country code validity
  15916.           is performed.
  15917.           It is valid when either the value returned  in 'Country'  is equal to
  15918.           'SCL_Country' or if 0 was specified for 'SCL_Country'.
  15919.           In case  of invalid country code, the one previously used is restored
  15920.           from  field 5 (we wrote it to this   field   in 'Update_Fields'), and
  15921.           'Get_Country' is called again with this latter value in 'SCL_Country'
  15922.           to restore the variables in SCL back to valid information.
  15923.           In addition, 'Glb_Err' is  set  to  an  error  number  pointing  to a
  15924.           message  in  SAMPLE5.ERR  stating  that  an  invalid country code was
  15925.           entered. 
  15926.           Since    'Glb_Err'  returns    a  value  different   from  0  (zero),
  15927.           'Handle_Format' will enter its input error routine, beep, display the
  15928.           error message and also  refuse the  attempt to  leave field  number 4
  15929.           until a valid country code is keyed in.
  15930.           In case  of a valid code 'Update_Fields' is called once more to write
  15931.           the new information into the corresponding fields.
  15932.  
  15933.  
  15934.                        
  15935.           Note:  Further details  about user  generated error  messages and the
  15936.           Note:
  15937.           use of 'Glb_Err' can be found in this appendix.
  15938.  
  15939.  
  15940.  
  15941.  
  15942.  
  15943.  
  15944.  
  15945.  
  15946.  
  15947.  
  15948.  
  15949.  
  15950.  
  15951.  
  15952.  
  15953.  
  15954.  
  15955.  
  15956.  
  15957.  
  15958.  
  15959.           Appendix A,  sample programs discussion                      page 210
  15960.           Appendix A,  sample programs discussion                      page 210
  15961.  
  15962.  
  15963.  
  15964.  
  15965.  
  15966.  
  15967.  
  15968.  
  15969.           OASIS Evaluation Reference Manual
  15970.           OASIS Evaluation Reference Manual
  15971.  
  15972.  
  15973.                                         Date Demo
  15974.                                         Date Demo
  15975.  
  15976.           Date Demo  demonstrates most  of the  date/time routines in SCLn With
  15977.           the exception that the field  update  procedure  is  called 'Prefill'
  15978.           here,  the  main  procedure  of  'Date_Demo'  is identical to the one
  15979.           described in 'Country_Demo'. 
  15980.           However both  'Prefill'  and the  user Interrupt  Procedure contain a
  15981.                                             user Interrupt  Procedure
  15982.           great  number  of  new  constructs  which  will  be  discussed in the
  15983.           following pages.
  15984.  
  15985.  
  15986.  
  15987.           Prefill
  15988.           Prefill
  15989.  
  15990.           This procedure fills some fields with information about  todays date.
  15991.           First, the  SCL routine  'Get_Date' is called to retrieve todays date
  15992.           as integer values. 
  15993.           Then the 'day of week' value is converted to the actual name which is
  15994.           effectively written to field 4. 
  15995.           The date  is then  converted into  a julian  date. Since the function
  15996.           'St' cannot be used with  REAL  numbers,  'STR'  is  used  instead to
  15997.           convert the  julian date to a string before it finally can be written
  15998.           to field 5.
  15999.  
  16000.  
  16001.  
  16002.           Handle_End_of_Field
  16003.           Handle_End_of_Field
  16004.  
  16005.           User  Interrupt  Procedure  is  invoked  whenever   a  'End_of_Field'
  16006.                 Interrupt  Procedure
  16007.           condition occurs and also in the case of fields 6 and 15.
  16008.           Field 6  is the  one where  the user  can enter a date.  Upon leaving
  16009.           this field, a check for data entry is performed and  if something has
  16010.           been keyed in the following occurs:
  16011.           The procedure  'Check_Date' checks  the date entered for validity and
  16012.           converts it to three integers for year, month and day.  (Please note,
  16013.           that  the  date  is  checked  according  to  the  country information
  16014.           currently used. In the  case of  USA (1)  the date  is interpreted as
  16015.           MMDD  whereas  for  most  other  countries  it  is DDMM). If the date
  16016.           entered is invalid, 'SCL_Err' is set to point to a user defined error
  16017.           message  in  SAMPLEu.ERR,  which  causes SCL to display this message,
  16018.           beep and to reject  the attempt  to exit  this field.  In addition to
  16019.           this, fields  7 to  14 are  blanked out.  If   the  date  entered  is
  16020.           found  valid,  the  procedure 'Update_User_Date'  is called  which in
  16021.           turn does some calculations and writes the results to fields 7 to 14.
  16022.  
  16023.           For  field  15  the  process  is  similar,  in  this case the user is
  16024.           supposed  to  enter  a  valid  time   and  if   he  does   so,    'Up
  16025.           date_User_Time' is  called to  analyze the  time entered and to write
  16026.           appropriate information to fields 16 to 19. 
  16027.           If the time entered is  invalid,  a  sequence  identical  to  the one
  16028.           described for  the date  takes place,  the only  difference being the
  16029.           error message. 
  16030.  
  16031.  
  16032.  
  16033.  
  16034.           Appendix A,  sample programs discussion                      page 211
  16035.           Appendix A,  sample programs discussion                      page 211
  16036.  
  16037.  
  16038.  
  16039.  
  16040.  
  16041.  
  16042.  
  16043.  
  16044.           OASIS Evaluation Reference Manual
  16045.           OASIS Evaluation Reference Manual
  16046.  
  16047.  
  16048.           Update_User_Date 
  16049.           Update_User_Date
  16050.  
  16051.           This procedure uses most of the SCL date  related routines.  It first
  16052.           writes the values for day, month and year of the date in field 6 (and
  16053.           decoded by 'Check_Date') to fields  7,  8  and  9.  Then  these three
  16054.           values are  converted into a date string by 'Date_String' and written
  16055.           to field 10.
  16056.           The julian date is calculated, converted to a string using  'STR' (St
  16057.           cannot be  used for  REAL numbers,  only for Integers) and written to
  16058.           field 11.
  16059.           After this, the number of days between today and the  date entered is
  16060.           calculated by  simply subtracting them from each other and converting
  16061.           the result to a positive number. This value is written to field 12. 
  16062.           The procedure 'weekday' is used to  calculate the  'day_of_week'. The
  16063.           result, an Integer number between 0 (sunday) and 6 (saturday) is then
  16064.           converted into the matching day name and written to field 13.
  16065.           100 days are then added to the julian  date, the  result is converted
  16066.           back  into  year,  month  and  day  via  the procedure 'Normal_Date',
  16067.           formatted with the  function  'Date_String'  and  finally  written to
  16068.           field 14. 
  16069.  
  16070.  
  16071.  
  16072.           Update_User_Time
  16073.           Update_User_Time
  16074.  
  16075.           This rather  simple procedure  converts the integer values for hours,
  16076.           minutes and seconds of the time entered into field 15  to strings and
  16077.           writes them to fields 16, 17 and 18.
  16078.           These values  are then  converted to  a formatted  time string by the
  16079.           function 'Time_String' and written to field 19.
  16080.  
  16081.            
  16082.  
  16083.  
  16084.  
  16085.  
  16086.  
  16087.  
  16088.  
  16089.  
  16090.  
  16091.  
  16092.  
  16093.  
  16094.  
  16095.  
  16096.  
  16097.  
  16098.  
  16099.  
  16100.  
  16101.  
  16102.  
  16103.  
  16104.  
  16105.  
  16106.           Appendix A,  sample programs discussion                      page 212
  16107.           Appendix A,  sample programs discussion                      page 212
  16108.  
  16109.  
  16110.  
  16111.  
  16112.  
  16113.  
  16114.  
  16115.  
  16116.           OASIS Evaluation Reference Manual
  16117.           OASIS Evaluation Reference Manual
  16118.  
  16119.  
  16120.                                    Special Fields Demo
  16121.                                    Special Fields Demo
  16122.  
  16123.  
  16124.           Main procedure
  16125.           Main procedure
  16126.  
  16127.           This procedure is identical  to  those  used  for  the  'country' and
  16128.           'date' demos with one exception however; it embeds an additional User
  16129.                                                                            User
  16130.           Interrupt Procedure, which  monitors  the  keyboard  keys.  This User
  16131.           Interrupt Procedure                                              User
  16132.           Interrupt  Procedure,  'Handle_User_Function'  is  probably  the most
  16133.           Interrupt  Procedure
  16134.           interesting part of this demo because  it reveals  some useful tricks
  16135.           which you  will find  most helpful  when writing your own application
  16136.           programs. 
  16137.  
  16138.  
  16139.  
  16140.           Handle_User_Function
  16141.           Handle_User_Function
  16142.  
  16143.           This procedure  deals with  fields that  have the  'Char Check' field
  16144.           attribute set to TRUE. 
  16145.           It is  therefore executed  whenever one of these fields is active and
  16146.           any keyboard key is pressed. Each field will be discussed separately.
  16147.  
  16148.  
  16149.                        
  16150.           Note:  The reason  for using  'Char Check'  here is  quite simple: in
  16151.           Note:
  16152.           this demo  we have  to take into consideration far more keys than the
  16153.           maximum number that can  be  specified  as  'User  Functions'  on one
  16154.           format (10, plus any of the function keys).
  16155.           In a  real world  program it  would probably be preferable to specify
  16156.           'User  Function  Keys'  because,  beside  the   fact  it   is  faster
  16157.           ('Handle_Format' is  not interrupted for each single key) it also can
  16158.           save you programming work since you would know  that the  key pressed
  16159.           must belong to the specified set. 
  16160.  
  16161.  
  16162.           Field 5
  16163.  
  16164.           If the  input key is a 'Space' the content of the field is changed to
  16165.           something  else.  In  this  example  we  only  use   three  different
  16166.           possibilities  but  in  a  user  program  it  could also be any other
  16167.           number. 
  16168.           This field shows a nice way to make programs more userfriendly which,
  16169.           in many cases can also save an additional menu. 
  16170.  
  16171.  
  16172.           Field 6
  16173.  
  16174.           While this field is active we check if one of a specified set of keys
  16175.           has been pressed, and if this was the case, an  appropriate string is
  16176.           written into  the field. This construction can equally be used in the
  16177.           same manner as the one demonstrated with field 5.
  16178.  
  16179.  
  16180.  
  16181.  
  16182.  
  16183.  
  16184.           Appendix A,  sample programs discussion                      page 213
  16185.           Appendix A,  sample programs discussion                      page 213
  16186.  
  16187.  
  16188.  
  16189.  
  16190.  
  16191.  
  16192.  
  16193.  
  16194.           OASIS Evaluation Reference Manual
  16195.           OASIS Evaluation Reference Manual
  16196.  
  16197.  
  16198.           Field 7
  16199.  
  16200.           When active this field displays the  ASCII Code  of each  key pressed
  16201.           with the  exception of 'Return' which moves us to the next field. The
  16202.           SCL internal character  code  notation  is  as  follows:  if  the key
  16203.           creates  a  two  byte  code  (an  ASCII  Code  preceded  by  a  'ESC'
  16204.           character), 1000 is added to it, otherwise the normal ASCII  value is
  16205.           kept. 
  16206.  
  16207.  
  16208.  
  16209.           Field 8
  16210.  
  16211.           The handling  of this field is simple, each input character (if it is
  16212.           not a 'two byte key') is converted to upper case  and then displayed.
  16213.           This can be useful in many application programs as well.
  16214.  
  16215.  
  16216.                        
  16217.           Note:  In all cases, where you don't want SCL to take any action on a
  16218.           Note:
  16219.           character, simply replace  it  by  'Char_NoOp'.  SCL  will  then just
  16220.           ignore it.
  16221.  
  16222.  
  16223.            
  16224.  
  16225.           Handle_End_of_Field
  16226.           Handle_End_of_Field
  16227.  
  16228.           This procedure  monitors field 4 and checks whether it is selected or
  16229.           not.
  16230.           If selected it writes 'Yes' to its content, otherwise 'No'is written.
  16231.           Similarly  the  same  method  can  be  used  in  all  cases where the
  16232.           objective is to display the state  of a  field with  text rather than
  16233.           with a display attribute. 
  16234.  
  16235.  
  16236.           Background Processing
  16237.           Background Processing
  16238.  
  16239.           The capability  to support  background processing  is one of the most
  16240.           powerful features of SCL.
  16241.           In this example program it is used to display the  time and  the date
  16242.           (obviously, you can do a lot more with it).
  16243.           In this  example program  the current  date and time are displayed in
  16244.           two fields on each format and 'LP_Background_Task' is  used to update
  16245.           these fields constantly.
  16246.           'LP_Background_Task' simply  checks whether  the actual time and date
  16247.           is still reflected by the content of the  two fields  and if  this is
  16248.           not the case, updates them. 
  16249.  
  16250.  
  16251.  
  16252.  
  16253.  
  16254.  
  16255.  
  16256.  
  16257.  
  16258.           Appendix A,  sample programs discussion                      page 214
  16259.           Appendix A,  sample programs discussion                      page 214
  16260.  
  16261.  
  16262.  
  16263.  
  16264.  
  16265.  
  16266.  
  16267.  
  16268.           OASIS Evaluation Reference Manual
  16269.           OASIS Evaluation Reference Manual
  16270.  
  16271.  
  16272.  
  16273.  
  16274.  
  16275.  
  16276.  
  16277.  
  16278.  
  16279.  
  16280.  
  16281.  
  16282.  
  16283.  
  16284.  
  16285.  
  16286.  
  16287.  
  16288.  
  16289.  
  16290.  
  16291.  
  16292.  
  16293.  
  16294.  
  16295.  
  16296.  
  16297.  
  16298.  
  16299.  
  16300.  
  16301.  
  16302.  
  16303.  
  16304.  
  16305.  
  16306.  
  16307.  
  16308.  
  16309.  
  16310.  
  16311.  
  16312.  
  16313.  
  16314.  
  16315.  
  16316.  
  16317.  
  16318.  
  16319.  
  16320.  
  16321.  
  16322.  
  16323.  
  16324.  
  16325.  
  16326.  
  16327.  
  16328.           Appendix A,  sample programs discussion                      page 215
  16329.           Appendix A,  sample programs discussion                      page 215
  16330.  
  16331.  
  16332.  
  16333.  
  16334.  
  16335.  
  16336.  
  16337.  
  16338.           OASIS Evaluation Reference Manual
  16339.           OASIS Evaluation Reference Manual
  16340.  
  16341.  
  16342.  
  16343.  
  16344.  
  16345.  
  16346.  
  16347.  
  16348.  
  16349.  
  16350.  
  16351.  
  16352.  
  16353.  
  16354.  
  16355.  
  16356.  
  16357.  
  16358.  
  16359.  
  16360.  
  16361.                                The Screen Control Language
  16362.                                The Screen Control Language
  16363.                        
  16364.  
  16365.                        
  16366.  
  16367.                                           (SCL)
  16368.                                           (SCL)
  16369.                        
  16370.  
  16371.                        
  16372.  
  16373.                        
  16374.  
  16375.                                    SCL System Details
  16376.                                    SCL System Details
  16377.                                                      
  16378.  
  16379.  
  16380.  
  16381.  
  16382.  
  16383.  
  16384.  
  16385.  
  16386.  
  16387.  
  16388.  
  16389.  
  16390.  
  16391.  
  16392.  
  16393.  
  16394.  
  16395.  
  16396.  
  16397.  
  16398.  
  16399.  
  16400.  
  16401.  
  16402.  
  16403.  
  16404.  
  16405.  
  16406.  
  16407.  
  16408.  
  16409.  
  16410.  
  16411.  
  16412.  
  16413.  
  16414.  
  16415.  
  16416.  
  16417.  
  16418.           OASIS Evaluation Reference Manual
  16419.           OASIS Evaluation Reference Manual
  16420.  
  16421.  
  16422.                                     Service Routines
  16423.                                     Service Routines
  16424.                                                     
  16425.  
  16426.  
  16427.           Interrupt Service  Routines are  routines which  are called to handle
  16428.           events  within  your  computer.  They  are  normally  located  in the
  16429.           computers BIOS  (Basic Input  Output System). A user program can take
  16430.           over the handling of interrupts. This is accomplished  by placing the
  16431.           address of  its own  interrupt routine into the BIOS Interrupt Vector
  16432.           table. 
  16433.           SCL takes control of two interrupts with its own routines:
  16434.  
  16435.  
  16436.  
  16437.           The clock tick interrupt (Interrupt 1CH) 
  16438.           The clock tick interrupt (Interrupt 1CH)
  16439.  
  16440.           This interrupt is called by the BIOS time handling routines (Hardware
  16441.           Clock)  18.2  times  per  second  (about once every 55 milliseconds).
  16442.           Every time Interrupt 1CH is called by the BIOS, control  is passed to
  16443.           the routine  'Clock_ISR' in SCL which then performs the necessary SCL
  16444.           internal  functions  before  control  is  returned   to  BIOS.  These
  16445.           functions are  to control  the duration  of the  'Beep' Sound and the
  16446.           field blinking frequency (see also the description of 'Blink_Count').
  16447.  
  16448.           By  using  an  Interrupt  service  routine  instead  of  a normal SCL
  16449.           procedure to manage these tasks it is ensured that they are performed
  16450.           entirely independantly  of the  logic of your application program and
  16451.           SCL itself. Hence a  lot of  unnecessary overhead  is avoided because
  16452.           instead of  waiting for  an event,  SCL can  perform other functions.
  16453.           Consider the following example of a typical 'Beep' routine: 
  16454.  
  16455.  
  16456.           PROCEDURE Do_Beep;
  16457.           BEGIN;
  16458.             SOUND(500);
  16459.             DELAY(250);
  16460.             NOSOUND;
  16461.           END;
  16462.  
  16463.  
  16464.           If  SCL  was  programmed  like  this,  one  would  have  to  wait 250
  16465.           milliseconds  for  this  routine  to  exit  without  being able to do
  16466.           anything else. This would not only slow down the program considerably
  16467.           but it  would also make background tasks like datacom etc.. virtually
  16468.           impossible. 
  16469.           For this reason, the 'Beep' routine  in  SCL  looks  in  principle as
  16470.           follows: 
  16471.  
  16472.  
  16473.           PROCEDURE Beep;
  16474.           BEGIN;
  16475.             SOUND(Beep_Frequency_1);
  16476.             Beep_Counter:=Beep_Length;
  16477.           END;
  16478.  
  16479.  
  16480.  
  16481.           Appendix A, SCL system details                               page 217
  16482.           Appendix A, SCL system details                               page 217
  16483.  
  16484.  
  16485.  
  16486.  
  16487.  
  16488.  
  16489.  
  16490.  
  16491.           OASIS Evaluation Reference Manual
  16492.           OASIS Evaluation Reference Manual
  16493.  
  16494.  
  16495.           Instead it  is left to 'Clock_ISR' to decrement 'Beep_Counter' and to
  16496.           issue a 'NOSOUND' when the counter has reached  0 (zero). 'Clock_ISR'
  16497.           is  installed  by  the  routine  'Get_Clock_Tick'  which is called by
  16498.           'Select_Format_File'  during  the  initialization   of  SCL.   It  is
  16499.           deinstalled  (the  pointers  in  the  BIOS Interrupt Vector Table are
  16500.           restored to their original values)  by  either 'Close_Formats' or, in
  16501.           case of an error, by 'Fatal_SCL_Error'. 
  16502.  
  16503.  
  16504.  
  16505.           The Data Communications Hardware Interrupt (Interrupt 0CH)
  16506.           The Data Communications Hardware Interrupt (Interrupt 0CH)
  16507.  
  16508.           This interrupt  is handled by a SCL Interrupt Service routine in case
  16509.           your program involves data communications. 
  16510.           It is a  Hardware  Interrupt  signalling  several  conditions  on the
  16511.           asynchronous communications  port (COM1:). SCL uses this interrupt in
  16512.           its 'Low Level' data communication system to recognize if a character
  16513.           has been  received on  the RS232 interface and to read this character
  16514.           into its  receive  buffer.  For  further  information  on  SCL's Data
  16515.           communications routines please refer to Appendix B.  
  16516.  
  16517.  
  16518.            
  16519.            
  16520.           Note:   Do not  call a  Interrupt Service  Routine directly from your
  16521.           Note:
  16522.           program because it could hang the system and make a reboot necessary.
  16523.           The  same   applies  for  the  ISR  installation  and  deinstallation
  16524.           routines.
  16525.            
  16526.  
  16527.  
  16528.  
  16529.  
  16530.  
  16531.  
  16532.  
  16533.  
  16534.  
  16535.  
  16536.  
  16537.  
  16538.  
  16539.  
  16540.  
  16541.  
  16542.  
  16543.  
  16544.  
  16545.  
  16546.  
  16547.  
  16548.  
  16549.  
  16550.  
  16551.  
  16552.  
  16553.  
  16554.           Appendix A, SCL system details                               page 218
  16555.           Appendix A, SCL system details                               page 218
  16556.  
  16557.  
  16558.  
  16559.  
  16560.  
  16561.  
  16562.  
  16563.  
  16564.           OASIS Evaluation Reference Manual
  16565.           OASIS Evaluation Reference Manual
  16566.  
  16567.  
  16568.                                Background Processing Tasks
  16569.                                Background Processing Tasks
  16570.                                                           
  16571.  
  16572.  
  16573.           SCL provides two 'userhooks'  for  background  processing  tasks, one
  16574.           referred to as 'Low Priority' and the other as 'High Priority'.
  16575.           SCL  provides  these  'userhooks'  in  form of two pointer-variables,
  16576.           'LP_Background_Pointer' and 'HP_Background_Pointer'. 
  16577.           The Procedures these  pointers  point  to  are  performed  by  SCL as
  16578.           Background Tasks.
  16579.           If SCL is initialized, both pointers point to dummy procedures within
  16580.           SCL which only contain a begin-end statement.
  16581.           These pointers can  be  redirected  by  you  to  point  to  any other
  16582.           procedure which is subsequently performed as background task by SCL.
  16583.           You can  basically specify any procedure as a background task as long
  16584.           as you follow a few rules:
  16585.  
  16586.           The procedure  may not  contain any  statements which  could cause to
  16587.           wait it on an event, like for example 'keypressed'.
  16588.           A Background  Procedure must  be compiled  with the 'Force far calls'
  16589.           option active ( {$F+} ).
  16590.            
  16591.           Both Background Tasks are being called from within  the SCL procedure
  16592.           'Handle_Format'. 'Handle_Format'  is event  driven. This means that a
  16593.           loop  containing  several  conditional   statements  is  continuously
  16594.           executed and  whenever one  of the  these conditions becomes TRUE the
  16595.           appropriate  task  is  performed.  In  addition   to  the  background
  16596.           procedures,  the  other  tasks  are  reading the keyboard if a key is
  16597.           pressed, processing an input character and updating field attributes.
  16598.  
  16599.  
  16600.           The logic within this loop is as follows:
  16601.  
  16602.                1.   Start
  16603.  
  16604.                2.   Perform the High Priority background task (unconditionally,
  16605.                     once per loop).
  16606.  
  16607.                3.   If a key is pressed then read it into the keyboard buffer 
  16608.  
  16609.                otherwise,
  16610.  
  16611.                4.   If a character  is  still  being  processed  then  carry on
  16612.                     processing it  (processing a single character takes between
  16613.                     2   and 4 loops depending on its type)
  16614.  
  16615.                otherwise,
  16616.  
  16617.                5.   If the keyboard buffer is not  empty then  fetch the  next 
  16618.                     character 
  16619.  
  16620.                otherwise,
  16621.  
  16622.  
  16623.  
  16624.  
  16625.  
  16626.           Appendix A, SCL system details                               page 219
  16627.           Appendix A, SCL system details                               page 219
  16628.  
  16629.  
  16630.  
  16631.  
  16632.  
  16633.  
  16634.  
  16635.  
  16636.           OASIS Evaluation Reference Manual
  16637.           OASIS Evaluation Reference Manual
  16638.  
  16639.  
  16640.                6.   Perform   the Low  Priority Background Task and, if a field
  16641.                     attribute needs to be updated then update it. 
  16642.  
  16643.                7.   Go to Start.
  16644.            
  16645.  
  16646.           As you  can  see,  the  High  Priority  Background  Task  is executed
  16647.           unconditionally in every loop and the Low Priority Background Task is
  16648.           executed only in case no keyboard input is waiting to be processed.
  16649.           Due to the dynamic nature of  such a  loop, no  exact figures  can be
  16650.           given on  how often  the Background  Tasks are executed. As a rule of
  16651.                                    Background  Tasks
  16652.           thumb, on a plain PC (4.77 Mhz) HP_Background_Task  is executed about
  16653.           1300 times  per second  and in  a fast  AT as much as 10000 times per
  16654.           second (assuming that the processing time required for the background
  16655.           task itself  is negligible).  The figures for Low Priority Background
  16656.           Tasks are roughly the same if the system  is idle  (typically most of
  16657.           the time) but can dramatically drop at times of heavy activity.
  16658.  
  16659.  
  16660.           There  are  certain  rules  you  should  follow if you use Background
  16661.           processing in order to avoid slowing down a program: 
  16662.  
  16663.            1.  Split any task into as many  subtasks as  possible, for example,
  16664.                if you want to write output to a printer, write one character at
  16665.                a time rather than the whole line. 
  16666.  
  16667.            2.  Exit the Background Task  procedure as  quick as  possible if no
  16668.                work has to be performed (Preferably use the 'Exit' statement).
  16669.  
  16670.            3.  Use High  Priority Background  tasks only when you have to. Most
  16671.                jobs can well be accomodated with Low Priority. 
  16672.  
  16673.            4.  Don't use any statements in a background procedure which wait on
  16674.                an event like 'Repeat until keypressed' or 'Delay(n)'. 
  16675.  
  16676.            5.  If you  use a  High Priority Background Task, its execution time
  16677.                should typically  not exceed  a few  milliseconds, otherwise you
  16678.                may slow down your program dramatically. 
  16679.  
  16680.  
  16681.  
  16682.           The following is a short example intended to give you an idea how 
  16683.           to use 'Background Tasks'.
  16684.           Further  examples  can  be  found  in  some of the 'Sample' programs,
  16685.           namely SAMPLE4.PAS, SAMPLE5.PAS and SAMPLE7.PAS.
  16686.  
  16687.  
  16688.  
  16689.  
  16690.  
  16691.  
  16692.  
  16693.  
  16694.  
  16695.  
  16696.  
  16697.           Appendix A, SCL system details                               page 220
  16698.           Appendix A, SCL system details                               page 220
  16699.  
  16700.  
  16701.  
  16702.  
  16703.  
  16704.  
  16705.  
  16706.  
  16707.           OASIS Evaluation Reference Manual
  16708.           OASIS Evaluation Reference Manual
  16709.  
  16710.  
  16711.           Program EXAMPLE;
  16712.  
  16713.           uses Printer,SCL;
  16714.  
  16715.           {$F+}  {Force far calls}
  16716.           Procedure My_Background_Task;  {prints  asterixes  on  printer while}
  16717.           begin;             {format is being handled}
  16718.             write(lst,'*');
  16719.           end;
  16720.           {$F-}  {reset far calls}
  16721.  
  16722.           Procedure do_format;
  16723.           begin;
  16724.             select_format('main');
  16725.             display_format(0,0);
  16726.             repeat
  16727.              handle_format;
  16728.             until format_done;
  16729.           end;
  16730.  
  16731.           begin;
  16732.             select_format_file('myformats');
  16733.             lp_background_pointer:=@My_Background_Task; {assigns  it as LP }   
  16734.            Do_Format;                                      { background  task} 
  16735.           Close_formats;
  16736.           end; 
  16737.  
  16738.  
  16739.  
  16740.  
  16741.  
  16742.  
  16743.  
  16744.  
  16745.  
  16746.  
  16747.  
  16748.  
  16749.  
  16750.  
  16751.  
  16752.  
  16753.  
  16754.  
  16755.  
  16756.  
  16757.  
  16758.  
  16759.  
  16760.  
  16761.  
  16762.  
  16763.  
  16764.  
  16765.  
  16766.  
  16767.           Appendix A, SCL system details                               page 221
  16768.           Appendix A, SCL system details                               page 221
  16769.  
  16770.  
  16771.  
  16772.  
  16773.  
  16774.  
  16775.  
  16776.  
  16777.           OASIS Evaluation Reference Manual
  16778.           OASIS Evaluation Reference Manual
  16779.  
  16780.  
  16781.                                READING AND WRITING FIELDS
  16782.                                READING AND WRITING FIELDS
  16783.                                                          
  16784.  
  16785.  
  16786.           For  a  better  comprehension  of  the  mechanisms  that  govern  the
  16787.           handling of formats the  following scenario  will be  used as working
  16788.           platform:
  16789.  
  16790.            1.  Select format A and display it on the screen.
  16791.            2.  Select format B and display it on top of format A.
  16792.            3.  Exit  format  B  restoring  format  A  in  its integrity on the 
  16793.                screen.
  16794.            4.  Exit format A 
  16795.            5.  Select format C and display it on the screen.
  16796.            6.  Exit format C.
  16797.  
  16798.           For each step a status of  the various  pointers is  given along with
  16799.           any relevant annotation.  
  16800.  
  16801.           Select_Format_file('thisfile');                 ** STEP 1 ** 
  16802.                                                           ** STEP 1 **
  16803.           The format  stack is  still empty  and all S_Ptr, R_Ptr, W_Ptr do not
  16804.           point yet to any  valid  format.  In  other  words  no  field  can be
  16805.           accessed,   whether   read   or   written  at  this  point  in  time.
  16806.           Select_Format('A');
  16807.           Format 'A' is loaded into record  1 of  the format  stack. Both S_Ptr
  16808.           and W_Ptr  point to  this record and take 1 for value. From now on it
  16809.           is possible to write  to format  'A'. However  read of  format 'A' is
  16810.           still not possible since R_Ptr does not point yet to a valid format.
  16811.           Display_format(0,0);
  16812.           This statement does not affect the value of the pointers.
  16813.            Repeat 
  16814.            Handle_Format;
  16815.           This  is  where  R_Ptr  is  adjusted  making  a  read from format 'A'
  16816.           possible. All three pointers are now pointing to format 'A'  and have
  16817.           a value of 1.
  16818.            Select_Format('B');                            ** STEP 2 ** 
  16819.                                                           ** STEP 2 **
  16820.           A  second  format  is  now  selected coexisting with format 'A' which
  16821.           remains on the stack with entry number 1  while format  'B' is loaded
  16822.           to the top of the stack assigned to record number 2. As a result both
  16823.           W_Ptr and S_Ptr point to format 'B' and have 2 for value  while R_Ptr
  16824.           is still  looking at  format 'A'  with its value remaining  unchanged
  16825.           (1).   For  this  reason    the    construct  W_Cont(5,G_Cont(4)); is
  16826.           interpreted as read the content of field 4 of format 'A' and place it
  16827.           into field 5 of format 'B'. By manually altering the W_Ptr value (ie.
  16828.           'W_Ptr:=1') it  is still  possible to  write to format 'A' should you
  16829.           fancy it.
  16830.             Display_format(0,0);
  16831.           Pointers keep their previous value.
  16832.             Repeat
  16833.               Handle_Format; 
  16834.           All three pointers are now pointing to format 'B'.
  16835.             UNTIL Format_Done;                            ** STEP 3 ** 
  16836.                                                           ** STEP 3 **
  16837.           This statement  finishes  format  'B'  letting  SCL  restoring format
  16838.           'A'and implicitly  having both  S_Ptr and  W_Ptr point  to format 'A'
  16839.           with a value of 1 again. R_Ptr however is still pointing to format
  16840.  
  16841.  
  16842.           Appendix A, SCL system details                               page 222
  16843.           Appendix A, SCL system details                               page 222
  16844.  
  16845.  
  16846.  
  16847.  
  16848.  
  16849.  
  16850.  
  16851.  
  16852.           OASIS Evaluation Reference Manual
  16853.           OASIS Evaluation Reference Manual
  16854.  
  16855.  
  16856.           'B'   keeping    its    value    unchanged    (2).    The   construct
  16857.           'W_Cont(5,G_Cont(4)); would  now mean: read the content of field 4 of
  16858.           format 'B' and place it into field 5 of format 'A'.
  16859.           UNTIL Format_Done;                              ** STEP 4 **    
  16860.                                                           ** STEP 4 **
  16861.           This finishes format 'A' and both W_Ptr and  S_Ptr do  not any longer
  16862.           point to a valid format and have 0 for value. The R_Ptr however still
  16863.           point to format 'A'. The construct 'WrkStr:=G_Cont(5) would then read
  16864.           the  content  of  field  5  on  format 'A' into WrkStr. Although both
  16865.           formats are now finished, this does not mean that they were destroyed
  16866.           but still  remain in the stack. For that matter a manual manipulation
  16867.           of R_Ptr  is genuinely  possible and  effective (ie.  'R_Ptr:= 2'; to
  16868.           point to format 'B'.
  16869.           Select_Format('C');                             ** STEP 5 ** 
  16870.                                                           ** STEP 5 **
  16871.           This  loads  format  'C'  to  record 1 of the format stack physically
  16872.           overwriting format 'A' previously sitting there. Both S_Ptr and W_Ptr
  16873.           point to  format 'C' taking 1 for value while R_Ptr does not point to
  16874.           any format any longer and becomes 0. 
  16875.           Display_format(0,0);
  16876.           The pointers are not affected.
  16877.           Repeat 
  16878.            Handle_Format;
  16879.           Now all three pointers point to  format 'C'  and have  a value  of 1.
  16880.           UNTIL Format_Done;                              ** STEP 6 ** 
  16881.                                                           ** STEP 6 **
  16882.           At this  moment both S_Ptr and W_Ptr no longer point to a valid stack
  16883.           record and have the value 0. R_Ptr however still points to format 'C'
  16884.           and keep  its value of 1. The stack itself has format 'C' in record 1
  16885.           and format 'B' in record 2. Any subsequent  format would  load on top
  16886.           of format 'C'.
  16887.  
  16888.           As seen  in this  scenario, unfinished  formats always  remain in the
  16889.           stack while  finished  formats  stay  in  the  stack  until  they are
  16890.           overwritten by new formats. While a format is still in the stack, its
  16891.           content  can  always  be  accessed  by  manual  modification  of  the
  16892.           appropriate pointer to the desired record number.  
  16893.  
  16894.  
  16895.  
  16896.  
  16897.  
  16898.  
  16899.  
  16900.  
  16901.  
  16902.  
  16903.  
  16904.  
  16905.  
  16906.  
  16907.  
  16908.  
  16909.  
  16910.  
  16911.  
  16912.  
  16913.  
  16914.  
  16915.           Appendix A, SCL system details                               page 223
  16916.           Appendix A, SCL system details                               page 223
  16917.  
  16918.  
  16919.  
  16920.  
  16921.  
  16922.  
  16923.  
  16924.  
  16925.           OASIS Evaluation Reference Manual
  16926.           OASIS Evaluation Reference Manual
  16927.  
  16928.  
  16929.                              SCL Input Character Processing
  16930.                              SCL Input Character Processing
  16931.                                                            
  16932.  
  16933.  
  16934.  
  16935.           All Input Character processing in SCL is done by 'Handle_Format'. The
  16936.           sequence of events is as follows:
  16937.  
  16938.  
  16939.            1.  Read a Character from the Input Buffer into 'Char_Code'. Then go
  16940.                to 2.
  16941.  
  16942.            2.  If Char_Code  is specified as a User function Key in this format
  16943.                                                User function Key
  16944.                or if Char Check is specified  for  the  active  field  then set
  16945.                      Char Check
  16946.                'User_Function'  to  TRUE  and  exit 'Handle_Format' and go to 3
  16947.                upon return; otherwise go directly to 3. 
  16948.  
  16949.            3.  If 'Glb_Err' > 0 or char_Code = NoOp then discard  Char_code and
  16950.                go  to  1;  otherwise  if  Char_Code is invalid then perform the
  16951.                input error routine and then go to 1; otherwise go to 4. 
  16952.  
  16953.            4.  If this character is to be displayed, display it and  then go to
  16954.                1; otherwise go to 5. 
  16955.  
  16956.            5.  If Char_Code  is a  'Help' key then perform the appropriate Help
  16957.                routine and then go to 1; otherwise go to 6.
  16958.  
  16959.            6.  If Char_Code  terminates  the  current  field  then  perform the
  16960.                internal validity  check as specified for this field. In case of
  16961.                failure perform the error routine, discard the character  and go
  16962.                to 1; otherwise set 'End_of_Field' to TRUE, exit 'Handle_Format'
  16963.                and go to 7 upon return. 
  16964.  
  16965.            7.  If Glb_Err > 0  then  perform  the  error  routine,  discard the
  16966.                character and go to 1; otherwise, if char_Code = NoOp then go to
  16967.                1; otherwise terminate the field and go to 8. 
  16968.  
  16969.            8.  If this character terminates the format  as well  then go  to 10
  16970.                otherwise go to 9.
  16971.  
  16972.            9.  Determine the  next field and initialize it (make it the 'Active
  16973.                Field').   Then   set   'Begin_of_Field'   to   TRUE   and  exit
  16974.                'Handle_Format. Upon return go to 1. 
  16975.  
  16976.            10. Perform  the  internal  format  end  check (all mandatory fields
  16977.                filled in). If this  fails, perform  the error  routine, discard
  16978.                the input  character and  go to 1; otherwise set 'End_of_Format'
  16979.                to TRUE and exit 'Handle_Format'. Upon return go to 11. 
  16980.  
  16981.            11. If 'Glb_Err'  > 0  then perform  the error  routine, discard the
  16982.                input character  and go to 1; otherwise if Char_Code = NoOp then
  16983.                go to 1; otherwise terminate the format. 
  16984.  
  16985.  
  16986.  
  16987.  
  16988.  
  16989.           Appendix A, SCL system details                               page 224
  16990.           Appendix A, SCL system details                               page 224
  16991.  
  16992.  
  16993.  
  16994.  
  16995.  
  16996.  
  16997.  
  16998.  
  16999.           OASIS Evaluation Reference Manual
  17000.           OASIS Evaluation Reference Manual
  17001.  
  17002.  
  17003.                                  The Error Message File
  17004.                                  The Error Message File
  17005.                                                        
  17006.  
  17007.  
  17008.           The file <Name>.ERR is the only SCL file not automatically created by
  17009.           SFD. It  is a  simple ASCII  text file  and can be modified with most
  17010.           word processors (or Turbo Pascal, for example). The  first 21 records
  17011.           and records 36 to 39 are occupied by SCL internal error messages, all
  17012.           other records are available for your own use.
  17013.           You find a 'virgin' errorfile only containing the  SCL internal error
  17014.           messages  on  your  distribution  disks under the name 'SCL.ERR'. The
  17015.           contents of SCL.ERR is also listed in Appendix B. You can simply copy
  17016.           this  file  to  <Workfile>.ERR  and  then  add  your  own messages as
  17017.           required. The records may  contain any  text and  are not  bound to a
  17018.           special format.  The only limitation is that their maximum length may
  17019.           not exceed 70 characters.
  17020.           On top of SCL internal error messages, this file can be used to store
  17021.           your own  error messages as well as any other strings you may require
  17022.           in your program.
  17023.           All you have to do to display a specific message  in the  event of an
  17024.           error occuring  while processing  a format is to set 'Glb_Err' to the
  17025.           appropriate record number.
  17026.           If you just want to access a string stored in the error  file you can
  17027.           use the SCL function 'Sys_Msg'.
  17028.           Since during  execution of  an SCL  program, all records of this file
  17029.           are stored in the heap memory,  access to  them is  very fast. Please
  17030.           note that  an error file is optional for an SCL program. If it is not
  17031.           found during the initialization of SCL, the appropriate record spaces
  17032.           in  the  heap  are  initialized  with just their corresponding record
  17033.           number which will then be displayed should an error be found. 
  17034.  
  17035.  
  17036.                        
  17037.           Example:
  17038.           Example:
  17039.  
  17040.           Select_Format('X');
  17041.           W_Cont(2,Sys_Msg(18)); {writes  content  of  record  23  to  field 2}
  17042.           Display_Format(0,0);
  17043.           REPEAT
  17044.             Handle_Format;
  17045.             IF End_of_Format THEN
  17046.               IF not (G_CONT(1) in ['A'..'D','a'..'d']) THEN
  17047.                 Glb_Err:=43; {SCL  will execute its error routine and}         
  17048.                      {display the string stored in record 43 in}               
  17049.                 {the error  message field,  the attempt  to}                   
  17050.           {terminate the format will be refused} UNTIL Format_Done;
  17051.            
  17052.  
  17053.  
  17054.                        
  17055.           Note:  See also  Programming sample  4, 'Tricks  & Tips'  and 'System
  17056.           Note:
  17057.           Resource considerations'.
  17058.  
  17059.  
  17060.  
  17061.  
  17062.  
  17063.  
  17064.  
  17065.           Appendix A, SCL system details                               page 225
  17066.           Appendix A, SCL system details                               page 225
  17067.  
  17068.  
  17069.  
  17070.  
  17071.  
  17072.  
  17073.  
  17074.  
  17075.           OASIS Evaluation Reference Manual
  17076.           OASIS Evaluation Reference Manual
  17077.  
  17078.  
  17079.                           SCL - System Resource Considerations
  17080.                           SCL - System Resource Considerations
  17081.                                                               
  17082.  
  17083.  
  17084.           Disk Access
  17085.           Disk Access
  17086.  
  17087.           SCL  reads  its  formats  from  disk.  This process can be speeded up
  17088.           considerably  by  including  a   'BUFFERS=NNN'  statement   into  the
  17089.           CONFIG.SYS file. It is recommended to set the number of buffers to at
  17090.           least 20 on computers running SCL programs.
  17091.           Another effective way is the use of a RamDisk or,  preferably, a Disk
  17092.           Cache Software (for example 'Lightning' from PCSG Inc). 
  17093.  
  17094.  
  17095.           Processor Requirements
  17096.           Processor Requirements
  17097.  
  17098.           SCL  performs  well  on  any  compatible  PC  system. Due to a highly
  17099.           optimized  program  layout,  the  speed  differences  to  be expected
  17100.           between  a  8088  and  a  80286  based system are relatively small if
  17101.           compared with some other programs. The performance of  an 8088 System
  17102.           running an  SCL program  can be  increased considerably by exchanging
  17103.           the 8088 processor against a NEC V20. The V20 features,  beside being
  17104.           fully compatible  with the  8088, a  highly optimized string handling
  17105.           which results in about 20 % performance  improvement if used with SCL
  17106.           programs. 
  17107.  
  17108.            
  17109.           Format File -Disk Space Requirements
  17110.           Format File -Disk Space Requirements
  17111.  
  17112.           The format file occupies 4608 bytes per format. 
  17113.           This means  that a 360 KB Floppy can hold a format file with up to 79
  17114.           formats. The other SCL files are relatively small  and typically only
  17115.           take up a few kilobytes all together. 
  17116.  
  17117.            
  17118.           SCL Code Space Requirements
  17119.           SCL Code Space Requirements
  17120.  
  17121.           SCL  takes  up  about  15  to  35  KB  of  space  in the code segment
  17122.           (Dependent on the number of SCL routines you use). 
  17123.  
  17124.            
  17125.           SCL Data Space Requirements
  17126.           SCL Data Space Requirements
  17127.  
  17128.           SCL stores most if its informations in the Heap, therefore the actual
  17129.           space required  in the  data segment  is relatively small. It depends
  17130.           largely on whether Datacom is used  or not  and is  typically between
  17131.           3.5 KB (no datacom) and around  10 KB if datacom is used.
  17132.           Within the heap memory, the static space required by SCL is about 
  17133.           12 KB plus the size of the file "<name>.MSG". 
  17134.           In  addition  to  the  static space, SCL`dynamically allocates during
  17135.           program runtime 4.6 KB for every format required to be stacked (refer
  17136.           to  SCL   Details  for  more  informations  on  the  format  stacking
  17137.           mechanism). 
  17138.  
  17139.  
  17140.  
  17141.  
  17142.           Appendix A, SCL system details                               page 226
  17143.           Appendix A, SCL system details                               page 226
  17144.  
  17145.  
  17146.  
  17147.  
  17148.  
  17149.  
  17150.  
  17151.  
  17152.           OASIS Evaluation Reference Manual
  17153.           OASIS Evaluation Reference Manual
  17154.  
  17155.  
  17156.           The heap shares its space with the program stack. 
  17157.           There is no exact way to predict the size of the stack required for a
  17158.           program.  It  largely  depends  on  the  program's logical structure,
  17159.           especially if recursive routines are used.
  17160.           The only way  to  find  it  out  is  by  'trial  and  error',  i.e by
  17161.           decreasing it until the program does not run anymore.
  17162.  
  17163.  
  17164.           Total Memory Requirements
  17165.           Total Memory Requirements
  17166.  
  17167.           Example1:   A small SCL program with about 5 to 10 screen formats, no
  17168.           Example1:
  17169.           datacom and 100 field input messages.  Format stacking  is assumed to
  17170.           occur to  up to  3 levels, i.e max 3 unfinished formats can be on the
  17171.           stack while a fourth one is being processed. 
  17172.  
  17173.           Example2:  A very large program  with 50  to 100  screen formats, 500
  17174.           Example2:
  17175.           field   messages,   datacom  and extensive  data  space requirements.
  17176.           Up to 10 formats are assumed to be stacked on the heap.  The code and
  17177.           data  requirements  quoted  represent  the  maximum values allowed in
  17178.           Turbo Pascal programs. 
  17179.  
  17180.  
  17181.  
  17182.           The approximate total memory  required to  run the  above two example
  17183.           programs can be roughly calculated as follows:
  17184.                                                           Example1  Example2 
  17185.           -----------------------------------------------------------------
  17186.           Code space  (approx) .............................  50 KB       90 KB
  17187.           Data space (approx) .............................  10 KB        64 KB
  17188.           Program Stack  (approx) ..........................   5  KB      40 KB
  17189.           Heap space (static) .............................  12 KB        12 KB
  17190.           Heap space  (field messages)  .....................   7 KB      36 KB
  17191.           Heap space (format stacking)  .................... 14  KB       46 KB
  17192.           Static space required by DOS (approx) ........... 35 KB     35 KB 
  17193.           -----------------------------------------------------------------
  17194.           Minimum total memory required to run (approx) .. 133 KB    323 KB 
  17195.  
  17196.  
  17197.  
  17198.           Example 1  could run  in a  256 KB  system with no problems and would
  17199.           Example 1
  17200.           even  permit another 90 KB of memory  to be  used for  a Ramdisk   or
  17201.           another memory resident program. 
  17202.  
  17203.           Example 2 could just run on a system with 384 KB of memory.
  17204.           Example 2
  17205.  
  17206.  
  17207.                        
  17208.           Note:   The above  figures represent  only coarse guidelines assuming
  17209.           Note:
  17210.           two typical examples. The  exact requirements  of a  specific program
  17211.           are influenced  by many  different factors and may deviate from these
  17212.           examples quite considerably. 
  17213.  
  17214.  
  17215.  
  17216.  
  17217.  
  17218.  
  17219.           Appendix A, SCL system details                               page 227
  17220.           Appendix A, SCL system details                               page 227
  17221.  
  17222.  
  17223.  
  17224.  
  17225.  
  17226.  
  17227.  
  17228.  
  17229.           OASIS Evaluation Reference Manual
  17230.           OASIS Evaluation Reference Manual
  17231.  
  17232.  
  17233.                                       Tips & Tricks
  17234.                                       Tips & Tricks
  17235.                                                    
  17236.  
  17237.  
  17238.  
  17239.           Entry of Characters not normally accessible via the keyboard
  17240.           Entry of Characters not normally accessible via the keyboard
  17241.  
  17242.           During the design of a format layout it  is possible  to redefine any
  17243.           keyboard  key   to  any  other  character  by  using  SFD's  keyboard
  17244.           redefinition feature. Outside of the Layout Designer, such  a feature
  17245.           does not  exist. If  you have  to enter  such a character outside the
  17246.           layout designer (for example to define a graphic character as a field
  17247.           delimiter), you  can use a BIOS feature: Press the 'ALT' key, hold it
  17248.           down and key in the ASCII`value of the desired character  in decimal,
  17249.           then release 'ALT'. 
  17250.           This feature  works on  most 'compatible' machines and you can use it
  17251.           in many other programs as well.
  17252.  
  17253.  
  17254.  
  17255.  
  17256.           Blinking Fields
  17257.           Blinking Fields
  17258.  
  17259.           In case you use the 'Blink'  field  attribute  set  the  SCL Constant
  17260.           'Timer_Intervall' to  a very low value. Fast blinking fields are much
  17261.           easier on the eyes than slow blinking ones. In general, for ergonomic
  17262.           reasons, try to avoid blinking fields at all whenever possible.
  17263.  
  17264.  
  17265.  
  17266.  
  17267.           Use of the 'Intensity' field attribute on Color systems
  17268.           Use of the 'Intensity' field attribute on Color systems
  17269.  
  17270.           If you use the 'Intensity' attribute together with 'Invert' to mark a
  17271.           field 'active' careful selection  of the  field background  color can
  17272.           lead to interesting effects. If you assume for example 'Brown' as the
  17273.           background color this will lead to  'Yellow' foreground  if the field
  17274.           becomes active. 
  17275.  
  17276.  
  17277.  
  17278.  
  17279.           The 'Selected' Attribute in Menus
  17280.           The 'Selected' Attribute in Menus
  17281.  
  17282.           If  a  format  only  contains  one  group of 'Constant fields' like a
  17283.           typical menu, don't  be  concerned  about  any  'Selected' attributes
  17284.           since this format will instantly be terminated as soon as a field has
  17285.           been selected and for this reason it would never be visible anyway. 
  17286.           Probably the  nicest  combination  for  such  a  field  is  to select
  17287.           'Inverted' for active fields and no attributes at all for 'Selected'.
  17288.  
  17289.  
  17290.  
  17291.  
  17292.  
  17293.  
  17294.  
  17295.           Appendix A, tips and tricks                                  page 228
  17296.           Appendix A, tips and tricks                                  page 228
  17297.                 
  17298.  
  17299.  
  17300.  
  17301.  
  17302.  
  17303.  
  17304.  
  17305.           OASIS Evaluation Reference Manual
  17306.           OASIS Evaluation Reference Manual
  17307.  
  17308.  
  17309.           Preventing automatic termination of a format
  17310.           Preventing automatic termination of a format
  17311.  
  17312.           In some  cases it  may be  desirable to  prevent a  format from being
  17313.           automatically terminated after the last field has been  filled in. To
  17314.           achieve  this,  just  add  another  field (A Constant) after the last
  17315.           field and ask the user via  a message  to press  'Return' to  end the
  17316.           format (See Sample5). 
  17317.  
  17318.  
  17319.  
  17320.  
  17321.           Highlighting text on screen formats
  17322.           Highlighting text on screen formats
  17323.  
  17324.           You can  simply highlight  text on a format by declaring this area of
  17325.           text as an 'output' field, then specify the  field as  being selected
  17326.           and  choose  the  appropriate  'Selected' attributes according to the
  17327.           appearance you desire. If you want to switch the highlighting  on and
  17328.           off  while  the  format  is  being  displayed,  just  use the 'W_Sel'
  17329.           construct.
  17330.  
  17331.  
  17332.  
  17333.            
  17334.           Special Fields
  17335.           Special Fields
  17336.  
  17337.           See Programming sample 5 for some suggestions and ideas. 
  17338.  
  17339.  
  17340.  
  17341.  
  17342.           Storing strings in <Name>.ERR
  17343.           Storing strings in <Name>.ERR
  17344.  
  17345.           It is good practice to store text strings  in the  error message file
  17346.           instead of  hardcoding them  into the program itself. Any text stored
  17347.           in the error message file can be easily  modified without recompiling
  17348.           the program  which makes   customization  and/or nationalization much
  17349.           easier. 
  17350.           Any strings stored in the error  message file  can be  accessed using
  17351.           the function 'Sys_Msg'.
  17352.  
  17353.  
  17354.  
  17355.  
  17356.  
  17357.  
  17358.  
  17359.  
  17360.  
  17361.  
  17362.  
  17363.  
  17364.  
  17365.  
  17366.  
  17367.  
  17368.  
  17369.           Appendix A, tips and tricks                                  page 229
  17370.           Appendix A, tips and tricks                                  page 229
  17371.                 
  17372.  
  17373.  
  17374.  
  17375.  
  17376.  
  17377.  
  17378.  
  17379.           OASIS Evaluation Reference Manual
  17380.           OASIS Evaluation Reference Manual
  17381.  
  17382.  
  17383.           Using Field Input Messages for Help Screens
  17384.           Using Field Input Messages for Help Screens
  17385.  
  17386.           Especially on small formats it  is  not  always  possible  to display
  17387.           field  input  messages.  Using  a 'User Interrupt Procedure', you can
  17388.           display these  messages in  an own  format whenever  for example 'F2'
  17389.           (Field Help) is pressed.
  17390.           This works as follows:
  17391.  
  17392.           Design a small format with just one 'output' field big enough to hold
  17393.           the field input message (70 characters long).
  17394.           Write a procedure similar  to the  following (assuming  you named the
  17395.           above format 'Msg').
  17396.  
  17397.  
  17398.           PROCEDURE  Msg_Help;  {Loads  format  'Msg'  and  displays the Field}
  17399.           BEGIN;        {Msg  of the present field in it  if F2  is pressed}   
  17400.           IF User_Function_Key and Char_Code = Code_F2 THEN
  17401.               BEGIN;
  17402.                 WITH Stack[S_Ptr].Field[Active_Field] DO
  17403.                   BEGIN;
  17404.                     IF   (Field_Msg_Nr > 0) AND {a msg for this field exists}  
  17405.                         (Input_Msg_Nr = 0) AND {no field to display it} 
  17406.                         (Field_Help_Screen <= Spaces THEN {none defined} 
  17407.                       BEGIN{ 
  17408.                         Select_Format('Msg');
  17409.                         W_Cont(1,User_Msg(Field_Msg_Nr); {obtain the Msg} 
  17410.                         Display_Format(0,0);              
  17411.                         REPEAT Handle_Format UNTIL Format_Done;
  17412.                         Char_Code:=Code_Noop;
  17413.                       END;
  17414.                   END;
  17415.               END;
  17416.           END;
  17417.  
  17418.           To use this feature  declare the  trigger key  (here 'F2')  as a user
  17419.           function key in all formats. 
  17420.           Within your program, make a call to 'Msg_Help' in the format handling
  17421.           loop as follows: 
  17422.  
  17423.  
  17424.           REPEAT 
  17425.             Handle_Format;
  17426.             Msg_Help;
  17427.             {other optional interrupt handling statements}
  17428.           UNTIL Format_Done;
  17429.  
  17430.           This results in the following:
  17431.           Whenever the trigger key is pressed and a message is  defined for the
  17432.           current field and if that format does not contain a message field and
  17433.           no help screen is defined for the current field then the format 'Msg'
  17434.           is called up displaying the message defined for the current field.
  17435.  
  17436.  
  17437.  
  17438.  
  17439.  
  17440.           Appendix A, tips and tricks                                  page 230
  17441.           Appendix A, tips and tricks                                  page 230
  17442.                 
  17443.  
  17444.  
  17445.  
  17446.  
  17447.  
  17448.  
  17449.  
  17450.           OASIS Evaluation Reference Manual
  17451.           OASIS Evaluation Reference Manual
  17452.  
  17453.  
  17454.           Using 'Goto_Field'
  17455.           Using 'Goto_Field'
  17456.  
  17457.           Sometimes it is desirable to skip one or  more fields  depending on a
  17458.           certain entry.  For example, let's assume you have a format where you
  17459.           want to skip fields  5 and  6 if  field 4  contains 'N'.  This can be
  17460.           easily realized using 'Goto_Field' as the following example shows.
  17461.  
  17462.  
  17463.  
  17464.           REPEAT 
  17465.             Handle_Format;
  17466.             IF end_of_field THEN 
  17467.               BEGIN{
  17468.                 IF (Active_Field = 4) AND G_Cont(4) = 'N' THEN 
  17469.                   BEGIN;
  17470.                     Goto_Field(7);         
  17471.                     Char_Code:=Code_Noop;   {must do this because otherwise}   
  17472.                END;                      {we  would leave  field 7  again}     
  17473.           END;
  17474.           UNTIL Format_Done;
  17475.  
  17476.  
  17477.  
  17478.  
  17479.  
  17480.  
  17481.  
  17482.  
  17483.  
  17484.  
  17485.  
  17486.  
  17487.  
  17488.  
  17489.  
  17490.  
  17491.  
  17492.  
  17493.  
  17494.  
  17495.  
  17496.  
  17497.  
  17498.  
  17499.  
  17500.  
  17501.  
  17502.  
  17503.  
  17504.  
  17505.  
  17506.  
  17507.  
  17508.  
  17509.  
  17510.  
  17511.           Appendix A, tips and tricks                                  page 231
  17512.           Appendix A, tips and tricks                                  page 231
  17513.                 
  17514.  
  17515.  
  17516.  
  17517.  
  17518.  
  17519.  
  17520.  
  17521.           OASIS Evaluation Reference Manual
  17522.           OASIS Evaluation Reference Manual
  17523.  
  17524.  
  17525.  
  17526.  
  17527.  
  17528.  
  17529.  
  17530.  
  17531.  
  17532.  
  17533.  
  17534.  
  17535.  
  17536.  
  17537.  
  17538.  
  17539.  
  17540.  
  17541.  
  17542.  
  17543.  
  17544.  
  17545.                                        Appendix B
  17546.                                        Appendix B
  17547.                        
  17548.  
  17549.  
  17550.  
  17551.  
  17552.  
  17553.  
  17554.  
  17555.  
  17556.  
  17557.  
  17558.  
  17559.  
  17560.  
  17561.  
  17562.  
  17563.  
  17564.  
  17565.  
  17566.  
  17567.  
  17568.  
  17569.  
  17570.  
  17571.  
  17572.  
  17573.  
  17574.  
  17575.  
  17576.  
  17577.  
  17578.  
  17579.  
  17580.  
  17581.  
  17582.  
  17583.  
  17584.  
  17585.  
  17586.  
  17587.  
  17588.  
  17589.  
  17590.  
  17591.  
  17592.           OASIS Evaluation Reference Manual
  17593.           OASIS Evaluation Reference Manual
  17594.  
  17595.  
  17596.  
  17597.  
  17598.  
  17599.  
  17600.  
  17601.  
  17602.  
  17603.  
  17604.  
  17605.  
  17606.  
  17607.  
  17608.  
  17609.  
  17610.  
  17611.  
  17612.  
  17613.  
  17614.  
  17615.                           This Page is intentionally left blank
  17616.  
  17617.  
  17618.  
  17619.  
  17620.  
  17621.  
  17622.  
  17623.  
  17624.  
  17625.  
  17626.  
  17627.  
  17628.  
  17629.  
  17630.  
  17631.  
  17632.  
  17633.  
  17634.  
  17635.  
  17636.  
  17637.  
  17638.  
  17639.  
  17640.  
  17641.  
  17642.  
  17643.  
  17644.  
  17645.  
  17646.  
  17647.  
  17648.  
  17649.  
  17650.  
  17651.  
  17652.           Appendix B,  SCL procedures & functions                      page 233
  17653.           Appendix B,  SCL procedures & functions                      page 233
  17654.  
  17655.  
  17656.  
  17657.  
  17658.  
  17659.  
  17660.  
  17661.  
  17662.           OASIS Evaluation Reference Manual
  17663.           OASIS Evaluation Reference Manual
  17664.  
  17665.  
  17666.  
  17667.           Alphabethic List of all User accessible SCL Procedures & Functions
  17668.           Alphabethic List of all User accessible SCL Procedures & Functions
  17669.  
  17670.           Explanation of symbols used.
  17671.           Explanation of symbols used.
  17672.  
  17673.  
  17674.                        
  17675.           + Full explanation in the SCL part of this manual.
  17676.           + Full explanation in the SCL part of this manual.
  17677.           * Usage possible. See text.
  17678.           * Usage possible. See text.
  17679.           / Usage possible but restricted. See text.
  17680.           / Usage possible but restricted. See text.
  17681.           F Function
  17682.           F Function
  17683.           P Procedure
  17684.           P Procedure
  17685.  
  17686.  
  17687.           + P Beep;
  17688.           + P Blank_Format;
  17689.           + F Capital(Wrkstr: String): String;
  17690.           + F Charstring(Whatchar:CHAR;Len:INTEGER):String;
  17691.           + P Check_Date(VAR Date_Str:String10;VAR Y,M,D:WORD);
  17692.           + P Check_Time(VAR Time_Str:String10;VAR H,M,S:WORD);
  17693.           + P Clear_Rx_Buffer;
  17694.           + P Close_Dc;
  17695.           + P Close_Formats;
  17696.           + F Cts:BOOLEAN;
  17697.           * P Cursor(Top,Bottom:byte); Sets cursor shape 
  17698.           * P Cursor_off; Makes Cursor invisible
  17699.           + P C_Cont(Fieldnr:INTEGER);
  17700.           + F Date:String10;
  17701.           + F Date_String(Y,M,D:WORD):String10;
  17702.           * P DC(X,Y,Charcode:Byte);  Writes Charcode at screen pos X,Y.
  17703.           * P Dc_Break; Sends a 'Break' onto the datacom line. 
  17704.           + P Dc_Diagnose(On:BOOLEAN);
  17705.           + P Dc_Write(Code:Byte;VAR Ok:BOOLEAN);
  17706.           + P Disable_Port;
  17707.           + P Display_Format(Xoffset,Yoffset:INTEGER);
  17708.           + P DosExecute:String128);
  17709.           * P Draw_Char(Charcode:Byte);
  17710.               Writes Charcode at current pos on screen.
  17711.           + F Dsr:BOOLEAN;
  17712.           + P Enable_Port;
  17713.           + F Environment(Env_Name:String128):String128;
  17714.           + P Execute(Progstring:String128);
  17715.           + F Exist(Fn : String80):BOOLEAN;
  17716.           * P Fatal_Scl_Error(Errornr:INTEGER);
  17717.               Displays error msg and halts SCL. Dont use Errornr < 4,    
  17718.               these are for internal use only. 
  17719.           + P Finish_Format(Check:BOOLEAN);
  17720.           + F Format_Done:BOOLEAN;
  17721.  
  17722.  
  17723.  
  17724.  
  17725.  
  17726.  
  17727.  
  17728.  
  17729.  
  17730.           Appendix B,  SCL procedures & functions                      page 234
  17731.           Appendix B,  SCL procedures & functions                      page 234
  17732.  
  17733.  
  17734.  
  17735.  
  17736.  
  17737.  
  17738.  
  17739.  
  17740.           OASIS Evaluation Reference Manual
  17741.           OASIS Evaluation Reference Manual
  17742.  
  17743.  
  17744.           * F Format_Name:string80; Returns the name of the active format 
  17745.           + P Frontstring(STR:String;VAR Head,Tail:String);
  17746.           * P Ftab(VAR Wrkstr:String;Fill_Char:CHAR;
  17747.                              Just:Position;Len:INTEGER);
  17748.               Justifies  Wrkstr in a field of length Len according to Just.    
  17749.               All blanks are replaced by Fill_Char. See declaration of type    
  17750.               Position.
  17751.           / F Get_Att(X,Y:INTEGER):Byte;
  17752.               Returns video attribute of position X,Y. X=1..80, Y=1..25. 
  17753.           * P Get_Country;
  17754.               Updates Country dependant Info. If SCL_Country > 0 then Info     
  17755.               is updated accordingly, otherwise according to CONFIG.SYS. 
  17756.           + P Get_Dc_Status(VAR Status:INTEGER);
  17757.           / P Get_Next_Char(VAR Charnumber:INTEGER ; VAR Inputchar:CHAR);  
  17758.               Waits until a key is pressed and returns Code and Image of    
  17759.               the key. Code is SCL notation. Don't use together with 
  17760.               background processing (you're stuck until a key is pressed).
  17761.           * P Get_Screen_Mode;
  17762.               Sets the variables Screen_Mode, Mono_Adapter and Color_True  
  17763.               according to the current screen mode used. 
  17764.           + P Goto_Field(Fn:INTEGER);
  17765.           + F G_Cont(Fn:INTEGER):String80;
  17766.           + F G_Sel(Fn:INTEGER):BOOLEAN;
  17767.           + P Handle_Format;
  17768.           + P Hp_Background_Task; FORWARD;
  17769.           * P Input_Error(Msgnr:INTEGER);
  17770.               Displays error msg in Err msg Field and beeps.
  17771.           + F Julian_Date(VAR Y,M,D:WORD):REAL;
  17772.           + F Justify_Center(STR:String;Len:INTEGER):String;
  17773.           + F Justify_Left(STR:String;Len:INTEGER):String;
  17774.           + F Justify_Right(STR:String;Len:INTEGER):String;
  17775.           / F Next_Char(VAR Esc:BOOLEAN):CHAR;
  17776.               Waits until a key is pressed and returns ASCII Code. If key 
  17777.               generated a two byte code then 'Esc' is true. See 
  17778.               'Get_Next_Char' for restrictions.
  17779.           + P Normal_Date(Julian:REAL;VAR Y,M,D:WORD);
  17780.           + F Nr(St:String80):INTEGER;
  17781.           + P Open_Dc(VAR Result:INTEGER);
  17782.           / P Paint_Format_Frame(Color:Byte);
  17783.               Changes video attr. of first and last row and column of current
  17784.               format to color. S_Ptr must be valid ( > 0).
  17785.           + F Power(Mantissa,Exponent:REAL):REAL;
  17786.           + P Receive_Char(VAR Code:INTEGER;VAR Ok:BOOLEAN);
  17787.           + F Ri:BOOLEAN;
  17788.           + F Rnr(s:string80):real;
  17789.           + F Rst(r:Real;Decimals:integer):string;
  17790.           * F Rtime:REAL;
  17791.               Returns current time in hundreds of seconds since midnight. 
  17792.  
  17793.  
  17794.  
  17795.  
  17796.  
  17797.  
  17798.  
  17799.  
  17800.           Appendix B,  SCL procedures & functions                      page 235
  17801.           Appendix B,  SCL procedures & functions                      page 235
  17802.  
  17803.  
  17804.  
  17805.  
  17806.  
  17807.  
  17808.  
  17809.  
  17810.           OASIS Evaluation Reference Manual
  17811.           OASIS Evaluation Reference Manual
  17812.  
  17813.  
  17814.           + P R_Cont(Fieldnr:INTEGER;VAR Contents:String80);
  17815.           + P R_Sel(Fieldnr:INTEGER; VAR Sel:BOOLEAN);
  17816.           + P Select_Format(Fname:String10);
  17817.           + P Select_Format_File(Filename:String10);
  17818.           + PSend_Buffer(VARTx_Buff;Buff_Start,Buff_Length,Bcc_add
  17819.             :INTEGER; 
  17820.           + P Send_Char(Code:Byte;var Ok:BOOLEAN);
  17821.           + P Send_String(Data:String255;VAR Ok:BOOLEAN);
  17822.           / P Set_Att(X,Y:INTEGER;Color:Byte);
  17823.               Changes the video attribute at X,Y to color. X = 1..80,    
  17824.               Y = 1..25. 
  17825.           + P Set_Dc_Params;
  17826.           + P Set_Dtr(On:BOOLEAN);
  17827.           / P Set_Edit_Mode(Yes:BOOLEAN);
  17828.               Sets or resets edit mode. Make sure that Active_Field > 0.
  17829.           / P Set_Field_Color(Fieldnr:INTEGER;Color:Byte);
  17830.               Changes video attributes of current field to  color.  Fieldnr
  17831.               must be valid.
  17832.           / P Set_Mx(Value:INTEGER);
  17833.               Move  Cursor to Column = Value. Conflicts with SCL likely.  
  17834.           / P Set_My(Value:INTEGER);
  17835.               Move Cursor to Row = Value. Conflicts with SCL likely. 
  17836.           + P Set_Rts(On:BOOLEAN);
  17837.           / P Set_Screen_Color(Color:Byte);
  17838.               Changes the complete screen to color (incl all fields).  
  17839.           + F St(I:INTEGER):String80;
  17840.           + P Strip(VAR Wrkstr:String;VAR Len:INTEGER);
  17841.           + F Stripleft(Wrkstr: String): String;
  17842.           + F Stripright(Wrkstr: String): String;
  17843.           + F Sys_Msg(Nr:INTEGER):String80;
  17844.           + F Time(Seconds:BOOLEAN):String10;
  17845.           + F Time_String(H,M,S:WORD):String10;
  17846.           + F Tx_Ok:BOOLEAN;
  17847.           + F Weekday(Y,M,D:WORD):INTEGER;
  17848.           + P W_Cont(Fieldnr:INTEGER;Cont:String80);
  17849.           / P W_Crt(Fieldnr:INTEGER;Msg:String80);
  17850.               Writes  Msg to the specified field.  Does  not  change/Update 
  17851.               Format content (Screen only). S_Ptr must be valid (>0). 
  17852.           + P W_Sel(Fieldnr:INTEGER;Sel:BOOLEAN);
  17853.           + F X_Max:INTEGER;
  17854.           + F Y_Max:INTEGER;
  17855.  
  17856.  
  17857.  
  17858.  
  17859.  
  17860.  
  17861.  
  17862.  
  17863.  
  17864.  
  17865.  
  17866.  
  17867.  
  17868.  
  17869.  
  17870.           Appendix B,  SCL procedures & functions                      page 236
  17871.           Appendix B,  SCL procedures & functions                      page 236
  17872.  
  17873.  
  17874.  
  17875.  
  17876.  
  17877.  
  17878.  
  17879.  
  17880.           OASIS Evaluation Reference Manual
  17881.           OASIS Evaluation Reference Manual
  17882.  
  17883.  
  17884.                                Datacom Control Characters
  17885.                                Datacom Control Characters
  17886.  
  17887.  
  17888.  
  17889.           CONST    
  17890.             Nul       = $0;
  17891.             Soh       = $1;
  17892.             Stx       = $2;
  17893.             Etx       = $3;
  17894.             Eot       = $4;
  17895.             Enq       = $5;
  17896.             Ack       = $6;
  17897.             Bel       = $7;
  17898.             Con       = $7;
  17899.             Bs        = $8;
  17900.             Ht        = $9;
  17901.             Lf        = $a;
  17902.             Vt        = $b;
  17903.             Ff        = $c;
  17904.             Cr        = $d;
  17905.             S0        = $e;
  17906.             S1        = $f;
  17907.             Dle       = $10;
  17908.             Dc1       = $11;
  17909.             Dc2       = $12;
  17910.             Dc3       = $13;
  17911.             Dc4       = $14;
  17912.             Nak       = $15;
  17913.             Syn       = $16;
  17914.             Etb       = $17;
  17915.             Can       = $18;
  17916.             Em        = $19;
  17917.             Sub       = $1a;
  17918.             Esc       = $1b;
  17919.             Fs        = $1c;
  17920.             Gs        = $1d;
  17921.             Rs        = $1e;
  17922.             Us        = $1f;
  17923.             Pol       = $70;
  17924.             Sel       = $71;
  17925.             Fsl       = $73;
  17926.             Bsl       = $74;
  17927.             Del       = $7f;
  17928.             
  17929.  
  17930.  
  17931.  
  17932.  
  17933.  
  17934.  
  17935.  
  17936.  
  17937.  
  17938.  
  17939.  
  17940.  
  17941.           Appendix B,  SCL procedures & functions                      page 237
  17942.           Appendix B,  SCL procedures & functions                      page 237
  17943.  
  17944.  
  17945.  
  17946.  
  17947.  
  17948.  
  17949.  
  17950.  
  17951.           OASIS Evaluation Reference Manual
  17952.           OASIS Evaluation Reference Manual
  17953.  
  17954.  
  17955.                                Field Attributes and Colors
  17956.                                Field Attributes and Colors
  17957.                                ___________________________
  17958.  
  17959.  
  17960.  
  17961.           Possible Field Attributes:
  17962.           Possible Field Attributes:
  17963.  
  17964.                        -------- Monochrome ----------
  17965.                        Normal     Active     Selected       Active (Color)-----
  17966.           -----------------------------------------------------------
  17967.           Inverted       N           Y           Y               Y 
  17968.           Intensity      Y           Y           Y               Y
  17969.           Underlined     N           Y           Y               N
  17970.           Marked         N           Y 1)        Y               N
  17971.           Blink          N           Y           N               Y
  17972.  
  17973.  
  17974.           1) The marks blink if used as an attribute for 'Active'.
  17975.  
  17976.                        
  17977.           Note:   Multiple choices  of the above attributes are possible. Refer
  17978.           Note:
  17979.           to the SFD part of the  manual for  restrictions applying  to certain
  17980.           combinations of attributes.
  17981.           'Normal' and  'Selected' on  color systems are specified by any valid
  17982.           Foreground/Background color combination according to the table below.
  17983.  
  17984.  
  17985.  
  17986.  
  17987.           Colors. (Systems with color graphics adapter). 
  17988.           Colors. (Systems with color graphics adapter).
  17989.                           
  17990.                        Background      Foreground
  17991.           ---------------------------------------
  17992.           Black             Y               Y
  17993.           Blue              Y               Y
  17994.           Green             Y               Y
  17995.           Cyan              Y               Y
  17996.           Red               Y               Y
  17997.           Magenta           Y               Y
  17998.           Brown             Y               Y
  17999.           Light grey        Y               Y
  18000.           Dark Grey         N               Y
  18001.           Light Blue        N               Y
  18002.           Light Green       N               Y
  18003.           Light Cyan        N               Y
  18004.           Light Red         N               Y
  18005.           Light Magenta     N               Y
  18006.           Yellow            N               Y
  18007.           White             N               Y
  18008.  
  18009.  
  18010.  
  18011.  
  18012.  
  18013.  
  18014.  
  18015.  
  18016.  
  18017.           Appendix B,  SCL procedures & functions                      page 238
  18018.           Appendix B,  SCL procedures & functions                      page 238
  18019.  
  18020.  
  18021.  
  18022.  
  18023.  
  18024.  
  18025.  
  18026.  
  18027.           OASIS Evaluation Reference Manual
  18028.           OASIS Evaluation Reference Manual
  18029.  
  18030.  
  18031.                                 Functions in SCL Programs
  18032.                                 Functions in SCL Programs
  18033.                                 _________________________
  18034.  
  18035.  
  18036.  
  18037.  
  18038.           Right     : 1. In Travel Mode : Next Field. 
  18039.                             Travel Mode
  18040.                       2. In Entry Mode : Next Character.
  18041.                             Entry Mode
  18042.  
  18043.           Left      : 1. In Travel Mode : Previous Field. 
  18044.                             Travel Mode
  18045.                       2. In Entry Mode  : Previous Character.
  18046.                             Entry Mode
  18047.  
  18048.           Down      : First field on next line.
  18049.  
  18050.           Up        : Last field on previous line.
  18051.  
  18052.           Home      : First field in line.
  18053.  
  18054.           End       : Last field in line.
  18055.  
  18056.           PgDn      : Last field on format.
  18057.  
  18058.           PgUp      : First field on format.
  18059.  
  18060.           Tab       : Next field.
  18061.  
  18062.           ShiftTab  : Previous field.
  18063.  
  18064.           Backspace : Delete character left of cursor.
  18065.  
  18066.           Insert    : Insert a space at the cursor position.
  18067.  
  18068.           Delete    : Delete character under cursor.
  18069.  
  18070.           Return    : 1. Entry mode.
  18071.                       2. Finish  field  and  advance to  next  field  (if      
  18072.                          already in the last field, finish the format).    
  18073.                       3. Toggle Selected Status of a Constant.
  18074.                                 Selected
  18075.  
  18076.           Escape    : Finish Format.
  18077.  
  18078.           F1        : Format related Help information.
  18079.  
  18080.           F2        : Field related Help information.
  18081.  
  18082.           F3        : UNDO. Restores field to previous content.
  18083.  
  18084.           F10       : Abort current activity (not valid with every format).
  18085.  
  18086.  
  18087.  
  18088.  
  18089.  
  18090.  
  18091.  
  18092.  
  18093.  
  18094.           Appendix B,  SCL procedures & functions                      page 239
  18095.           Appendix B,  SCL procedures & functions                      page 239
  18096.  
  18097.  
  18098.  
  18099.  
  18100.  
  18101.  
  18102.  
  18103.  
  18104.           OASIS Evaluation Reference Manual
  18105.           OASIS Evaluation Reference Manual
  18106.  
  18107.  
  18108.                                Standard SCL Error Messages
  18109.                                Standard SCL Error Messages
  18110.                                ___________________________
  18111.  
  18112.           <1> Format File not found
  18113.           <2> Not enough Memory to run
  18114.           <3> This program requires 80 column screen
  18115.           <4> Format does not fit at specified location
  18116.           <5> Format not found
  18117.           <6> Insufficient Mem in Heap for screen
  18118.           <7> Runtime or I/O error while SCL was running
  18119.           <8> Format file not sorted or integrity error
  18120.           <9> Attempt to read field while format read pointer is zero 
  18121.           <10> Attempt to read from invalid fieldnumber
  18122.           <11> Break key pressed
  18123.           <12> Attempt  to write  to field  while format  write pointer is zero
  18124.           <13> Attempt to write to invalid field number
  18125.           <14> Invalid path specified
  18126.           <15> Invalid Key Pressed
  18127.           <16> Warning: End of Field
  18128.           <17> Format has only one Field
  18129.           <18> Input mandatory
  18130.           <19> Numeric Data expected
  18131.           <20> Value entered too small
  18132.           <21> Value entered too big
  18133.           <22>
  18134.           <23>
  18135.           <24>
  18136.           <25>
  18137.           <26>
  18138.           <27>
  18139.           <28>
  18140.           <29>
  18141.           <30>
  18142.           <31>
  18143.           <32>
  18144.           <33>
  18145.           <34>
  18146.           <35>
  18147.           <36> Integer number expected
  18148.           <37> Helpfile not available
  18149.           <38> This Helpfunction not available
  18150.           <39> Autohelp-Format not found
  18151.           <40>
  18152.  
  18153.  
  18154.  
  18155.  
  18156.  
  18157.  
  18158.  
  18159.  
  18160.  
  18161.  
  18162.  
  18163.  
  18164.  
  18165.  
  18166.           Appendix B,  SCL procedures & functions                      page 240
  18167.           Appendix B,  SCL procedures & functions                      page 240
  18168.  
  18169.  
  18170.  
  18171.  
  18172.  
  18173.  
  18174.  
  18175.  
  18176.           OASIS Evaluation Reference Manual
  18177.           OASIS Evaluation Reference Manual
  18178.  
  18179.  
  18180.  
  18181.                                    The Shareware Idea
  18182.                                    The Shareware Idea
  18183.  
  18184.           Shareware (sometimes  called  User supported  Software  or 
  18185.           freeware) attempts to provide useful programs to the  PC community at
  18186.           low  cost  by  reducing  the  dependence  on  conventional  marketing
  18187.           channels.
  18188.           Several software developers have  proven that  the concept  works, to
  18189.           the  mutual  benefit  of  the  independent program authors and the PC
  18190.           community itself.
  18191.           The user benefits by the availability of low  cost software  which he
  18192.           can evaluate on his own system before making the decision to purchase
  18193.           it.  The author benefits by being able  to enter  the software market
  18194.           without  extensive  monetary  risks.    The user community determines
  18195.           which products succeed based  on their  true utility,  rather than on
  18196.           their marketing achievements.
  18197.  
  18198.  
  18199.  
  18200.  
  18201.  
  18202.  
  18203.  
  18204.  
  18205.  
  18206.  
  18207.  
  18208.  
  18209.  
  18210.  
  18211.  
  18212.  
  18213.  
  18214.  
  18215.  
  18216.  
  18217.  
  18218.  
  18219.  
  18220.  
  18221.  
  18222.  
  18223.  
  18224.  
  18225.  
  18226.  
  18227.  
  18228.  
  18229.  
  18230.  
  18231.  
  18232.  
  18233.  
  18234.  
  18235.  
  18236.  
  18237.           Appendix B, OASIS products                                   page 241
  18238.           Appendix B, OASIS products                                   page 241
  18239.  
  18240.  
  18241.  
  18242.  
  18243.  
  18244.  
  18245.  
  18246.  
  18247.           OASIS Evaluation Reference Manual
  18248.           OASIS Evaluation Reference Manual
  18249.  
  18250.  
  18251.                             OASIS Products & Licencing Terms
  18252.                             OASIS Products & Licencing Terms
  18253.  
  18254.           The  following  products  will  be  available  from  EUREKA  SOFTWARE
  18255.           ASSOCIATES:
  18256.  
  18257.                - OASIS Demo package
  18258.                - OASIS Evaluation software
  18259.                - OASIS 
  18260.  
  18261.  
  18262.  
  18263.           OASIS Demo package
  18264.           OASIS Demo package
  18265.           __________________
  18266.  
  18267.           Description
  18268.           Description
  18269.  
  18270.           This  package  as  its  name  indicates  is  only  to  be   used  for
  18271.           demonstration purposes.  It is  ment to  give you a taste of what you
  18272.           can achieve with OASIS. Each demo  application comes  with the source
  18273.           code and the associated documentation commenting each procedure. This
  18274.           package does not require you  to  register,  feel  free  to  copy and
  18275.           distribute this package and use some of its handy utilities.
  18276.  
  18277.  
  18278.           Distribution
  18279.           Distribution
  18280.  
  18281.                - Download 
  18282.                - Mail order 
  18283.  
  18284.  
  18285.           Pricing (No registration required)
  18286.           Pricing
  18287.  
  18288.                - Download                         no charge
  18289.                - Mail order                       $10
  18290.                  includes disk & hard copy
  18291.  
  18292.  
  18293.  
  18294.  
  18295.  
  18296.  
  18297.  
  18298.  
  18299.  
  18300.  
  18301.  
  18302.  
  18303.  
  18304.  
  18305.  
  18306.  
  18307.  
  18308.  
  18309.  
  18310.  
  18311.  
  18312.  
  18313.           Appendix B, OASIS products                                   page 242
  18314.           Appendix B, OASIS products                                   page 242
  18315.  
  18316.  
  18317.  
  18318.  
  18319.  
  18320.  
  18321.  
  18322.  
  18323.           OASIS Evaluation Reference Manual
  18324.           OASIS Evaluation Reference Manual
  18325.  
  18326.  
  18327.           OASIS Evaluation (This package)
  18328.           OASIS Evaluation
  18329.           ________________
  18330.  
  18331.  
  18332.           Description
  18333.           Description
  18334.  
  18335.           This package is the evaluation version of OASIS. It offers almost all
  18336.           OASIS features and  formats  (screens)  created  with  the evaluation
  18337.           version are entirely compatible with full blown version of OASIS. The
  18338.           limitation of this version resides in the number of formats (screens)
  18339.           you can  handle in  any single file, the limit is set to 20 for OASIS
  18340.           Evaluation. This  mean  you  can  still  create  an  application that
  18341.           requires up  to 20  screens, for more complexe applications with more
  18342.           screens you need the full version of OASIS. 
  18343.  
  18344.  
  18345.           Distribution
  18346.           Distribution
  18347.  
  18348.                - Download
  18349.                - Mail order        
  18350.  
  18351.  
  18352.           Licencing Terms
  18353.           Licencing Terms
  18354.  
  18355.           OASIS Evaluation is NOT public domain  software, it  is a copyrighted
  18356.           product  distributed  by  EUREKA  SOFTWARE ASSOCIATES. You are hereby
  18357.           granted a limited license to use  OASIS, and  to copy  it and further
  18358.           distribute it, under the following conditions:
  18359.  
  18360.           1) No fee other than the cost of media and copying (max $10 per copy)
  18361.           may  be  charged  for   such  copying   and  distribution,  otherwise
  18362.           permission of EUREKA SOFTWARE ASSOCIATES is required.
  18363.  
  18364.           2) OASIS  Evaluation may  ONLY be  distributed in its original state,
  18365.           complete and without any  modifications  or  changes  to  the program
  18366.           itself or to any of its data files.
  18367.  
  18368.           3) Use  without registration must be limited to a reasonable time (no
  18369.           more than 14 days) and for test and  evaluation purposes  only, after
  18370.           which it must be registered in accordance with the following terms.
  18371.  
  18372.  
  18373.  
  18374.  
  18375.  
  18376.  
  18377.  
  18378.  
  18379.  
  18380.  
  18381.  
  18382.  
  18383.  
  18384.  
  18385.  
  18386.  
  18387.  
  18388.           Appendix B, OASIS products                                   page 243
  18389.           Appendix B, OASIS products                                   page 243
  18390.  
  18391.  
  18392.  
  18393.  
  18394.  
  18395.  
  18396.  
  18397.  
  18398.           OASIS Evaluation Reference Manual
  18399.           OASIS Evaluation Reference Manual
  18400.  
  18401.  
  18402.           Commercial use:
  18403.           ______________
  18404.  
  18405.           If OASIS  Evaluation Software is used in a commercial & institutional
  18406.           environment users must register  under the  'Commercial Users Licence
  18407.           Agreement'  scheme.  Any  use  of  OASIS  Evaluation beyond the trial
  18408.           period is a copyright violation.
  18409.  
  18410.           Conditions:
  18411.           Within  the  terms  of   this  agreement,   a  corporation,  company,
  18412.           institution, organization,  or individual can use OASIS Evaluation to
  18413.           produce programs for commercial  purposes  subject  to  the following
  18414.           conditions:
  18415.  
  18416.           1.   This  license  applies  to  the  OASIS  Evaluation  software  as
  18417.                described in this manual and its documentation.
  18418.  
  18419.           2.   You must treat this software just like a  book ONLY  ONE CPU PER
  18420.                LICENSE can use the software at the same time in the original or
  18421.                modified forms. However, you  are  authorized  to  make archival
  18422.                copies for safekeeping.
  18423.  
  18424.           3.   You  may  produce  any  number  of  executable code programs for
  18425.                profit for world-wide distribution  with  this  software without
  18426.                royalties to the author.
  18427.  
  18428.           4.   The license  applies to  the original  copy of  this software as
  18429.                well as to updated versions which may become available. There is
  18430.                no further  charge for using the updated versions. The author is
  18431.                neither obligated to provide  updated  versions  nor  notices of
  18432.                error corrections.  The author  is not  obligated to provide any
  18433.                services of any kind to support OASIS Evaluation .
  18434.  
  18435.           6.   The user agrees to conscientiously respect the copyright  to the
  18436.                author  of  the  code  and  not  to  illegally,  unethically, or
  18437.                neglectfully exploit the services provided by the author.
  18438.  
  18439.           7.   This code is provided "as  is"  without  warranty  of  any kind,
  18440.                either  expressed  or  implied,  included but not limited to the
  18441.                implied warranty of merchantability  and fitness  for a specific
  18442.                purpose. The  entire risk  as to  the quality and performance of
  18443.                the coding  is with  you. Should  the code  prove defective, you
  18444.                assume  the  entire  cost  of all necessary servicing, repair or
  18445.                correction.
  18446.  
  18447.           8.   In no event will the author  be liable  to you  for any damages,
  18448.                including any  lost profits, lost savings or other incidental or
  18449.                consequential damages arising out of the use or inability to use
  18450.                this code.
  18451.  
  18452.           9.   The User acknowledges having read this agreement and the License
  18453.                Statement, understands them, and agrees  to  be  bound  by their
  18454.                terms and conditions. 
  18455.  
  18456.  
  18457.  
  18458.  
  18459.           Appendix B, OASIS products                                   page 244
  18460.           Appendix B, OASIS products                                   page 244
  18461.  
  18462.  
  18463.  
  18464.  
  18465.  
  18466.  
  18467.  
  18468.  
  18469.           OASIS Evaluation Reference Manual
  18470.           OASIS Evaluation Reference Manual
  18471.  
  18472.  
  18473.           Private (non-profit) use:
  18474.           ________________________
  18475.  
  18476.           If OASIS  Evaluation is used privately only and not for profit making
  18477.           purposes, please  register under  the private  user licence agreement
  18478.           scheme.
  18479.           The applicable  terms are,  apart from point 3, identical to the ones
  18480.           listed above.
  18481.  
  18482.  
  18483.  
  18484.           Pricing
  18485.           Pricing
  18486.  
  18487.  
  18488.                        
  18489.                Registration
  18490.                Registration                                      $40
  18491.                does not include disk or manual
  18492.  
  18493.  
  18494.  
  18495.                        
  18496.                Private Licence              
  18497.                Private Licence                                
  18498.                includes registration, distribution disks         $60 
  18499.                & reference manual on disk
  18500.  
  18501.                includes registration, distribution disks         $80 
  18502.                &  with hard copy manual
  18503.                                      
  18504.  
  18505.  
  18506.                        
  18507.                Commercial Users Licence   
  18508.                Commercial Users Licence
  18509.                includes registration, distibution disks          $120 
  18510.                & hard copy manual.
  18511.                                      
  18512.  
  18513.  
  18514.  
  18515.  
  18516.  
  18517.  
  18518.  
  18519.  
  18520.  
  18521.  
  18522.  
  18523.  
  18524.  
  18525.  
  18526.  
  18527.  
  18528.  
  18529.  
  18530.  
  18531.  
  18532.  
  18533.  
  18534.  
  18535.  
  18536.  
  18537.  
  18538.  
  18539.  
  18540.           Appendix B, OASIS products                                   page 245
  18541.           Appendix B, OASIS products                                   page 245
  18542.  
  18543.  
  18544.  
  18545.  
  18546.  
  18547.  
  18548.  
  18549.  
  18550.           OASIS Evaluation Reference Manual
  18551.           OASIS Evaluation Reference Manual
  18552.  
  18553.  
  18554.           OASIS
  18555.           OASIS
  18556.           _____
  18557.  
  18558.           Description
  18559.           Description
  18560.  
  18561.           Identical to OASIS Evaluation but no  limit to  the number  of format
  18562.           per file.
  18563.  
  18564.  
  18565.           Distribution 
  18566.           Distribution 
  18567.  
  18568.                - Mail order
  18569.  
  18570.                     Note:  Application  available,  Documentation draft version
  18571.                     approx. 250 pages.
  18572.  
  18573.  
  18574.           Licensing terms
  18575.           Licensing terms
  18576.  
  18577.                - Same as OASIS Evaluation Commercial use.
  18578.  
  18579.  
  18580.           Pricing
  18581.           Pricing
  18582.  
  18583.                - includes registration, distibution disks        $199 
  18584.                  & hard copy manual.
  18585.  
  18586.  
  18587.  
  18588.  
  18589.  
  18590.  
  18591.  
  18592.  
  18593.  
  18594.  
  18595.  
  18596.  
  18597.  
  18598.  
  18599.  
  18600.  
  18601.  
  18602.  
  18603.  
  18604.  
  18605.  
  18606.  
  18607.  
  18608.  
  18609.  
  18610.  
  18611.  
  18612.  
  18613.  
  18614.  
  18615.  
  18616.           Appendix B, OASIS products                                   page 246
  18617.           Appendix B, OASIS products                                   page 246
  18618.  
  18619.  
  18620.  
  18621.  
  18622.  
  18623.  
  18624.  
  18625.  
  18626.           OASIS Evaluation Reference Manual
  18627.           OASIS Evaluation Reference Manual
  18628.  
  18629.  
  18630.                              ------------------------
  18631.                              | Invoice & Order Form |
  18632.                                Invoice & Order Form
  18633.                              ------------------------
  18634.  
  18635.           =================================================================
  18636.           "                   O R D E R     F O R M                       "
  18637.                               O R D E R     F O R M
  18638.           "==============================================================="
  18639.           " Date: __ / __ / __                PO#: ______________         "
  18640.           "---------------------------------------------------------------"
  18641.           " Qty     Description                            $/unit         "
  18642.           "---------------------------------------------------------------"
  18643.           "     |                                        |        |       "
  18644.           " __  |OASIS Demo package mail order  *        | $10.00 |___.__ "
  18645.           "     |                                        |        |       "
  18646.           " __  |OASIS Evaluation Registration           | $40.00 |___.__ "
  18647.           "     |(does not include disk)                 |        |       "
  18648.           "     |                                        |        |       "
  18649.           " __  |OASIS Evaluation Private Licence  *     | $60.00 |___.__ "
  18650.           "     |(registration, disks, manual on disk)   |        |       "
  18651.           "     |                                        |        |       "
  18652.           " __  |OASIS Evaluation Private Licence  **    | $80.00 |___.__ "
  18653.           "     |(registration, disks and manual)        |        |       "
  18654.           "     |                                        |        |       "
  18655.           " __  |OASIS Evaluation Commercial User Licence|$120.00 |___.__ "
  18656.           "     |(registration, disks and manual)  **    |        |       "
  18657.           "     |                                        |        |       "
  18658.           " __  |OASIS  Commercial User Licence    **    |$199.00 |___.__ "
  18659.           "     |(registration, disks and manual)        |        |       "
  18660.           "     |                                        |        |       "
  18661.           "==============================================================="
  18662.           "  Michigan residents add 4% sales tax       Subtotal: $____.__ "
  18663.           "  Shipping per order                        Shipping: $____.__ "
  18664.           "      *  US $3 first copy, $1 other copies       Tax: $____.__ "
  18665.           "     **  US $3 first copy, $2 other copies     Total: $____.__ "
  18666.                                                           Total
  18667.           "---------------------------------------------------------------"
  18668.           "  Method of Payment:  ( ) Check       ( ) Money Order          "
  18669.           "                                                               "
  18670.           "  Make check payable to:   EUREKA SOFTWARE ASSOCIATES          "
  18671.                                       EUREKA SOFTWARE ASSOCIATES
  18672.           "                           2344 Yorkshire                      "
  18673.           "                           Ann Arbor, MI 48104                 "
  18674.           "                           USA                                 "
  18675.           "                                                               "
  18676.           "  For orders outside the U.S. please send check drawn on U.S.  "
  18677.           "  bank in U.S. dollars, or international money order in U.S.   "
  18678.           "  dollars.                                                     "
  18679.           "==============================================================="
  18680.           "     Name: ________________________________________________    "
  18681.           "  Address: ________________________________________________    "
  18682.           "           ________________________________________________    "
  18683.           "     City: ______________________   State: __    Zip: _____    "
  18684.           "                                                               "
  18685.           =================================================================
  18686.  
  18687.  
  18688.  
  18689.  
  18690.           Appendix B, OASIS products                                   page 247
  18691.           Appendix B, OASIS products                                   page 247
  18692.  
  18693.  
  18694.  
  18695.  
  18696.  
  18697.  
  18698.  
  18699.  
  18700.           OASIS Evaluation Reference Manual
  18701.           OASIS Evaluation Reference Manual
  18702.  
  18703.  
  18704.                              ------------------------
  18705.                              | Invoice & Order Form |
  18706.                                Invoice & Order Form
  18707.                              ------------------------
  18708.  
  18709.           =================================================================
  18710.           "                       I N V O I C E                           "
  18711.                                   I N V O I C E
  18712.           "==============================================================="
  18713.           " Date: __ / __ / __                PO#: ______________         "
  18714.           "---------------------------------------------------------------"
  18715.           " Qty     Description                            $/unit         "
  18716.           "---------------------------------------------------------------"
  18717.           "     |                                        |        |       "
  18718.           " __  |OASIS Demo package mail order           | $10.00 |___.__ "
  18719.           "     |                                        |        |       "
  18720.           " __  |OASIS Evaluation Registration           | $40.00 |___.__ "
  18721.           "     |(does not include disk)                 |        |       "
  18722.           "     |                                        |        |       "
  18723.           " __  |OASIS Evaluation Private Licence        | $60.00 |___.__ "
  18724.           "     |(registration, disks & manual on disk)  |        |       "
  18725.           "     |                                        |        |       "
  18726.           " __  |OASIS Evaluation Private Licence        | $80.00 |___.__ "
  18727.           "     |(registration, disks and manual)        |        |       "
  18728.           "     |                                        |        |       "
  18729.           " __  |OASIS Evaluation Commercial User Licence|$120.00 |___.__ "
  18730.           "     |(registration, disks and manual)        |        |       "
  18731.           "     |                                        |        |       "
  18732.           " __  |OASIS   Commercial User Licence         |$199.00 |___.__ "
  18733.           "     |(registration, disks and manual)        |        |       "
  18734.           "     |                                        |        |       "
  18735.           "==============================================================="
  18736.           "   Remit to:                                Subtotal: $____.__ "
  18737.           "         EUREKA SOFTWARE ASSOCIATES         Shipping: $____.__ "
  18738.           "         2344 Yorkshire                          Tax: $____.__ "
  18739.           "         Ann Arbor, MI 48104 USA               Total: $____.__ "
  18740.                                                           Total
  18741.           "==============================================================="
  18742.           "  SOLD TO:                                                     "
  18743.           "                                                               "
  18744.           "     Name: ________________________________________________    "
  18745.           "  Address: ________________________________________________    "
  18746.           "           ________________________________________________    "
  18747.           "     City: ______________________   State: __    Zip: _____    "
  18748.           "  Country: ______________________                              "
  18749.           "                                                               "
  18750.           "---------------------------------------------------------------"
  18751.           "  SHIP TO:                                                     "
  18752.           "                                                               "
  18753.           "     Name: ________________________________________________    "
  18754.           "  Address: ________________________________________________    "
  18755.           "           ________________________________________________    "
  18756.           "     City: ______________________   State: __    Zip: _____    "
  18757.           "  Country: ______________________                              "
  18758.           "                                                               "
  18759.           =================================================================
  18760.  
  18761.  
  18762.  
  18763.           Appendix B, OASIS products                                   page 248
  18764.           Appendix B, OASIS products                                   page 248
  18765.  
  18766.  
  18767.  
  18768.  
  18769.  
  18770.  
  18771.  
  18772.  
  18773.           OASIS Evaluation Reference Manual
  18774.           OASIS Evaluation Reference Manual
  18775.  
  18776.  
  18777.  
  18778.  
  18779.  
  18780.  
  18781.  
  18782.  
  18783.  
  18784.  
  18785.  
  18786.  
  18787.  
  18788.  
  18789.  
  18790.  
  18791.  
  18792.  
  18793.  
  18794.  
  18795.  
  18796.  
  18797.  
  18798.  
  18799.  
  18800.  
  18801.  
  18802.  
  18803.  
  18804.  
  18805.  
  18806.  
  18807.  
  18808.  
  18809.  
  18810.  
  18811.  
  18812.  
  18813.  
  18814.  
  18815.  
  18816.  
  18817.  
  18818.  
  18819.  
  18820.  
  18821.  
  18822.  
  18823.  
  18824.  
  18825.  
  18826.  
  18827.  
  18828.  
  18829.  
  18830.  
  18831.  
  18832.  
  18833.           Appendix B, OASIS products                                   page 249
  18834.           Appendix B, OASIS products                                   page 249
  18835.  
  18836.