home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0040 - 0049 / ibm0040-0049 / ibm0040.tar / ibm0040 / DBRIEF.ZIP / SOURCE / DBXL.M < prev    next >
Encoding:
Text File  |  1991-03-21  |  7.9 KB  |  308 lines

  1. ;dBRIEF Dialect (dbXL/Quicksilver Support) - v3.10
  2. ;Copyright (c) 1991 - Global Technologies Corporation
  3. ;ALL RIGHTS RESERVED
  4. #include "dbrief.h"
  5. #include "common.h"
  6. (macro _dialect_table
  7.     (
  8.         (returns "DO W ENDD IF ELSE ENDI PROC FUNC RETU DO CASE OTHE ENDC TEXT FOR NEXT ")
  9.     )
  10. )
  11. (macro _indenting_conditionals
  12.     (
  13.         (return "FOR  IF     DO W DO C ")
  14.     )
  15. )
  16. (macro _reseting_conditionals
  17.     (
  18.         (return "ELSE ")
  19.     )
  20. )
  21. (macro _outdenting_conditionals
  22.     (
  23.         (return "NEXT ENDD ENDC ENDI ")
  24.     )
  25. )
  26. (macro _backdenting_conditionals
  27.     (
  28.         (returns "ENDI ELSE ENDD ENDC OTHE CASE NEXT ")
  29.     )
  30. )
  31. (macro _matching_conditional
  32.     (
  33.         (string            _match_token
  34.         )
  35.         (get_parm 0 _match_token)
  36.         (switch _match_token
  37.             "IF "
  38.                 (return "ENDIF")
  39.             "PROC"
  40.                 (return "RETURN")
  41.             "FUNC"
  42.                 (return dbr_udf_return)
  43.             "DO W"
  44.                 (return "ENDDO")
  45.             "DO C"
  46.                 (return "ENDCASE")
  47.             "FOR "
  48.                 (return "NEXT")
  49.             NULL
  50.                 (return "")
  51.         )
  52.     )
  53. )
  54. (macro _complete_cond_table
  55.     (
  56.         (return "IF~PR~FU~DO~FO~")
  57.     )
  58. )
  59. (macro _adjust_indent_level
  60.     (
  61.         (int                adj_indent_column
  62.                             adj_previous_line
  63.         )
  64.         (string            eval_string
  65.         )
  66.         (get_parm 0 eval_string)
  67.         (get_parm 1 adj_indent_column)
  68.         (switch (substr eval_string 1 4)
  69.             "DO W"
  70.                 (+= adj_indent_column dbr_indent_level)
  71.             "RETU"
  72.                 (
  73.                     (-= adj_indent_column dbr_indent_level)
  74.                     (= adj_previous_line (* dbr_indent_level -1))
  75.                 )
  76.             "DO C"
  77.                 (+= adj_indent_column (* dbr_indent_level dbr_indent_case))
  78.             "OTHE"
  79.                 (= adj_previous_line (* dbr_indent_level -1))
  80.             "ENDC"
  81.                 (
  82.                     (-= adj_indent_column (* dbr_indent_level dbr_indent_case))
  83.                     (= adj_previous_line (* dbr_indent_level (* dbr_indent_case -1)))
  84.                 )
  85.         )
  86.         (move_abs 0 adj_indent_column)
  87.         (return adj_previous_line)
  88.     )
  89. )
  90. ;dbXL/Quicksilver Reindenting Macros
  91. (macro _indent_shift
  92.     (
  93.         (string            token
  94.                             orig_line
  95.         )
  96.         (int                dbr_insert_col
  97.         )
  98.         (get_parm 0 token)
  99.         (get_parm 1 orig_line)
  100.         (get_parm 2 dbr_insert_col)
  101.         (switch token
  102.             "DO"
  103.                 (
  104.                     (if (search_string "DO[ \t]+WHIL" orig_line NULL 1 0)
  105.                         (+= curr_indent_col dbr_indent_level)
  106.                     )
  107.                     (if (search_string "DO[ \t]+CASE" orig_line NULL 1 0)
  108.                         (+= curr_indent_col (* dbr_indent_level dbr_indent_case))
  109.                     )
  110.                 )
  111.             "PROC"    NULL
  112.             "FUNC"
  113.                 (if dbr_proc_indent
  114.                     (
  115.                         (= dbr_return_flag 1)
  116.                         (+= curr_indent_col dbr_indent_level)
  117.                     )
  118.                 ;else
  119.                     (= dbr_return_flag 0)
  120.                 )
  121.             "FOR"        NULL
  122.             "IF"
  123.                 (+= curr_indent_col dbr_indent_level)
  124.             "ENDC"
  125.                 (= dbr_insert_col (-= curr_indent_col (* dbr_indent_level dbr_indent_case)))
  126.             "NEXT"    NULL
  127.             "ENDI"    NULL
  128.             "ENDD"
  129.                 (= dbr_insert_col (-= curr_indent_col dbr_indent_level))
  130.             "RETU"
  131.                 (if (&& (== dbr_return_flag 1)(== (substr (upper orig_line) 1 6) "RETURN"))
  132.                     (
  133.                         (= dbr_return_flag 0)
  134.                         (= dbr_insert_col (-= curr_indent_col dbr_indent_level))
  135.                     )
  136.                 )
  137.             "CASE" NULL
  138.             "ELSE" NULL
  139.             "OTHE"
  140.                 (-= dbr_insert_col dbr_indent_level)
  141.             "TEXT"
  142.                 (if (== (inq_called) "rein")
  143.                     (_find_matching_endtext)
  144.                 )
  145.         )
  146.         (returns dbr_insert_col)
  147.     )
  148. )
  149. ;dbXL/Quicksilver Template Abbreviations
  150. (macro _command_table
  151.     (
  152.         (int                table_number
  153.         )
  154.         (get_parm 0 table_number)
  155.         (switch table_number
  156.             1
  157.                 (return "~APP APPEND ~ASS ASSIST ~AVE AVERAGE ~BRO BROWSE ~CCA CCALL ~CHA CHANGE ~CLE CLEAR ~CLA CLEAR AUTOMEM ~COU COUNT ~CRL CREATE ~CRE CREATE LABEL ~CRR CREATE REPORT ~")
  158.             2
  159.                 (return "~DEC DECLARE ~DIM DIMENSION ~DIS DISPLAY ~DSM DISPLAY MEMORY ~DSS DISPLAY STATUS ~DST DISPLAY STRUCTURE ~DOC DO CASE~DOS DOSINT ~DOW DO WHILE .T.~~DNS DOWNSCROLL ")
  160.             3
  161.                 (return "~EDI EDIT ~ENC ENDCASE~EXP EXPORT ~FOR FOR...NEXT ~GRA GRAPH FORM  ~HEL HELP ~IND INDEX  ~INS INSERT ~LIS LIST STATUS ~MOD MODIFY ~ONE ON EVENT ~ONK ON KEY ~")
  162.             4
  163.                 (return "~OTH OTHERWISE~OUT OUT ~REL RELEASE ~REP REPLACE ~RES RESTORE GRAPH ~SKI SKIP ~SLE SLEEP ~STO STORE ~SUM SUM ~UPS UP SCROLL ~USE USE ~WAB WABANDON ~WAC WACTIVE  ~")
  164.             5
  165.                 (return "~WCL WCLOSE ~WCO WCOPY ~WDI WDISPLAY ~WMO WMOVE ~WRL WRELEASE ~WRS WRESTORE  ~WSA WSAVE ~WSE WSELECT ~WSFR WSET FRAME ~WSSI WSET SIZE ~WSTI WSET TILTLE ~WSWI WSET WINDOW ~")
  166.             6
  167.                 (return "~WSWF WSET WINFILE  ~WUS WUSE ~")
  168.             NULL
  169.                 (return 6)
  170.         )
  171.     )
  172. )
  173. (macro _function_table
  174.     (
  175.         (int                table_number
  176.         )
  177.         (get_parm 0 table_number)
  178.         (switch table_number
  179.             1
  180.                 (return "~BIT BITSET()~CEI CEIL()~CEN CENTER()~DES DESEND()~DTO DTOS()~EMP EMPTY()~ERR ERROR()~FCO FCOL()~FLO FLOOR()~FRO FROW()~HTO HTOI()~ITO ITOH()~LOG LOG 10()~")
  181.             2
  182.                 (return "~MEM MEMORY()~PRI PRINTER()~PRO PROPER()~SEL SELECT()~SIN SINKEY()~SOU SOUNDEX()~WAC WACTIVE()~WSE WSELECT ()")
  183.             NULL
  184.                 (return 2)
  185.         )
  186.     )
  187. )
  188. (macro _set_table
  189.     (
  190.         (int                table_number
  191.         )
  192.         (get_parm 0 table_number)
  193.         (switch table_number
  194.             1
  195.                 (return "~SCAR SET CARRY ~SCOL SET COLOR TO ~SCUR SET CURSOR MOVE ~SDBF SET DBF TO ~SDEB SET DEBUG ~SDEV SET DEVICE TO ~SECH SET ECHO ~SEDI SET EDITOR TO ~SEVE SET EVENT TO ~")
  196.             2
  197.                 (return "~SFEE SET FEED ~SFUN SET FUNCTION ~SHEA SET HEADING ~SHEL SET HELP ~SIND SET INDEX TO ~SMEN SET MENU ~SNDX SET NDX TO ~SPAT SET PATH TO ~SPRI SET PRINTER TO ~")
  198.             3
  199.                 (return "~SREL SET RELATION TO ~SRET SET RETRACE ~SSAF SET SAFETY ~SSTE SET STEP ~STAL SET TALK ~STIM SET TIME TO ~SUSE SET USER HELP TO ~")
  200.             NULL
  201.                 (return 3)
  202.         )
  203.     )
  204. )
  205. ;dbXL/Quicksilver Commenting Macros
  206. (macro _uncomment_conditionals
  207.     (
  208.         (int                display_messages
  209.         )
  210.         (get_parm 0 display_messages)
  211.         (if display_messages
  212.             (message "Uncommenting conditional statements...")
  213.         )
  214.         (save_position)
  215.         (translate "&& for*>" "" 1 1 0)
  216.         (translate "&& if*>" "" 1 1 0)
  217.         (translate "&& do w*>" "" 1 1 0)
  218.         (translate "&& do c*>" "" 1 1 0)
  219.         (restore_position)
  220.         (if display_messages
  221.             (_display_popup_message "Uncommenting complete." "" 0)
  222.         )
  223.     )
  224. )
  225. ;dbXL/Quicksilver Conditional Graphics Macros
  226. (macro _insert_graphics
  227.     (
  228.         (int            dbr_insert_col
  229.                         kk
  230.         )
  231.         (string        orig_line
  232.                         token
  233.                         sql_extension
  234.                         _numbers
  235.                         _graphics
  236.         )
  237.         (get_parm 0 _numbers)
  238.         (get_parm 1 orig_line)
  239.         (get_parm 2 _graphics)
  240.         (= token (substr (upper orig_line) 1 4))
  241.         (if (= dbr_insert_col (search_string "[ \\t]" token NULL 1))
  242.             (= token (substr token 1 (-- dbr_insert_col)))
  243.         )
  244.         (= dbr_insert_col curr_indent_col)
  245.         (if (&& (strlen token) (index (_dialect_table) (+ token " ")))
  246.             (= dbr_insert_col (_indent_shift token orig_line dbr_insert_col))
  247.         )
  248.         (delete_to_eol)
  249.         (beginning_of_line)
  250.         (insert _numbers)
  251.         (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  252.         (insert orig_line)
  253.         (if (== (upper _graphics) "Y")
  254.             (
  255.                 (if (> (strlen token) 0)
  256.                     (
  257.                         (if (index "PROC~FUNC~IF~CASE~OTHE~FOR" token)
  258.                             (
  259.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  260.                                 (insert "┌")
  261.                             )
  262.                         )
  263.                         (if (index "DO" token)
  264.                             (
  265.                                 (if (|| (search_string "DO[ \t]+WHIL" orig_line NULL 1 0)(search_string "DO[ \t]+CASE" orig_line NULL 1 0))
  266.                                     (
  267.                                         (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  268.                                         (insert "┌")
  269.                                     )
  270.                                 )
  271.                             )
  272.                         )
  273.                         (if (index "ELSE" token)
  274.                             (
  275.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  276.                                 (insert "├")
  277.                             )
  278.                         )
  279.                         (if (index "ENDI~ENDD~ENDC~NEXT" token)
  280.                             (
  281.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  282.                                 (insert "└")
  283.                             )
  284.                         )
  285.                         (if (== (substr (upper orig_line) 1 6) "RETURN")
  286.                             (
  287.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  288.                                 (insert "└")
  289.                             )
  290.                         )
  291.                     )
  292.                 )
  293.                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  294.                 (= kk (+ (strlen _numbers) dbr_insert_col))
  295.                 (while (> kk (+ (strlen _numbers) dbr_indent_level))
  296.                     (
  297.                         (-= kk dbr_indent_level)
  298.                         (move_abs 0 kk)
  299.                         (insert "│")
  300.                     )
  301.                 )
  302.             )
  303.         )
  304.         (move_rel 1 0)
  305.         (beginning_of_line)
  306.     )
  307. )
  308.