home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 448a.lha / DECISION_PLUS_Demo / Syntax.Doc < prev    next >
Text File  |  1990-10-29  |  11KB  |  274 lines

  1.  
  2.                          DECISION PLUS (TM) SYNTAX
  3. ----------------------------------------------------------------------
  4.  
  5.  
  6. Syntax Notation:
  7.  
  8.       The '!' character must appear as shown. It indicates a declaration
  9.       statement follows as opposed to general logic statements.
  10.       The '[' and ']' (square braces) indicate optional items .
  11.       The '<' and '>' (triangular braces) indicate manditory items .
  12.  
  13.  
  14.  
  15. Normal Sequence of events:
  16.  
  17.       The first step of a totaly new problem is to design and describe
  18.       any new files to be used. This is done with the 'describe' program.
  19.       No real trick here if you have already grasped how 'Decision Plus'
  20.       describes fields in a file or the temporary fields in a program.
  21.  
  22.       If not the explanation follows:
  23.  
  24.       there are 5 main field types of 3 different sizes, but only certain
  25.       cominations are allowed. The normal form of the declaration is :
  26.  
  27.         "name,[heading],type &size,format"
  28.  
  29.  
  30. declaration in program                       meaning     
  31. -----------------------                     ------------
  32. !temp xx_name,Name,a20,u               a 20 byte character(a=alpha) field 
  33.                                        called xx-name with a heading of
  34.                                        'Name' forced to upercase(u)
  35.  
  36. !temp xx_date,Last Update,d4,dd/mm/yy  a date field called xx-date with a
  37.                                        heading of 'Last Update' to be 
  38.                                        displayed/printed as day/month/year.
  39.                                        (type&size for dates are always 'd4')
  40. !temp xx_dtime,,m4,00.00               a time field called xx-time without a
  41.                                        heading & displayed/printed as 'hh.mm'
  42.                                        (type&size for times are always 'm4')
  43.  
  44. !temp xx_dollars,Credit,m4,####.##     a money field (must be m4 or m8) with 
  45.                                        heading Credit' and displayed with 2
  46.                                        decimals up to "9999.99"
  47.  
  48. !temp xx_onorder,On Order,i1,##        a 1 byte integer showing 2 digits
  49.                                        and can hold a number from 0 to 255
  50.  
  51. !temp xx_stock,In Stock,i2,####        a 2 byte integer showing four digits
  52.                                        and can hold a number = +- 32767
  53.  
  54. !temp xx_sold,Total Sold,i4,&&&&&&#### a four byte integer called xx-sold
  55.                                        displaying up to 10 digits and a 
  56.                                        number aprox +- 1.4 billion. NOTE
  57.                                        this format blank fills any  leading
  58.                                        zeros except for last 4 digits.
  59.  
  60. !temp xx_margin,Margin,r8,&&&###.####  a real number called xx_margin with
  61.                                        heading of 'Margin' and displaying 
  62.                                        four  decimals Can coantain a number
  63.                                        of approx +- 2.4 billion.
  64.  
  65. !temp xx_window,,i2[20],,100-2000      an array of 20, 2 byte integers with
  66.                                        no heading or format but if used in
  67.                                        sage program would limit input values
  68.                                        for this field to numbers between
  69.                                        100 and 2000.
  70.  
  71.  
  72.  
  73.  
  74.       The describe program follows the same idea by asking you to enter 
  75.     values for each field in the file in teh same manner as the above 
  76.     examples for a program, except you will leave out the '!temp' part.
  77.     The only trick to remember (cuz you dont have a proper manual) is the
  78.         1) all key fields must declared first and in the order that you
  79.            want the index to be properly sorted
  80.         2) You must hit reurn the 'filed-name' entry point after the last
  81.            key field to indicate to describe that you atre switching to 
  82.            the data field section of the record and the same after the last
  83.            data field to indicate all fields are entered and you want to
  84.            get to the command menu for further operations on your data or
  85.            to save and then exit
  86.  
  87.      The best way to see this hamlessly is to open a newcli or ashell,
  88.      whatever and (with the path of these commands added to your list)
  89.      type in "describe". You'll see the usage message. Then try "describe
  90.      sxx.d". when it comes up read the message and notice the "Key Fields"
  91.      line. Enter a return and then notice "Data Fields". Enter a return
  92.      and you should see the command line. Type for exit. Next type in
  93.      'describe +l /demo/diary' to see a list of the 'diary' file
  94.      organization. ('describe >PRT: +l /demo/diary.d' to output on your
  95.      printer) . Next try 'describe /demo/diary.d' to bring up the program.
  96.      When used on an existing descriptor it will go straight to the menu
  97.      edit mode. Try the 'list', then the 'abandon' options.
  98.  
  99.  
  100.      Once you have a descriptor file you and describe like, you need to 
  101.      create the actual data and key (index) files by using the 'newkf'
  102.      utility. So type in "newkf <your-filename>" and it will come back with
  103.      "'your-filename' created". Now try some of the other utilites on
  104.      your file to see what they return such as the following:
  105.  
  106.      kfcheck <your-filename> - checks the index for corruption
  107.      kfdet   <your-filename> - tells you the keylenght amd record length
  108.                                of your file.
  109.      kfri    <your-filename> - rebuilds the index of your file
  110.  
  111.  
  112.   Other program syntax
  113.   ---------------------
  114.  
  115.      describe filename.d              (descriptor file editor)
  116.  
  117.      reformat old-filename new-filename  (assumes new-filename is created
  118.                                         but empty
  119.  
  120.  
  121.      cf filename[.f]                  (produces a pcode file filename.g)
  122.      cr filename[.r]                  (produces a pcode file filename.q)
  123.  
  124.      sg filename[.d]                  (produces a source file filename.f)
  125.      rg filename[.d]                  (produces a source file filename.r)
  126.  
  127.      sage filename.g    [arg1 arg2]   ( run a sage program)
  128.  
  129.      sagerep filename.q [<printer> arg1 arg2] .....
  130.  
  131.      menu menuname.m                  (display a textfile called menuname.m
  132.                                        and execute commands from it.
  133.                                        NOTE preceed all comnmands with a '-'
  134.                                        as in the examples without
  135.                                        redirectiion (see BUGS))
  136.  
  137.  
  138.  
  139.     Ok now we have a database file and teh simplest way to create a 
  140.     program to maintain this file is to type in "sg <your-filename>".
  141.     The 'sg' program will create the source code file for an editor of 
  142.     your-filename and then complie it using 'cf'. Now you typer in 'sage
  143.     your-filename" to run the editor program. Similarily the 'rg' program
  144.     will create a list program for 'your-filename' and you may run it by 
  145.     typing in "sagerep your-filename".  While 'sg' and especially 'rg'
  146.     do not create elegant programs they are a very speedy way of getting
  147.     all the field names (and their headings in the case of rg) into a text
  148.     file that you can edit and recomplie as much as your ol' head desires.
  149.  
  150.  
  151.     Note if your file contains so many fields that 'sg' can not figure out
  152.       how to fit them on the vaailbale screen you can use the '-a' option to
  153.     interactively design what you will display and enter for this program.
  154.     This option is also available for 'rg'.
  155.     
  156.     Whether you build the program via 'sg/rg' or from scratch with an editor
  157.     'Decsion Plus' (TM) allows you to overwite the '.d' descriptor heading
  158.     and/or format within any particular program.
  159.  
  160.  
  161.     REVIEW the examples in '/DEMOS', they will help but if you find this
  162.     language as much fun and as useful as I, then a manual is a must for 
  163.     building greater things. It is not practical to reproduce all of here.
  164.  
  165.  
  166.  
  167.  
  168.  
  169. ------------------------ tear here ----------------------------------
  170.  
  171.  
  172.  
  173.  
  174. Sage/Sagerep Syntax Synopsis:  ( statements starting with '!' appear in the
  175.                                  same order as they should in a program -
  176.                                  not absolutely necessary but good style, 
  177.                                  and all temps declared within a program 
  178.                                  are global ie accessable even from a i
  179.                                  subroutine)
  180.  
  181. !file   logical-filename/number [path/]name (driving file in sagerep)
  182. !cfile  logical-filename/number [path/]name (closed file after startup)
  183. !xfile  logical-filename/number [path/]name [key=field_name]
  184.                            cross_reference file or "joined file"
  185.  
  186. !record file-name/number [path/]name (alternate record layout of file )
  187.  
  188. !temp   name,[title],type&size,[format],[limits]
  189.  
  190. !init   expression (occurs before first record read (sagerep only))
  191. !title  expression (occurs after  first record read (sagerep only))
  192.  
  193. !scroll x,y   starting scroll array area an number of lines (sage only)
  194.  
  195. !depth  n : depth of page in lines (sagerep)
  196. !width  n : width of page in columns (sagerep)
  197. !gap    n :
  198.  
  199. !constant name,[heading],type&size[,format]='value'
  200.  
  201. !input 'string-prompt',field-name (sagerep only)
  202.  
  203. !startrec key=field-list
  204. !startrec key=field-list
  205.  
  206. !select  if (field-name    <conditional expression>....)
  207. !exclude if (if field-name <conditional expression> .....)
  208.  
  209. !on starting field-name (in driving file, sagerep only)<expression> ......
  210. !on ending   field-name (in driving file, sagerep only)<expression> ......
  211.  
  212. !footnote <statement [: statement] ...... >(sagerep only)
  213. !final    <statement [:statements] ......> (sagerep only)
  214.  
  215. . ... Any line starting with a period is considered a comment line
  216. . Any regular statement ending with a backslash ('\') is considered 
  217. .  to be continued on the next line.
  218.  
  219. !display (message-string ) sagerep only
  220.  
  221.  Logic Flow
  222.    if ..then ... [else ....]   (same line or continued line with a '\')
  223.    gosub [label], 
  224.    goto  [label]
  225.  
  226.  Keyed File opearations 
  227.    check    logical-file [nrs=label] (nrs - no record currently selected )
  228.    close    logical-file 
  229.    delete   logical-file [nrs=label nrs=label]
  230.    insert   logical-file [re =label ( re - record already exists on insert)
  231.    next     logical-file [nsr=label riu=label] (riu-record in use(locked))
  232.    open     logical-file 
  233.    prev     logical-file 
  234.    preserve logical-file (preserve current record data on clear)
  235.    rewind   logical-file [nrs=label]
  236.    trynext  logical-file [nrs=label] 
  237.    readkey  logical-file [nsr=label riu=label] 
  238.    testkey  logical-file [nsr=label] (nsr-no such key found in file)
  239.    write    logical-file [nrs=label] (nrs-no current rec selected for update)
  240.  
  241.  Common 
  242.    exit  - exits program cleanly.
  243.    abort - exits program immediately.
  244.    end   - indicates the end of a major logic section or option
  245.    sleep - cause program to sleep or suspend for n seconds. 
  246.  
  247.  Screen only
  248.  
  249.    check logical-file :do we currently have record in hand from file 'file'? 
  250.    display  field-list
  251.    highlite field-list
  252.    clear    field-list
  253.    input    field-list [eoi=label ni=label] (eoi= end of input char &
  254.                                    ni= no input)
  255.    message "string expression" -displays message at bottom of screen)
  256.    error   "string expression" - displays error message at bottom of screen
  257.    scroll n                    - move to position 'n' in array
  258.    prompt  "string expression" -displays prompt at bottom of screen and
  259.              waits for 'y' or 'n' input
  260.  
  261.  Report Only
  262.  
  263.     print field-list or quoted string
  264.     keep n lines               - do 'top of form' an "depth-n" lines 
  265.  
  266.  Arithmetic
  267.  
  268.     +(add), -(subtract), /(divide), *(mulitply), %(modulo)
  269.  
  270.  Comparitive
  271.      <, >, =, <>, <=, >=
  272.  
  273. ------------------------- the end -----------------------------------
  274.