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

  1. ;dBRIEF Dialect (FoxPro 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 "PRIN ENDP FOR ENDF DO W ENDD IF ELSE ENDI FUNC PROC RETU DO CASE OTHE ENDC TEXT SCAN ENDS ")
  9.     )
  10. )
  11. (macro _indenting_conditionals
  12.     (
  13.         (return "SCAN PRIN IF    DO W DO C FOR  ")
  14.     )
  15. )
  16. (macro _reseting_conditionals
  17.     (
  18.         (return "ELSE ")
  19.     )
  20. )
  21. (macro _outdenting_conditionals
  22.     (
  23.         (return "ENDS ENDP ENDF ENDD ENDC ENDI ")
  24.     )
  25. )
  26. (macro _backdenting_conditionals
  27.     (
  28.         (returns "ENDP ENDF ENDD ELSE ENDI CASE OTHE ENDC ENDS ")
  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.             "SCAN"
  48.                 (return "ENDSCAN")
  49.             "FOR "
  50.                 (return "ENDFOR")
  51.             "PRIN"
  52.                 (return "ENDPRINTJOB")
  53.             NULL
  54.                 (return "")
  55.         )
  56.     )
  57. )
  58. (macro _complete_cond_table
  59.     (
  60.         (return "IF~PR~FU~DO~SC~FO~PR~")
  61.     )
  62. )
  63. (macro _adjust_indent_level
  64.     (
  65.         (int                adj_indent_column
  66.                             adj_previous_line
  67.         )
  68.         (string            eval_string
  69.         )
  70.         (get_parm 0 eval_string)
  71.         (get_parm 1 adj_indent_column)
  72.         (switch (substr eval_string 1 4)
  73.             "PRIN"    NULL
  74.             "SCAN"    NULL
  75.             "DO W"
  76.                 (+= adj_indent_column dbr_indent_level)
  77.             "ENDP"    NULL
  78.             "RETU"
  79.                 (
  80.                     (-= adj_indent_column dbr_indent_level)
  81.                     (= adj_previous_line (* dbr_indent_level -1))
  82.                 )
  83.             "DO C"
  84.                 (+= adj_indent_column (* dbr_indent_level dbr_indent_case))
  85.             "OTHE"
  86.                 (= adj_previous_line (* dbr_indent_level -1))
  87.             "ENDC"
  88.                 (
  89.                     (-= adj_indent_column (* dbr_indent_level dbr_indent_case))
  90.                     (= adj_previous_line (* dbr_indent_level (* dbr_indent_case -1)))
  91.                 )
  92.         )
  93.         (move_abs 0 adj_indent_column)
  94.         (return adj_previous_line)
  95.     )
  96. )
  97. ;FoxPro Reindenting Macros
  98. (macro _indent_shift
  99.     (
  100.         (string            token
  101.                             orig_line
  102.         )
  103.         (int                dbr_insert_col
  104.         )
  105.         (get_parm 0 token)
  106.         (get_parm 1 orig_line)
  107.         (get_parm 2 dbr_insert_col)
  108.         (switch token
  109.             "DO"
  110.                 (
  111.                     (if (search_string "DO[ \t]+WHIL" orig_line NULL 1 0)
  112.                         (+= curr_indent_col dbr_indent_level)
  113.                     )
  114.                     (if (search_string "DO[ \t]+CASE" orig_line NULL 1 0)
  115.                         (+= curr_indent_col (* dbr_indent_level dbr_indent_case))
  116.                     )
  117.                 )
  118.             "FUNC" NULL
  119.             "PROC"
  120.                 (if dbr_proc_indent
  121.                     (
  122.                         (= dbr_return_flag 1)
  123.                         (+= curr_indent_col dbr_indent_level)
  124.                     )
  125.                 ;else
  126.                     (= dbr_return_flag 0)
  127.                 )
  128.             "PRIN"    NULL
  129.             "FOR"        NULL
  130.             "SCAN"    NULL
  131.             "IF"
  132.                 (+= curr_indent_col dbr_indent_level)
  133.             "ENDC"
  134.                 (= dbr_insert_col (-= curr_indent_col (* dbr_indent_level dbr_indent_case)))
  135.             "ENDI"    NULL
  136.             "ENDD"    NULL
  137.             "ENDP"    NULL
  138.             "ENDS"    NULL
  139.             "ENDF"
  140.                 (= dbr_insert_col (-= curr_indent_col dbr_indent_level))
  141.             "RETU"
  142.                 (if (&& (== dbr_return_flag 1)(== (substr (upper orig_line) 1 6) "RETURN"))
  143.                     (
  144.                         (= dbr_return_flag 0)
  145.                         (= dbr_insert_col (-= curr_indent_col dbr_indent_level))
  146.                     )
  147.                 )
  148.             "CASE"    NULL
  149.             "ELSE"    NULL
  150.             "OTHE"
  151.                 (-= dbr_insert_col dbr_indent_level)
  152.             "TEXT"
  153.                 (if (== (inq_called) "rein")
  154.                     (_find_matching_endtext)
  155.                 )
  156.         )
  157.         (returns dbr_insert_col)
  158.     )
  159. )
  160. ;FoxPro Template Abbreviations
  161. (macro _command_table
  162.     (
  163.         (int                table_number
  164.         )
  165.         (get_parm 0 table_number)
  166.         (switch table_number
  167.             1
  168.                 (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 ~")
  169.             2
  170.                 (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 ~")
  171.             3
  172.                 (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 ~")
  173.             4
  174.                 (return "~DAM DEACTIVATE MENU ~DEP DEACTIVATE POPUP ~DEW DEACTIVATE WINDOW ~DEB DEFINE BAR ~DEL DELETE ~DEM DEFINE MENU ~DBX DEFINE BOX FROM ~DEF DELETE FILE ~")
  175.             5
  176.                 (return "~DIR DIRECTORY ~DIF DISPLAY FILES ~DIM DISPLAY MEMORY ~DIS DISPLAY STATUS TO ~DOC DO CASE~DOW DO WHILE .T. ~ENC ENDCASE~EJP EJECT PAGE ~ENP ENDPRINTJOB~")
  177.             6
  178.                 (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 ~")
  179.             7
  180.                 (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~")
  181.             8
  182.                 (return "~OPA ON SELECTION PAD ~OPO ON SELECTION POPUP ~PAR PARAMETERS ~PRA PRIVATE ALL ~PRJ PRINTJOB~REC RECALL ~REL RELEASE ~RET RETURN ~REP REPLACE ~RFM REPORT FORM ~")
  183.             9
  184.                 (return "~RIN REINDEX ~RFR RESTORE FROM ~RSM RESTORE MACROS FROM ~RSC RESTORE SCREEN ~RWI RESTORE WINDOW ~SVM SAVE MACROS TO ~SSC SAVE SCREEN ~SVT SAVE TO ~")
  185.             10
  186.                 (return "~SVW SAVE WINDOW ~SCA SCATTER ~SHM SHOW MENU ~SHP SHOW POPUP ~SHW SHOW WINDOW ~SUS SUSPEND ~TTL TOTAL TO ~UPD UPDATE ON ~")
  187.             NULL
  188.                 (return 10)
  189.         )
  190.     )
  191. )
  192. (macro _function_table
  193.     (
  194.         (int                table_number
  195.         )
  196.         (get_parm 0 table_number)
  197.         (switch table_number
  198.             1
  199.                 (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)~")
  200.             2
  201.                 (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)~")
  202.             3
  203.                 (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()~DAY DAY(expD)~")
  204.             4
  205.                 (return "~DBF DBF(alias)~DEL DELETED(alias)~DIF DIFFERENCE(expC1,expC2)~DIS DISKSPACE()~DMY DMY(expD)~DOW DOW(expD)~DTC DTOC(expD)~DTR DTOR(expN)~DTS DTOS(expD)~EMP EMPTY(expr)~")
  206.             5
  207.                 (return "~FCL FCLOSE(expN)~FCO FCOUNT(alias)~FCR FCREATE(expC,expN)~FEO FOEF(expN)~FER FERROR()~FFL FFLUSH(expN)~FGE FGETS(expN1,expN2)~FIE FIELD(expN1,alias)~FIL FILE(expC)~")
  208.             6
  209.                 (return "~FLT FILTER(alias)~FKL FKLABEL(expN)~FLO FLOOR(expN)~FOP FOPEN(expC,expN)~FOU FOUND(alias)~FPU FPUTS(expN1,expC,expN2)~FRE FREAD(expN1,expN2)~")
  210.             7
  211.                 (return "~FSE FSEEK(expN1,expN2,expN3)~FSI FSIZE(fields,alias)~FUL FULLPATH(file,1)~FWR FWRITE(expN1,expC,expN2)~GEN GETENV(expC)~GEF GETFILE(expC1,expC2)~GOM GOMONTH(expD,expN)~")
  212.             8
  213.                 (return "~HEA HEADER(alias)~IIF IIF(expL,expr1,expr2)~INK INKEY(expN,expC)~INL INLIST(expr1,expr2,expr3)~INS INSMODE(expL)~INT INT(expN)~ISA ISALPHA(expC)~ISC ISCOLOR()~")
  214.             9
  215.                 (return "~ISD ISDIGIT(expC)~ISL ISLOWER(expC)~ISU ISUPPER(expC)~KEY KEY(expN,alias)~LAS LASTKEY()~LEF LEFT(expC,expN)~LEN LEN(expC)~LIK LIKE(expC1,expC2)~LIN LINENO()~")
  216.             10
  217.                 (return "~LOG LOG(expN)~LOG LOG10(expN)~LOW LOWER(expC)~LTR LTRIM(expC)~LUP LUPDATE(alias)~MAX MAX(expr1,expr2,expr3)~MCO MCOL(expC)~MDO MDOWN()~MDY MDY(expD)~")
  218.             11
  219.                 (return "~MML MEMLINES(memofields)~MEM MEMORY()~MEN MENU()~MES MESSAGE(1)~MIN MIN(expr1,expr2,expr3)~MLI MLINE(memoield,expN)~MOD MOD(expN1,expN2)~MON MONTH(expD)~")
  220.             12
  221.                 (return "~MRO MROW(expC)~NDX NDX(expN,alias)~NUM NUMLOCK(expL)~OCC OCCURS(expC1,expC2)~ORD ORDER(alias)~PAD PAD()~PDC PADC(expr,expN,expC)~PDL PADL(expr,expN,expC)~")
  222.             13
  223.                 (return "~PDR PADR(expr,expN,expC)~PRM PARAMETERS()~PAY PAYMENT(expN1,expN2,expN3)~PCO PCOL()~POP POPUP()~PRI PRINTSTATUS()~PRG PROGRAM(expN)~PRM PROMPT()~PRP PROPER(expC)~")
  224.             14
  225.                 (return "~PRW PROW()~PUT PUTFILE(expC1,expC2,expC3)~RAN RAND(expN)~RAT RAT(expC1,expC2,expN)~RTL RATLINE(expC1,expC2)~REA READKEY()~RCO RECOUNT(alias)~RNO RECNO(alias)~")
  226.             15
  227.                 (return "~RSI RECSIZE(alias)~REL RELATION(expN,alias)~REP REPLICATE(expC,expN)~RIG RIGHT(expC,expN)~ROU ROUND(expN1,expN2)~ROW ROW()~RTO RTOD(expN)~RTR RTRIM(expC)~")
  228.             16
  229.                 (return "~SCH SCHEME(expN1,expN2)~SCO SCOLS()~SEC SECONDS()~SEE SEEK(expr,alias)~SEL SELECT()~STT SET(expC,1)~SIG SIGN(expN)~SIN SIN(expN)~SOU SOUNDEX(expC)~SPA SPACE(expN)~")
  230.             17
  231.                 (return "~SQR SQRT(expN)~SRO SROWS()~STR STR(expN1,expN2,expN3)~STT STRTRAN(expC1,expC2,expC3,expN1,expN2)~STU STUFF(expC1,expN1,expN2,expC2)~SUB SUBSTR(expC,expN1,expN2)~")
  232.             18
  233.                 (return "~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)~USD USED(alias)~")
  234.             19
  235.                 (return "~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)~WRO WROWS(expC)~")
  236.             20
  237.                 (return "~WVI WVISIBLE(expC)~YEA YEAR(expD)~")
  238.             NULL
  239.                 (return 20)
  240.         )
  241.     )
  242. )
  243. (macro _set_table
  244.     (
  245.         (int                table_number
  246.         )
  247.         (get_parm 0 table_number)
  248.         (switch table_number
  249.             1
  250.                 (return "~SALT SET ALTERNATE ~SBEL SET BELL ~SBLO SET BLOCKSIZE ~SBOR SET BORDER TO ~SCAR SET CARRY ~SCEN SET CENTURY ~SCOL SET COLOR TO ~SCUR SET CURRENCY TO ~")
  251.             2
  252.                 (return "~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 ~SDOH SET DOHISTORY ~")
  253.             3
  254.                 (return "~SESC SET ESCAPE ~SENC SET ENCRYPTION ~SEXC SET EXCLUSIVE ~SEXA SET EXACT ~SFIE SET FIELDS TO ~SFIL SET FILTER TO ~SFOR SET FORMAT TO ~SFUL SET FULLPATH ~")
  255.             4
  256.                 (return "~SFUN SET FUNCTION ~SHEA SET HEADING ~SHIS SET HISTORY ~SHOU SET HOURS TO ~SIND SET INDEX TO ~SINT SET INTENSITY ~SLOG SET LOGERRORS ~SMAR SET MARGIN TO ~")
  257.             5
  258.                 (return "~SMEM SET MEMOWIDTH TO ~SMES SET MESSAGE TO ~SNEA SET NEAR ~SODO SET ODOMETER TO ~SORD SET ORDER TO ~SPAT SET PATH TO ~SPOI SET POINT TO ~SPRI SET PRINTER ~")
  259.             6
  260.                 (return "~SPRN SET PRINTER TO ~SPRO SET PROCEDURE TO ~SREL SET RELATION TO ~SRES SET RESOURCE ~SSAF SET SAFETY ~SSCO SET SCOREBOARD ~SSEP SET SEPARATOR ~SSHA SET SHADOWS ~")
  261.             7
  262.                 (return "~SSPA SET SPACE ~SSTA SET STATUS ~SSTI SET STICKY ~STYP SET TYPEAHEAD TO ~SUNI SET UNIQUE ~SVIE SET VIEW TO ~SWIN SET WINDOW OF MEMO TO ~")
  263.             NULL
  264.                 (return 7)
  265.         )
  266.     )
  267. )
  268. ;FoxPro Commenting Macros
  269. (macro _uncomment_conditionals
  270.     (
  271.         (int                display_messages
  272.         )
  273.         (get_parm 0 display_messages)
  274.         (if display_messages
  275.             (message "Uncommenting conditional statements...")
  276.         )
  277.         (save_position)
  278.         (translate "&& scan*>" "" 1 1 0)
  279.         (translate "&& if*>" "" 1 1 0)
  280.         (translate "&& do w*>" "" 1 1 0)
  281.         (translate "&& do c*>" "" 1 1 0)
  282.         (translate "&& for*>" "" 1 1 0)
  283.         (translate "&& prin*>" "" 1 1 0)
  284.         (restore_position)
  285.         (if display_messages
  286.             (_display_popup_message "Uncommenting complete." "" 0)
  287.         )
  288.     )
  289. )
  290. ;FoxPro Conditional Graphics Macros
  291. (macro _insert_graphics
  292.     (
  293.         (int            dbr_insert_col
  294.                         kk
  295.         )
  296.         (string        orig_line
  297.                         token
  298.                         sql_extension
  299.                         _numbers
  300.                         _graphics
  301.         )
  302.         (get_parm 0 _numbers)
  303.         (get_parm 1 orig_line)
  304.         (get_parm 2 _graphics)
  305.         (= token (substr (upper orig_line) 1 4))
  306.         (if (= dbr_insert_col (search_string "[ \\t]" token NULL 1))
  307.             (= token (substr token 1 (-- dbr_insert_col)))
  308.         )
  309.         (= dbr_insert_col curr_indent_col)
  310.         (if (&& (strlen token) (index (_dialect_table) (+ token " ")))
  311.             (= dbr_insert_col (_indent_shift token orig_line dbr_insert_col))
  312.         )
  313.         (delete_to_eol)
  314.         (beginning_of_line)
  315.         (insert _numbers)
  316.         (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  317.         (insert orig_line)
  318.         (if (== (upper _graphics) "Y")
  319.             (
  320.                 (if (> (strlen token) 0)
  321.                     (
  322.                         (if (index "PROC~RETU~IF~CASE~OTHE~FOR~PRIN~SCAN" token)
  323.                             (
  324.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  325.                                 (insert "┌")
  326.                             )
  327.                         )
  328.                         (if (index "DO" token)
  329.                             (
  330.                                 (if (|| (search_string "DO[ \t]+WHIL" orig_line NULL 1 0)(search_string "DO[ \t]+CASE" orig_line NULL 1 0))
  331.                                     (
  332.                                         (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  333.                                         (insert "┌")
  334.                                     )
  335.                                 )
  336.                             )
  337.                         )
  338.                         (if (index "ELSE" token)
  339.                             (
  340.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  341.                                 (insert "├")
  342.                             )
  343.                         )
  344.                         (if (index "ENDI~ENDD~ENDC~ENDF~ENDP~ENDS" token)
  345.                             (
  346.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  347.                                 (insert "└")
  348.                             )
  349.                         )
  350.                         (if (== (substr (upper orig_line) 1 6) "RETURN")
  351.                             (
  352.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  353.                                 (insert "└")
  354.                             )
  355.                         )
  356.                     )
  357.                 )
  358.                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  359.                 (= kk (+ (strlen _numbers) dbr_insert_col))
  360.                 (while (> kk (+ (strlen _numbers) dbr_indent_level))
  361.                     (
  362.                         (-= kk dbr_indent_level)
  363.                         (move_abs 0 kk)
  364.                         (insert "│")
  365.                     )
  366.                 )
  367.             )
  368.         )
  369.         (move_rel 1 0)
  370.         (beginning_of_line)
  371.     )
  372. )
  373.