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

  1. ;dBRIEF Dialect (Clipper 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.         (return "FOR NEXT WHIL DO W ENDD BEGI END IF ELSE ENDI LOCA STAT FUNC PROC RETU DO CASE OTHE ENDC TEXT ")
  9.     )
  10. )
  11. (macro _indenting_conditionals
  12.     (
  13.         (return "BEGI IF   WHIL DO W DO C FOR  ")
  14.     )
  15. )
  16. (macro _reseting_conditionals
  17.     (
  18.         (return "ELSE ")
  19.     )
  20. )
  21. (macro _outdenting_conditionals
  22.     (
  23.         (return "NEXT END ENDI ENDD ENDC ")
  24.     )
  25. )
  26. (macro _backdenting_conditionals
  27.     (
  28.         (return "NEXT END ENDI ELSE ENDD CASE ENDC OTHE ")
  29.     )
  30. )
  31. (macro _matching_conditional
  32.     (
  33.         (string            _match_token
  34.         )
  35.         (get_parm 0 _match_token)
  36.         (switch _match_token
  37.             "FOR "
  38.                 (return "NEXT")
  39.             "IF "
  40.                 (return "ENDIF")
  41.             "PROC"
  42.                 (return "RETURN")
  43.             "FUNC"
  44.                 (return dbr_udf_return)
  45.             "BEGI"
  46.                 (return "END")
  47.             "WHIL"
  48.                 (return "ENDDO")
  49.             "DO W"
  50.                 (return "ENDDO")
  51.             "DO C"
  52.                 (return "ENDCASE")
  53.             NULL
  54.                 (return "")
  55.         )
  56.     )
  57. )
  58. (macro _complete_cond_table
  59.     (
  60.         (return "FO~IF~ST~LO~PR~FU~DO~BE~WH~")
  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.             "BEGI"    NULL
  74.             "WHIL"    NULL
  75.             "DO W"
  76.                 (+= adj_indent_column dbr_indent_level)
  77.             "RETU"
  78.                 (
  79.                     (-= adj_indent_column dbr_indent_level)
  80.                     (= adj_previous_line (* dbr_indent_level -1))
  81.                 )
  82.             "DO C"
  83.                 (+= adj_indent_column (* dbr_indent_level dbr_indent_case))
  84.             "OTHE"
  85.                 (= adj_previous_line (* dbr_indent_level -1))
  86.             "ENDC"
  87.                 (
  88.                     (-= adj_indent_column (* dbr_indent_level dbr_indent_case))
  89.                     (= adj_previous_line (* dbr_indent_level (* dbr_indent_case -1)))
  90.                 )
  91.         )
  92.         (move_abs 0 adj_indent_column)
  93.         (return adj_previous_line)
  94.     )
  95. )
  96. ;Clipper Reindenting Macros
  97. (macro _indent_shift
  98.     (
  99.         (string            token
  100.                             orig_line
  101.         )
  102.         (int                dbr_insert_col
  103.         )
  104.         (get_parm 0 token)
  105.         (get_parm 1 orig_line)
  106.         (get_parm 2 dbr_insert_col)
  107.         (switch token
  108.             "DO"
  109.                 (
  110.                     (if (search_string "DO[ \t]+WHIL" orig_line NULL 1 0)
  111.                         (+= curr_indent_col dbr_indent_level)
  112.                     )
  113.                     (if (search_string "DO[ \t]+CASE" orig_line NULL 1 0)
  114.                         (+= curr_indent_col (* dbr_indent_level dbr_indent_case))
  115.                     )
  116.                 )
  117.             "LOCA"    NULL
  118.             "STAT"    NULL
  119.             "FUNC"    NULL
  120.             "PROC"
  121.                 (if (&& dbr_proc_indent (|| (index (upper orig_line) "FUNC")(index (upper orig_line) "PROC")))
  122.                     (
  123.                         (= dbr_return_flag 1)
  124.                         (+= curr_indent_col dbr_indent_level)
  125.                     )
  126.                 ;else
  127.                     (if (&& (== dbr_return_flag 1) (|| (== token "LOCA") (== token "STAT")))
  128.                         (= dbr_return_flag 1)
  129.                     ;else
  130.                         (= dbr_return_flag 0)
  131.                     )
  132.                 )
  133.             "FOR"        NULL
  134.             "WHIL"    NULL
  135.             "BEGI"    NULL
  136.             "IF"
  137.                 (+= curr_indent_col dbr_indent_level)
  138.             "ENDC"
  139.                 (= dbr_insert_col (-= curr_indent_col (* dbr_indent_level dbr_indent_case)))
  140.             "NEXT"    NULL
  141.             "ENDI"    NULL
  142.             "ENDD"    NULL
  143.             "END"
  144.                 (= dbr_insert_col (-= curr_indent_col dbr_indent_level))
  145.             "RETU"
  146.                 (if (&& (== dbr_return_flag 1)(== (substr (upper orig_line) 1 6) "RETURN"))
  147.                     (
  148.                         (= dbr_return_flag 0)
  149.                         (= dbr_insert_col (-= curr_indent_col dbr_indent_level))
  150.                     )
  151.                 )
  152.             "CASE"    NULL
  153.             "OTHE"    NULL
  154.             "ELSE"
  155.                 (-= dbr_insert_col dbr_indent_level)
  156.             "TEXT"
  157.                 (if (== (inq_called) "rein")
  158.                     (_find_matching_endtext)
  159.                 )
  160.         )
  161.         (returns dbr_insert_col)
  162.     )
  163. )
  164. ;Clipper Template Abbreviations
  165. (macro _command_table
  166.     (
  167.         (int                table_number
  168.         )
  169.         (get_parm 0 table_number)
  170.         (switch table_number
  171.             1
  172.                 (return "~APF APPEND FROM ~APB APPEND BLANK~BEG BEGIN SEQUENCE~CLA CLEAR ALL~CLG CLEAR GETS~CLM CLEAR MEMORY~CLT CLEAR TYPEAHEAD~CLD CLOSE DATABASE~CLI CLOSE INDEX~")
  173.             2
  174.                 (return "~COF COPY FILE ~COT COPY TO ~COS COPY STRUCTURE ~")
  175.             3
  176.                 (return "~CSE COPY STRUCTURE EXTENDED TO ~DEC DECLARE ~DEF DELETE FILE ~DEL DELETE ~DOC DO CASE~DOW DO WHILE .T.~ENC ENDCASE~EXT EXTERNAL ~IND INDEX ON ~KEY KEYBOARD ~")
  177.             4
  178.                 (return "~LBL LABEL FORM ~LOC~LOCAL ~LOF LOCATE FOR ~MEN MENU TO ~")
  179.             5
  180.                 (return "~OTH OTHERWISE~PAR PARAMETERS ~PRI PRIVATE ~REC RECALL ~REL RELEASE ~REP REPLACE ~RET RETURN~RFM REPORT FORM ~RIN REINDEX~RFR RESTORE FROM ~RSC RESTORE SCREEN~")
  181.             6
  182.                 (return "~SSC SAVE SCREEN~SVT SAVE TO ~STA~STATIC ~")
  183.             7
  184.                 (return "~TTL TOTAL ON ~UNL UNLOCK~UPD UPDATE ON ~ATO @ ^UX,^UY TO ^LX,^LY ~BOX @ ^UX,^UY,^LX,^LY BOX expC ~")
  185.             NULL
  186.                 (return 7)
  187.         )
  188.     )
  189. )
  190. (macro _function_table
  191.     (
  192.         (int                table_number
  193.         )
  194.         (get_parm 0 table_number)
  195.         (switch table_number
  196.             1
  197.                 (return "~ABS ABS(expN)~ACH ACHOICE(^UX,^UY,^LX,^LY,array1)~ACO ACOPY(array1,array2,expN1,expN2,expN3)~ADE ADEL(array,expN)~")
  198.             2
  199.                 (return "~ADI ADIR(directory skeleton,array1,array2,array3,array4,array5))~AFI AFIELDS(array1,array2,array3,array4)~AFL AFILL(array,exp,expN1,expN2)~AIN AINS(expN)~")
  200.             3
  201.                 (return "~ALT ALLTRIM(expC)~ALD ALTD(expN)~ASC ASC(expC)~ASN ASCAN(array,exp,expN1,expN2)~ASO ASORT(array,expN1,expN2)~B2I BIN2I(expC)~B2L BIN2L(expC)~B2W BIN2W(expC)~")
  202.             4
  203.                 (return "~BOF BOF()~CDO CDOW(expD)~CHR CHR(expN)~CMO CMONTH(expD)~COL COL()~CTO CTOD(expC)~CUR CURDIR(expC)~DAT DATE()~DAY DAY(expD)~DBE DBEDIT(^UX,^UY,^LX,^LY,array1)~")
  204.             5
  205.                 (return "~DBF DBFILTER()~DBR DBRELATION(expN)~DEL DELETED()~DES DESENDED(exp)~DIS DISKSPACE(expN)~DOS DOSERROR()~DOW DOW(expD)~DTC DTOC(expD)~DTS DTOS(expD)~")
  206.             6
  207.                 (return "~EMP EMPTY(exp)~EOF EOF()~ERR ERRORLEVEL(expN)~EXP EXP(expN)~FCL FCLOSE(expN)~FCO FCOUNT()~FCR FCREATE(expC,expN)~FER FERROR()~FIE FIELD(expN)~FIL FILE(expC)~")
  208.             7
  209.                 (return "~FLO FLOCK()~FOP FOPEN(expC,expN)~FOU FOUND()~FRE FREAD(expN1,@memvarC,expN2)~FRS FREADSTR(expN1,expN2)~FSE FSEEK(expN1,expN2,expN3)~FWR FWRITE(expN1,expN2,expN3)~")
  210.             8
  211.                 (return "~GET GETE(expC)~HAR HARDCR(expC)~HEA HEADER()~I2B I2BIN(expN)~IIF IIF(expL,exp1,exp2)~INE INDEXEXT()~IXK INDEXKEY(expN)~INO INDEXORD()~INK INKEY(expN)~INT INT(expN)~")
  212.             9
  213.                 (return "~ISA ISALPHA(expC)~ISC ISCOLOR()~ISL ISLOWER(expC)~ISP ISPRINTER()~ISU ISUPPER(expC~L2B L2BIN(expN)~LAK LASTKEY()~LAR LASTREC()~LEF LEFT(expC,expN)~LEN LEN(expC)~")
  214.             10
  215.                 (return "~LOG LOG(expN)~LOW LOWER(expC)~LTR LRTIM(expC)~LUP LUPDATE()~MAX MAX(expN1,expD1,expL2,expD2)~MEM MEMOEDIT(expC,^UX,^UY,^LX,^LY,expL)~")
  216.             11
  217.                 (return "~MML MEMOLINE(expC,expN1,expN2,expN3,expL)~MMR MEMOREAD(expC)~MMM MEMORY()~MMT MEMOTRAN(expC1,expC2,expC3)~MMW MEMOWRIT(expC1,expC2)~MIN MIN(expN1,expN2)~")
  218.             12
  219.                 (return "~MLC MLCOUNT(expC,expN1,expN2,expN3,expL)~MLP MLPOS(expC,expN1,expN2,expN3,expL)~MON MONTH(expD)~NTE NETERR()~NTN NETNAME()~NEX NEXTKEY()~PCL PCOL()~")
  220.             13
  221.                 (return "~PCO PCOUNT()~PRL PROCLINE()~PRN PROCNAME()~PRW PROW()~RAT RAT(expC1,expC2)~RDE READEXIT(expL)~RDI READINSERT(expL)~RDV READVAR()~RCN RECNO()~RCS RECSIZE()~")
  222.             14
  223.                 (return "~REP REPLICATE(expC,expN)~RES RESTSCREEN(expN1,expN2,expN3,expN4,expC)~RIG RIGHT(expC,expN)~RLO RLOCK()~ROU ROUND(expN1,expN2)~ROW ROW()~")
  224.             15
  225.                 (return "~SVS SAVESCREEN(expN1,expN2,expN3,expN4)~SCR SCROLL(expN1,expN2,expN3,expN4,expN5)~SEC SECONDS()~SEL SELECT(expC)~SCA SETCANCEL(expL)~SCO SETCOLOR(expC)~")
  226.             16
  227.                 (return "~SPR SETPRC(expN1,expN2)~SOU SOUNDEX(expC)~SPA SPACE(expN)~SQR SQRT(expN)~STR STRTRAN(expC1,expC2,expC3,expN1,expN2)~STU STUFF(expC1,expN1,expN2,expC2)~")
  228.             17
  229.                 (return "~SUB SUBSTR(expC,expN1,expN2)~TIM TIME()~TON TONE(expN1,expN2)~TRA TRANSFORM(exp,expC)~TRI TRIM(expC)~TYP TYPE(expC)~UPD UPDATED()~UPP UPPER(expC)~")
  230.             18
  231.                 (return "~USD USED()~VAL VAL(expC)~WOR WORD(expN)~YEA YEAR(expD)~")
  232.             NULL
  233.                 (return 18)
  234.         )
  235.     )
  236. )
  237. (macro _set_table
  238.     (
  239.         (int                table_number
  240.         )
  241.         (get_parm 0 table_number)
  242.         (switch table_number
  243.             1
  244.                 (return "~SALT SET ALTERNATE ~SBEL SET BELL ~SCEN SET CENTURY ~SCOL SET COLOR TO ~SCON SET CONSOLE ~SCUR SET CURSOR ~SDEC SET DECIMALS TO ~SDEF SET DEFAULT TO ~SDEL SET DELETED ~")
  245.             2
  246.                 (return "~SDEV SET DEVICE TO ~SESC SET ESCAPE ~SEXA SET EXACT ~")
  247.             3
  248.                 (return "~SEXC SET EXCLUSIVE ~SFIL SET FILTER TO ~SFOR SET FORMAT TO ~SFUN SET FUNCTION ~SIND SET INDEX TO ~SINT SET INTENSITY ~SKEY SET KEY ~SMAR SET MARGIN TO ~")
  249.             4
  250.                 (return "~SORD SET ORDER TO ~SPAT SET PATH TO ~SPRI SET PRINT ~SPRN SET PRINTER TO ~")
  251.             5
  252.                 (return "~SPRO SET PROCEDURE TO ~SREL SET RELATION TO ~SSCO SET SCOREBOARD ~SSOF SET SOFTSEEK ~STYP SET TYPEAHEAD TO ~SUNI SET UNIQUE ~SWRA SET WRAP ~")
  253.             NULL
  254.                 (return 5)
  255.         )
  256.     )
  257. )
  258. ;Clipper Commenting Macros
  259. (macro _uncomment_conditionals
  260.     (
  261.         (int                display_messages
  262.         )
  263.         (get_parm 0 display_messages)
  264.         (if display_messages
  265.             (message "Uncommenting conditional statements...")
  266.         )
  267.         (save_position)
  268.         (top_of_buffer)
  269.         (translate (+ (_comment_character 1) " begi*>") "" 1 1 0)
  270.         (translate (+ (_comment_character 1) " if*>") "" 1 1 0)
  271.         (translate (+ (_comment_character 1) " whil*>") "" 1 1 0)
  272.         (translate (+ (_comment_character 1) " do w*>") "" 1 1 0)
  273.         (translate (+ (_comment_character 1) " do c*>") "" 1 1 0)
  274.         (translate (+ (_comment_character 1) " for*>") "" 1 1 0)
  275.         (restore_position)
  276.         (if display_messages
  277.             (_display_popup_message "Uncommenting complete." "" 0)
  278.         )
  279.     )
  280. )
  281. ;Clipper Conditional Garphics Macros
  282. (macro _insert_graphics
  283.     (
  284.         (int            dbr_insert_col
  285.                         kk
  286.         )
  287.         (string        orig_line
  288.                         token
  289.                         sql_extension
  290.                         _numbers
  291.                         _graphics
  292.         )
  293.         (get_parm 0 _numbers)
  294.         (get_parm 1 orig_line)
  295.         (get_parm 2 _graphics)
  296.         (= token (substr (upper orig_line) 1 4))
  297.         (if (= dbr_insert_col (search_string "[ \\t]" token NULL 1))
  298.             (= token (substr token 1 (-- dbr_insert_col)))
  299.         )
  300.         (= dbr_insert_col curr_indent_col)
  301.         (if (&& (strlen token) (index (_dialect_table) (+ token " ")))
  302.             (= dbr_insert_col (_indent_shift token orig_line dbr_insert_col))
  303.         )
  304.         (delete_to_eol)
  305.         (beginning_of_line)
  306.         (insert _numbers)
  307.         (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  308.         (insert orig_line)
  309.         (if (== (upper _graphics) "Y")
  310.             (
  311.                 (if (> (strlen token) 0)
  312.                     (
  313.                         (if (index "FOR~PROC~FUNC~IF~CASE~OTHE~BEGI~WHIL~" token)
  314.                             (
  315.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  316.                                 (insert "┌")
  317.                             )
  318.                         )
  319.                         (if (&& (&& (== dbr_dialect 12) (index "~STAT~LOCA~" token)) (|| (index (upper orig_line) "FUNC")(index (upper orig_line) "PROC")))
  320.                             (
  321.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  322.                                 (insert "┌")
  323.                             )
  324.                         )
  325.                         (if (index "DO" token)
  326.                             (if (|| (search_string "DO[ \t]+WHIL" orig_line NULL 1 0)(search_string "DO[ \t]+CASE" orig_line NULL 1 0))
  327.                                 (
  328.                                     (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  329.                                     (insert "┌")
  330.                                 )
  331.                             )
  332.                         )
  333.                         (if (index "ELSE" token)
  334.                             (
  335.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  336.                                 (insert "├")
  337.                             )
  338.                         )
  339.                         (if (index "ENDI~ENDD~ENDC~END~NEXT~" token)
  340.                             (
  341.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  342.                                 (insert "└")
  343.                             )
  344.                         )
  345.                         (if (== (substr (upper orig_line) 1 6) "RETURN")
  346.                             (
  347.                                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  348.                                 (insert "└")
  349.                             )
  350.                         )
  351.                     )
  352.                 )
  353.                 (move_abs 0 (+ (strlen _numbers) dbr_insert_col))
  354.                 (= kk (+ (strlen _numbers) dbr_insert_col))
  355.                 (while (> kk (+ (strlen _numbers) dbr_indent_level))
  356.                     (
  357.                         (-= kk dbr_indent_level)
  358.                         (move_abs 0 kk)
  359.                         (insert "│")
  360.                     )
  361.                 )
  362.             )
  363.         )
  364.         (move_rel 1 0)
  365.         (beginning_of_line)
  366.     )
  367. )
  368.