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

  1. ;dBRIEF Dialect (dBASE IV 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 BEGI END SCAN ENDS IF ELSE ENDI FUNC PROC RETU DO CASE OTHE ENDC TEXT ")
  9.     )
  10. )
  11. (macro _indenting_conditionals
  12.     (
  13.         (return "BEGI IF   SCAN  DO C  DO W ")
  14.     )
  15. )
  16. (macro _reseting_conditionals
  17.     (
  18.         (return "ELSE ")
  19.     )
  20. )
  21. (macro _outdenting_conditionals
  22.     (
  23.         (return "END ENDS ENDD ENDC ENDI")
  24.     )
  25. )
  26. (macro _backdenting_conditionals
  27.     (
  28.         (returns "ENDD END ENDS ELSE ENDI CASE OTHE ENDC ")
  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.             "BEGI"
  44.                 (return "END TRANSACTION")
  45.             "DO W"
  46.                 (return "ENDDO")
  47.             "DO C"
  48.                 (return "ENDCASE")
  49.             "SCAN"
  50.                 (return "ENDSCAN")
  51.             NULL
  52.                 (return "")
  53.         )
  54.     )
  55. )
  56. (macro _complete_cond_table
  57.     (
  58.         (return "IF~PR~FU~BE~DO~SC~")
  59.     )
  60. )
  61. (macro _adjust_indent_level
  62.     (
  63.         (int                adj_indent_column
  64.                             adj_previous_line
  65.         )
  66.         (string            eval_string
  67.         )
  68.         (get_parm 0 eval_string)
  69.         (get_parm 1 adj_indent_column)
  70.         (switch (substr eval_string 1 4)
  71.             "BEGI"    NULL
  72.             "SCAN"    NULL
  73.             "DO W"
  74.                 (+= adj_indent_column dbr_indent_level)
  75.             "RETU"
  76.                 (
  77.                     (-= adj_indent_column dbr_indent_level)
  78.                     (= adj_previous_line (* dbr_indent_level -1))
  79.                 )
  80.             "DO C"
  81.                 (+= adj_indent_column (* dbr_indent_level dbr_indent_case))
  82.             "OTHE"
  83.                 (= adj_previous_line (* dbr_indent_level -1))
  84.             "ENDC"
  85.                 (
  86.                     (-= adj_indent_column (* dbr_indent_level dbr_indent_case))
  87.                     (= adj_previous_line (* dbr_indent_level (* dbr_indent_case -1)))
  88.                 )
  89.         )
  90.         (move_abs 0 adj_indent_column)
  91.         (return adj_previous_line)
  92.     )
  93. )
  94. ;dBASE IV Reindenting Macros
  95. (macro _indent_shift
  96.     (
  97.         (string            token
  98.                             orig_line
  99.         )
  100.         (int                dbr_insert_col
  101.         )
  102.         (get_parm 0 token)
  103.         (get_parm 1 orig_line)
  104.         (get_parm 2 dbr_insert_col)
  105.         (switch token
  106.             "DO"
  107.                 (
  108.                     (if (search_string "DO[ \t]+WHIL" orig_line NULL 1 0)
  109.                         (+= curr_indent_col dbr_indent_level)
  110.                     )
  111.                     (if (search_string "DO[ \t]+CASE" orig_line NULL 1 0)
  112.                         (+= curr_indent_col (* dbr_indent_level dbr_indent_case))
  113.                     )
  114.                 )
  115.             "FUNC" NULL
  116.             "PROC"
  117.                 (if dbr_proc_indent
  118.                     (
  119.                         (= dbr_return_flag 1)
  120.                         (+= curr_indent_col dbr_indent_level)
  121.                     )
  122.                 ;else
  123.                     (= dbr_return_flag 0)
  124.                 )
  125.             "BEGI"    NULL
  126.             "SCAN"    NULL
  127.             "IF"
  128.                 (+= curr_indent_col dbr_indent_level)
  129.             "ENDC"
  130.                 (= dbr_insert_col (-= curr_indent_col (* dbr_indent_level dbr_indent_case)))
  131.             "END"        NULL
  132.             "ENDI"    NULL
  133.             "ENDS"    NULL
  134.             "ENDD"
  135.                 (= dbr_insert_col (-= curr_indent_col dbr_indent_level))
  136.             "RETU"
  137.                 (if (&& (== dbr_return_flag 1)(== (substr (upper orig_line) 1 6) "RETURN"))
  138.                     (
  139.                         (= dbr_return_flag 0)
  140.                         (= dbr_insert_col (-= curr_indent_col dbr_indent_level))
  141.                     )
  142.                 )
  143.             "CASE" NULL
  144.             "ELSE" NULL
  145.             "OTHE"
  146.                 (-= dbr_insert_col dbr_indent_level)
  147.             "TEXT"
  148.                 (if (== (inq_called) "rein")
  149.                     (_find_matching_endtext)
  150.                 )
  151.         )
  152.         (returns dbr_insert_col)
  153.     )
  154. )
  155. ;dBASE IV Template Abbreviations
  156. (macro _command_table
  157.     (
  158.         (int                table_number
  159.         )
  160.         (get_parm 0 table_number)
  161.         (switch table_number
  162.             1
  163.                 (return "~ACM ACTIVATE MENU ~ACP ACTIVATE POPUP ~ACS ACTIVATE SCREEN ~ACW ACTIVATE WINDOW ~AFA APPEND FROM ARRAY ~APF APPEND FROM ~APM APPEND MEMO ~APB APPEND BLANK ~")
  164.             2
  165.                 (return "~CAL CALCULATE ~CLA CLEAR ALL ~CLF CLEAR FIELDS ~CLG CLEAR GETS ~CLM CLEAR MEMORY ~CLP CLEAR PROGRAM ~CLT CLEAR TYPEAHEAD ~CLW CLEAR WINDOWS ~CLD CLOSE DATABASE ~")
  166.             3
  167.                 (return "~CLI CLOSE INDEX ~COF COPY FILE ~COM COPY MEMO ~COS COPY STRUCTURE ~COT COPY TO ~CTA COPY TO ARRAY ~CRL CREATE LABEL ~CRR CREATE REPORT ~CRV CREATE VIEW ~")
  168.             4
  169.                 (return "~DAM DEACTIVATE MENU ~DEP DEACTIVATE POPUP ~DEW DEACTIVATE WINDOW ~DEB DEFINE BAR ~DEL DELETE ~DEM DEFINE MENU ~DBX DEFINE BOX FROM ^ux,^uy TO ^lx,^ly~")
  170.             5
  171.                 (return "~DEF DELETE FILE ~DIR DIRECTORY ~DIF DISPLAY FILES ~DIM DISPLAY MEMORY ~DIS DISPLAY STATUS TO ~DOC DO CASE~DOW DO WHILE .T.~ENC ENDCASE~EJP EJECT PAGE ~")
  172.             6
  173.                 (return "~GAT GATHER FROM MEMVER ~HIM HIDE MENU ~HIP HIDE POPUP ~HIW HIDE WINDOW ~LBL LABEL FORM ~LIF LIST FILES ~LIM LIST MEMORY ~LIS LIST STATUS ~LOF LOCATE FOR ~")
  174.             7
  175.                 (return "~MOC MODIFY COMMAND ~MOL MODIFY LABEL ~MOM MODIFY MEMO ~MOR MODIFY REPORT ~MVW MOVE WINDOW ~ONE ON ERROR ~ONS ON ESCAPE ~ONR ON READERROR ~OTH OTHERWISE~")
  176.             8
  177.                 (return "~OPA ON SELECTION PAD ~OPO ON SELECTION POPUP ~PAR PARAMETERS ~PRA PRIVATE ALL ~REC RECALL ~REL RELEASE ~SCA SCATTER ~SHM SHOW MENU ~SHP SHOW POPUP ~SHW SHOW WINDOW ~")
  178.             9
  179.                 (return "~RET RETURN ~REP REPLACE ~RFM REPORT FORM ~RIN REINDEX ~RFR RESTORE FROM ~RSM RESTORE MACROS FROM ~RSC RESTORE SCREEN ~RWI RESTORE WINDOW ~SVM SAVE MACROS TO ~")
  180.             10
  181.                 (return "~SSC SAVE SCREEN ~SVT SAVE TO ~SVW SAVE WINDOW ~SUS SUSPEND ~TTL TOTAL TO ~UPD UPDATE ON ~BEG BEGIN TRANSACTION~")
  182.             NULL
  183.                 (return 10)
  184.         )
  185.     )
  186. )
  187. (macro _function_table
  188.     (
  189.         (int                table_number
  190.         )
  191.         (get_parm 0 table_number)
  192.         (switch table_number
  193.             1
  194.                 (return "~ABS ABS(expN)~ACO ACOS(expN)~ALI ALIAS(expN)~ALT ALLTRIM(expC)~ASC ASC(expC)~ASI ASIN(expN)~ATA ATAN(expN)~ATC ATC(expC1,expC2,expN)~ACL ATCLINE(expC1,expC2)~")
  195.             2
  196.                 (return "~ATL ATLINE(expC1,expC2)~ATN ATN2(expN1,expN2)~BAR BAR()~BET BETWEEN(expr1,expr2,expr3)~BOF BOF(alias)~CAP CAPSLOCK(expL)~CDO CDOW(expD)~CEI CEILING(expN)~")
  197.             3
  198.                 (return "~CHR CHR(expN)~CHS CHRSAW(expN)~CHT CHRTRAN(expC1,expC2,expC3)~CMO CMONTH(expD)~COL COL()~COS COS(expN)~CTO CTOD(expC)~CUR CURDIR(expC)~DAT DATE()~")
  199.             4
  200.                 (return "~DAY DAY(expD)~DBF DBF(alias)~DEL DELETED(alias)~DIF DIFFERENCE(expC1,expC2)~DIS DISKSPACE()~DMY DMY(expD)~DOW DOW(expD)~DTC DTOC(expD)~DTR DTOR(expN)~")
  201.             5
  202.                 (return "~DTS DTOS(expD)~EMP EMPTY(expr)~FCL FCLOSE(expN)~FCO FCOUNT(alias)~FCR FCREATE(expC,expN)~FEO FOEF(expN)~FER FERROR()~FFL FFLUSH(expN)~FGE FGETS(expN1,expN2)~")
  203.             6
  204.                 (return "~COS COS(expN)~CTO CTOD(expC)~CUR CURDIR(expC)~DAT DATE()~FLT FILTER(alias)~FKL FKLABEL(expN)~FLO FLOOR(expN)~FOP FOPEN(expC,expN)~FOU FOUND(alias)~")
  205.             7
  206.                 (return "~FPU FPUTS(expN1,expC,expN2)~FRE FREAD(expN1,expN2)~FSE FSEEK(expN1,expN2,expN3)~FSI FSIZE(fields,alias)~FUL FULLPATH(file,1)~FWR FWRITE(expN1,expC,expN2)~")
  207.             8
  208.                 (return "~GEN GETENV(expC)~GEF GETFILE(expC1,expC2)~GOM GOMONTH(expD,expN)~HEA HEADER(alias)~IIF IIF(expL,expr1,expr2)~INK INKEY(expN,expC)~INL INLIST(expr1,expr2,expr3)~")
  209.             9
  210.                 (return "~INS INSMODE(expL)~INT INT(expN)~ISA ISALPHA(expC)~ISC ISCOLOR()~ISD ISDIGIT(expC)~ISL ISLOWER(expC)~ISU ISUPPER(expC)~KEY KEY(expN,alias)~LAS LASTKEY()~")
  211.             10
  212.                 (return "~LEF LEFT(expC,expN)~LEN LEN(expC)~LIK LIKE(expC1,expC2)~LIN LINENO()~LOG LOG(expN)~LOW LOWER(expC)~LTR LTRIM(expC)~LUP LUPDATE(alias)~MAX MAX(expr1,expr2,expr3)~")
  213.             11
  214.                 (return "~MCO MCOL(expC)~MDO MDOWN()~MDY MDY(expD)~MML MEMLINES(memofields)~MEM MEMORY()~MEN MENU()~MES MESSAGE(1)~MIN MIN(expr1,expr2,expr3)~MLI MLINE(memoield,expN)~")
  215.             12
  216.                 (return "~MOD MOD(expN1,expN2)~MON MONTH(expD)~MRO MROW(expC)~NDX NDX(expN,alias)~NUM NUMLOCK(expL)~OCC OCCURS(expC1,expC2)~ORD ORDER(alias)~PAD PAD()~PDC PADC(expr,expN,expC)~")
  217.             13
  218.                 (return "~PDL PADL(expr,expN,expC)~PDR PADR(expr,expN,expC)~PRM PARAMETERS()~PAY PAYMENT(expN1,expN2,expN3)~PCO PCOL()~POP POPUP()~PRI PRINTSTATUS()~PRG PROGRAM(expN)~")
  219.             14
  220.                 (return "~PRM PROMPT()~PRP PROPER(expC)~PRW PROW()~PUT PUTFILE(expC1,expC2,expC3)~RAN RAND(expN)~RAT RAT(expC1,expC2,expN)~RTL RATLINE(expC1,expC2)~REA READKEY()~")
  221.             15
  222.                 (return "~RCO RECOUNT(alias)~RNO RECNO(alias)~RSI RECSIZE(alias)~REL RELATION(expN,alias)~REP REPLICATE(expC,expN)~RIG RIGHT(expC,expN)~ROU ROUND(expN1,expN2)~ROW ROW()~")
  223.             16
  224.                 (return "~RTO RTOD(expN)~RTR RTRIM(expC)~SCH SCHEME(expN1,expN2)~SCO SCOLS()~SEC SECONDS()~SEE SEEK(expr,alias)~SEL SELECT()~STT SET(expC,1)~SIG SIGN(expN)~SIN SIN(expN)~")
  225.             17
  226.                 (return "~SOU SOUNDEX(expC)~SPA SPACE(expN)~SQR SQRT(expN)~SRO SROWS()~STR STR(expN1,expN2,expN3)~STT STRTRAN(expC1,expC2,expC3,expN1,expN2)~STU STUFF(expC1,expN1,expN2,expC2)~")
  227.             18
  228.                 (return "~SUB SUBSTR(expC,expN1,expN2)~TAN TAN(expN)~TAR TARGET(expN,expr)~TIM TIME(expN)~TRA TRANSFORM(expr,expC)~TRI TRIM(expC)~TYP TYPE(expC)~UPD UPDATED()~UPP UPPER(expC)~")
  229.             19
  230.                 (return "~USD USED(alias)~VAL VAL(expC)~VAR VARREAD()~VER VERSION()~WCO WCOLS(expC)~WEX WEXIST(expC)~WLC WLCOL(expC)~WLR WLROW(expC)~WON WONTOP(expC)~WOU WOUTPUT(expC)~")
  231.             20
  232.                 (return "~WRO WROWS(expC)~WVI WVISIBLE(expC)~YEA YEAR(expD)~")
  233.             NULL
  234.                 (return 20)
  235.         )
  236.     )
  237. )
  238. (macro _set_table
  239.     (
  240.         (int                table_number
  241.         )
  242.         (get_parm 0 table_number)
  243.         (switch table_number
  244.             1
  245.                 (return "~SALT SET ALTERNATE ~SBEL SET BELL ~SBLO SET BLOCKSIZE ~SBOR SET BORDER TO ~SCAR SET CARRY TO ~SCAT SET CATALOG TO ~SCEN SET CENTURY ~SCOL SET COLOR TO ~")
  246.             2
  247.                 (return "~SCUR SET CURRENCY TO ~SCON SET CONSOLE ~SDEB SET DEBUG ~SDEC SET DECIMALS TO ~SDEF SET DEFAULT TO ~SDEL SET DELETED ~SDEV SET DEVICE TO ~SDIS SET DISPLAY TO ~")
  248.             3
  249.                 (return "~SENC SET ENCRYPTION ~SESC SET ESCAPE ~SEXC SET EXCLUSIVE ~SFIE SET FIELDS TO ~SFIL SET FILTER TO ~SFOR SET FORMAT TO ~SFUL SET FULLPATH ~SFUN SET FUNCTION ~")
  250.             4
  251.                 (return "~SHEA SET HEADING ~SHIS SET HISTORY ~SHOU SET HOURS TO ~SIND SET INDEX TO ~SINT SET INTENSITY ~SLOC SET LOCK ON ~SMAR SET MARGIN TO ~SMEM SET MEMOWIDTH TO ~")
  252.             5
  253.                 (return "~SMES SET MESSAGE TO ~SNEA SET NEAR ~SODO SET ODOMETER TO ~SORD SET ORDER TO ~SPAT SET PATH TO ~SPRI SET PRINTER ~SPRN SET PRINTER TO ~SPRO SET PROCEDURE TO ~")
  254.             6
  255.                 (return "~SREL SET RELATION TO ~SSAF SET SAFETY ~SSCO SET SCOREBOARD ~SSPA SET SPACE ~SSTA SET STATUS ~STYP SET TYPEAHEAD TO ~SUNI SET UNIQUE ~SVIE SET VIEW TO ~")
  256.             7
  257.                 (return "~SWIN SET WINDOW OF MEMO TO ~")
  258.             NULL
  259.                 (return 7)
  260.         )
  261.     )
  262. )
  263. ;dBASE IV Commenting Macros
  264. (macro _uncomment_conditionals
  265.     (
  266.         (int                display_messages
  267.         )
  268.         (get_parm 0 display_messages)
  269.         (if display_messages
  270.             (message "Uncommenting conditional statements...")
  271.         )
  272.         (save_position)
  273.         (translate "&& if*>" "" 1 1 0)
  274.         (translate "&& do w*>" "" 1 1 0)
  275.         (translate "&& do c*>" "" 1 1 0)
  276.         (translate "&& begi*>" "" 1 1 0)
  277.         (translate "&& scan*>" "" 1 1 0)
  278.         (restore_position)
  279.         (if display_messages
  280.             (_display_popup_message "Uncommenting complete." "" 0)
  281.         )
  282.     )
  283. )
  284. ;dBASE IV Conditional Graphics Macros
  285. (macro _insert_graphics
  286.     (
  287.         (int            dbr_insert_col
  288.                         kk
  289.         )
  290.         (string        orig_line
  291.                         token
  292.                         sql_extension
  293.                         _numbers
  294.                         _graphics
  295.         )
  296.         (get_parm 0 _numbers)
  297.         (get_parm 1 orig_line)
  298.         (get_parm 2 _graphics)
  299.         (= token (substr (upper orig_line) 1 4))
  300.         (if (= dbr_insert_col (search_string "[ \\t]" token NULL 1))
  301.             (= token (substr token 1 (-- dbr_insert_col)))
  302.         )
  303.         (= dbr_insert_col curr_indent_col)
  304.         (if (&& (strlen token) (index (_dialect_table) (+ token " ")))
  305.             (= dbr_insert_col (_indent_shift token orig_line dbr_insert_col))
  306.         )
  307.         (delete_to_eol)
  308.         (beginning_of_line)
  309.         (insert _numbers)
  310.         (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  311.         (insert orig_line)
  312.         (if (== (upper _graphics) "Y")
  313.             (
  314.                 (if (> (strlen token) 0)
  315.                     (
  316.                         (if (index "PROC~FUNC~IF~CASE~OTHE~BEGI~SCAN~" token)
  317.                             (
  318.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  319.                                 (insert "┌")
  320.                             )
  321.                         )
  322.                         (if (index "DO" token)
  323.                             (
  324.                                 (if (|| (search_string "DO[ \t]+WHIL" orig_line NULL 1 0)(search_string "DO[ \t]+CASE" orig_line NULL 1 0))
  325.                                     (
  326.                                         (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  327.                                         (insert "┌")
  328.                                     )
  329.                                 )
  330.                             )
  331.                         )
  332.                         (if (index "ELSE" token)
  333.                             (
  334.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  335.                                 (insert "├")
  336.                             )
  337.                         )
  338.                         (if (index "ENDI~ENDD~ENDC~ENDS~END" token)
  339.                             (
  340.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  341.                                 (insert "└")
  342.                             )
  343.                         )
  344.                         (if (== (substr (upper orig_line) 1 6) "RETURN")
  345.                             (
  346.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  347.                                 (insert "└")
  348.                             )
  349.                         )
  350.                     )
  351.                 )
  352.                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  353.                 (= kk (+ (strlen _numbers) dbr_insert_col))
  354.                 (while (> kk (+ (strlen _numbers) dbr_indent_level))
  355.                     (
  356.                         (-= kk dbr_indent_level)
  357.                         (move_abs 0 kk)
  358.                         (insert "│")
  359.                     )
  360.                 )
  361.             )
  362.         )
  363.         (move_rel 1 0)
  364.         (beginning_of_line)
  365.     )
  366. )
  367.