home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9203 / dbase / cformat.prg < prev   
Encoding:
Text File  |  1992-04-08  |  12.2 KB  |  466 lines

  1. * -------------------------------------------------------- *
  2. *                     CFORMAT.PRG                          *
  3. *                  Dokumentationshilfe                     *
  4. *         für dBase, FoxBase und Clipper-Programme         *
  5. *            (c) 1992 T.Gruschke und DMV-Verlag            *
  6. * -------------------------------------------------------- *
  7.  
  8. CLEAR
  9. SET EXACT ON
  10.  
  11. PUBLIC zeile, zeile2, cc, alt_cm, bl
  12. PUBLIC cor[5], coe[5], cof[140], com[170]
  13.  
  14. PARAMETERS file_in, file_out
  15.  
  16. DO com_setzen                            && Arrays laden
  17.   IF PCOUNT() = 1                        && Keine Ausgabe? Setze Default-Name
  18.     file_out = file_in + ".LST"
  19.   ENDIF
  20.  
  21.   alt_cm   = 0                           && Letzter Befehlswert
  22.   kennung  = FCREATE("&file_out")        && Ausgabe-Datei Öffnen
  23.   kennung2 = FOPEN("&file_in" + ".prg")  && Eingabe-Datei Öffnen
  24.   lange    = FSEEK(kennung2, 0, 2)       && Länge der Eingabe-Datei ?
  25.   FSEEK(kennung2, 0)                     && Auf Anfang setzen
  26.   IF lange > 65535                       && Länge > 65535 ?
  27.     mla = lange/65535                    && Teillänge ermitteln
  28.     mla = mla + (lange - (lange/65535))  && und Restlänge addieren
  29.   ELSE
  30.     mla = lange                          && sonst einfache Länge
  31.   ENDIF
  32.   bl     = 0                             && Blanks zum einrücken
  33.   cm     = 0                             && Befehlswert
  34.   gesamt = 0
  35.   DO WHILE gesamt < lange                && bis zum Ende gehen.
  36.     zeile2 = ""
  37.     zeile  = FREADSTR(kennung2, mla)     && Datei einlesen
  38.     zz     = 0
  39.     DO WHILE zz < mla-3                  && Ganze Datei durchsuchen
  40.       IF zz = 0
  41.         p = 0                            && Neue Zeile
  42.       ELSE
  43.         p = AT(CHR(13) + CHR(10), SUBSTR(zeile, zz, mla)) + 1
  44.       ENDIF
  45.       L1     = AT(CHR(13) + CHR(10), SUBSTR(zeile, zz + p, mla)) - 1
  46.       zeil   = ALLTRIM(SUBSTR(zeile, zz+p,L1))
  47.       lzeil  = LEN(zeil)                 && Länge einer Zeile
  48.       lzeil2 = 0
  49.       zzl    = 1
  50.       zeile2 = zeile2 + space(bl)
  51.  
  52.       ?? SPACE(bl)
  53.  
  54.       DO WHILE zzl <= lzeil              && Eine Zeile durchsuchen
  55.         ixxx  = zzl
  56.         L2    = AT(" ", SUBSTR(zeil, ixxx, lzeil))
  57.         IF L2 =  0
  58.           L2 = lzeil                     && Teilstücke ermitteln
  59.         ENDIF
  60.         c1 = SUBSTR(zeil, ixxx, L2)
  61.         cc = LOWER(ALLTRIM(c1))        && Umwandeln zum Suchen
  62.         cm = 0                         && Werte für Befehle,Funktionen
  63.         cr = 0                         && und Schleifen auf 0 setzen
  64.         ce = 0
  65.         cf = 0
  66.         IF LEN(cc) > 0                 && Wenn zum Umwandeln,
  67.  
  68.           IF SUBSTR(cc, 1, 2) <> CHR(34)+"&"
  69.  
  70.             cm = ASCAN(com, "&cc")     && dann Suchen nach Befehlen,
  71.             cr = ASCAN(cor, "&cc")     && Schleifen und Funktionen
  72.             IF cm > 0
  73.               IF ALLTRIM(LOWER(cc)) <> ALLTRIM(LOWER(com[cm]))
  74.                 cm = 0
  75.               ENDIF
  76.             ENDIF
  77.             IF cr > 0
  78.               IF ALLTRIM(LOWER(cc)) <> ALLTRIM(LOWER(cor[cr]))
  79.                 cr = 0
  80.               ENDIF
  81.             ENDIF
  82.             IF cr > 0
  83.               IF cr = 3 .AND. alt_cm = 72  && Sonderfall : LOCATE FOR
  84.               bl = bl - 3
  85.             ENDIF
  86.             IF cr = 3 .AND. alt_cm = 69    && Sonderfall: FORM ... FOR ...
  87.               bl = bl - 3
  88.             ENDIF
  89.               bl = bl + 3                  && Schleifenanfang?-> einrücken
  90.             ENDIF
  91.             ce = ASCAN(coe, "&cc")         && Schleifenende?-> zurückrücken
  92.             IF ce > 0 .AND. bl > 0
  93.               zeile2 = LEFT(zeile2, LEN(zeile2) - 3)
  94.               @ row(), col()-3 SAY ""
  95.               IF cc = "else"
  96.                 bl = bl + 3
  97.               ENDIF
  98.               bl = bl - 3
  99.             ENDIF
  100.             cf = ASCAN(cof, "&cc")
  101.           ENDIF
  102.         ENDIF
  103.         IF cm > 0 .OR. cr > 0 .OR. ce > 0 .OR. cf > 0
  104.           alt_cm = cm
  105.           zeile2 = zeile2 + UPPER(cc) + " "  && Ausgabezeile schreiben
  106.  
  107.           ?? UPPER(cc) + " "                 && Befehl
  108.  
  109.         ELSE
  110.           zeile2 = zeile2 + c1               && kein Befehl
  111.  
  112.           ?? c1
  113.  
  114.         ENDIF
  115.         zzl = zzl + L2                       && Neuen Offset-> Zeile
  116.       ENDDO
  117.       IF lzeil2 > 0
  118.         zeile2 = zeile2 + SUBSTR(zeil, lzeil, (lzeil2 - lzeil))
  119.  
  120.         ?? SUBSTR(zeil, lzeil, (lzeil2 - lzeil))
  121.  
  122.       ENDIF
  123.  
  124.       ?? CHR(13) + CHR(10)
  125.  
  126.       zeile2 = zeile2 + CHR(13) + CHR(10)
  127.       zz     = zz + L1 + p                   && Neuer Offset-> Datei
  128.       FWRITE(kennung, zeile2, LEN(zeile2))
  129.       zeile2 = ""
  130.     ENDDO
  131.     FWRITE(kennung, zeile2, LEN(zeile2))     && Ausgabe-Datei schreiben
  132.     gesamt = gesamt + mla
  133.   ENDDO
  134. RETURN
  135.  
  136. * -------------------------------------------------------- *
  137.  
  138. PROCEDURE com_setzen                       && Commands in Array füllen
  139.   anz_cor = 3                              && Anzahl Befehle,
  140.   anz_coe = 4                              && Funktionen, Anfang &
  141.   anz_com = 164                            && Ende (Schleifen)
  142.   anz_cof = 139
  143.  
  144.   com[  1] = "accept"
  145.   com[  2] = "append"
  146.   com[  3] = "average"
  147.   com[  4] = "to"
  148.   com[  5] = "fields"
  149.   com[  6] = "from"
  150.   com[  7] = "say"
  151.   com[  8] = "get"
  152.   com[  9] = "picture"
  153.   com[ 10] = "range"
  154.   com[ 11] = "clear"
  155.   com[ 12] = "box"
  156.   com[ 13] = "valid"
  157.   com[ 14] = "prompt"
  158.   com[ 15] = "message"
  159.   com[ 16] = "double"
  160.   com[ 17] = "blank"
  161.  *com[ 18] = "for"
  162.  *com[ 19] = "while"
  163.   com[ 20] = "sdf"
  164.   com[ 21] = "delimited"
  165.   com[ 22] = "with"
  166.   com[ 23] = "begin"
  167.   com[ 24] = "sequence"
  168.   com[ 25] = "break"
  169.   com[ 26] = "end"
  170.   com[ 27] = "call"
  171.   com[ 28] = "cancel"
  172.   com[ 29] = "quit"
  173.   com[ 30] = "clear"
  174.   com[ 31] = "screen"
  175.   com[ 32] = "all"
  176.   com[ 33] = "gets"
  177.   com[ 34] = "memory"
  178.   com[ 35] = "typeahead"
  179.   com[ 36] = "close"
  180.   com[ 37] = "alternate"
  181.   com[ 38] = "databases"
  182.   com[ 39] = "format"
  183.   com[ 40] = "index"
  184.   com[ 41] = "commit"
  185.   com[ 42] = "continue"
  186.   com[ 43] = "copy"
  187.   com[ 44] = "file"
  188.   com[ 45] = "structure"
  189.   com[ 46] = "extended"
  190.   com[ 47] = "count"
  191.   com[ 48] = "create"
  192.   com[ 49] = "from"
  193.   com[ 49] = "declare"
  194.   com[ 50] = "delete"
  195.   com[ 51] = "dir"
  196.   com[ 52] = "display"
  197.   com[ 53] = "off"
  198.   com[ 54] = "print"
  199.   com[ 55] = "do"
  200.   com[ 56] = "eject"
  201.   com[ 57] = "erase"
  202.   com[ 58] = "external"
  203.   com[ 59] = "find"
  204.   com[ 60] = "function"
  205.   com[ 61] = "return"
  206.   com[ 62] = "go"
  207.   com[ 63] = "goto"
  208.   com[ 64] = "on"
  209.   com[ 65] = "input"
  210.   com[ 66] = "join"
  211.   com[ 67] = "keyboard"
  212.   com[ 68] = "label"
  213.   com[ 69] = "form"
  214.   com[ 70] = "list"
  215.   com[ 71] = "off"
  216.   com[ 72] = "locate"
  217.   com[ 73] = "menu"
  218.   com[ 74] = "note"
  219.   com[ 75] = "pack"
  220.   com[ 76] = "parameters"
  221.   com[ 77] = "private"
  222.   com[ 78] = "procedure"
  223.   com[ 79] = "public"
  224.   com[ 80] = "read"
  225.   com[ 81] = "save"
  226.   com[ 82] = "recall"
  227.   com[ 83] = "reindex"
  228.   com[ 84] = "release"
  229.   com[ 85] = "rename"
  230.   com[ 86] = "like"
  231.   com[ 87] = "except"
  232.   com[ 88] = "replace"
  233.   com[ 89] = "report"
  234.   com[ 90] = "summary"
  235.   com[ 91] = "plain"
  236.   com[ 92] = "heading"
  237.   com[ 93] = "noeject"
  238.   com[ 94] = "restore"
  239.   com[ 95] = "run"
  240.   com[ 96] = "seek"
  241.   com[ 97] = "select"
  242.   com[ 98] = "set"
  243.   com[ 99] = "alternate"
  244.   com[100] = "bell"
  245.   com[101] = "century"
  246.   com[102] = "color"
  247.   com[103] = "colour"
  248.   com[104] = "confirm"
  249.   com[105] = "console"
  250.   com[106] = "cursor"
  251.   com[107] = "date"
  252.   com[108] = "american"
  253.   com[109] = "ansi"
  254.   com[110] = "british"
  255.   com[111] = "german"
  256.   com[112] = "french"
  257.   com[113] = "italian"
  258.   com[114] = "decimals"
  259.   com[115] = "default"
  260.   com[116] = "deleted"
  261.   com[117] = "delimiters"
  262.   com[118] = "device"
  263.   com[119] = "escape"
  264.   com[120] = "exact"
  265.   com[121] = "exclusive"
  266.   com[122] = "filter"
  267.   com[123] = "fixed"
  268.   com[124] = "format"
  269.   com[125] = "function"
  270.   com[126] = "intensity"
  271.   com[127] = "key"
  272.   com[128] = "margin"
  273.   com[129] = "center"
  274.   com[130] = "order"
  275.   com[131] = "centre"
  276.   com[132] = "path"
  277.   com[133] = "relation"
  278.   com[134] = "additive"
  279.   com[135] = "scoreboard"
  280.   com[136] = "softseek"
  281.   com[137] = "typeahead"
  282.   com[138] = "unique"
  283.   com[139] = "wrap"
  284.   com[140] = "alias"
  285.   com[141] = "sort"
  286.   com[142] = "store"
  287.   com[143] = "sum"
  288.   com[144] = "text"
  289.   com[145] = "endtext"
  290.   com[146] = "total"
  291.   com[147] = "type"
  292.   com[148] = "unlock"
  293.   com[149] = "update"
  294.   com[150] = "random"
  295.   com[151] = "use"
  296.   com[152] = "wait"
  297.   com[153] = "zap"
  298.   com[154] = ".not."
  299.   com[155] = ".or."
  300.   com[156] = ".and."
  301.   com[157] = "case"
  302.   com[158] = "endcase"
  303.   com[159] = "skip"
  304.   com[160] = "top"
  305.   com[161] = "bottom"
  306.   com[162] = "else"
  307.   com[163] = ".t."
  308.   com[164] = ".f."
  309.  
  310.   cof[  1] = "abs("
  311.   cof[  2] = "achoice("
  312.   cof[  3] = "acopy("
  313.   cof[  4] = "adel("
  314.   cof[  5] = "adir("
  315.   cof[  6] = "afields("
  316.   cof[  7] = "afill("
  317.   cof[  8] = "ains("
  318.   cof[  9] = "alias("
  319.   cof[ 10] = "alltrim("
  320.   cof[ 11] = "altd("
  321.   cof[ 12] = "asc("
  322.   cof[ 13] = "ascan("
  323.   cof[ 14] = "asort("
  324.   cof[ 15] = "at("
  325.   cof[ 16] = "bin2i("
  326.   cof[ 17] = "bin2l("
  327.   cof[ 18] = "bin2w("
  328.   cof[ 19] = "bof("
  329.   cof[ 20] = "cdow("
  330.   cof[ 21] = "chr("
  331.   cof[ 22] = "cmonth("
  332.   cof[ 23] = "col("
  333.   cof[ 24] = "ctod("
  334.   cof[ 25] = "curdur("
  335.   cof[ 26] = "date("
  336.   cof[ 27] = "day("
  337.   cof[ 28] = "dbedit("
  338.   cof[ 29] = "dbfilter("
  339.   cof[ 30] = "dbrelation("
  340.   cof[ 31] = "dbrselect("
  341.   cof[ 32] = "deleted("
  342.   cof[ 33] = "descend("
  343.   cof[ 34] = "diskspace("
  344.   cof[ 35] = "doserror("
  345.   cof[ 36] = "dow("
  346.   cof[ 37] = "dtoc("
  347.   cof[ 38] = "dtos("
  348.   cof[ 39] = "empty("
  349.   cof[ 40] = "eof("
  350.   cof[ 41] = "errorlevel("
  351.   cof[ 42] = "exp("
  352.   cof[ 43] = "fclose("
  353.   cof[ 44] = "fcount("
  354.   cof[ 45] = "fcreate("
  355.   cof[ 46] = "ferror("
  356.   cof[ 47] = "field("
  357.   cof[ 48] = "file("
  358.   cof[ 49] = "flock("
  359.   cof[ 50] = "fopen("
  360.   cof[ 51] = "found("
  361.   cof[ 52] = "fread("
  362.   cof[ 53] = "freadstr("
  363.   cof[ 54] = "fseek("
  364.   cof[ 55] = "fwrite("
  365.   cof[ 56] = "gete("
  366.   cof[ 57] = "hardcr("
  367.   cof[ 58] = "header("
  368.   cof[ 59] = "i2bin("
  369.   cof[ 60] = "iif("
  370.   cof[ 61] = "if("
  371.   cof[ 62] = "indexext("
  372.   cof[ 63] = "indexkey("
  373.   cof[ 64] = "indexord("
  374.   cof[ 65] = "inkey("
  375.   cof[ 66] = "int("
  376.   cof[ 67] = "isalpha("
  377.   cof[ 68] = "iscolor("
  378.   cof[ 69] = "iscolour("
  379.   cof[ 70] = "islower("
  380.   cof[ 71] = "isprinter("
  381.   cof[ 72] = "isupper("
  382.   cof[ 73] = "l2bin("
  383.   cof[ 74] = "lastkey("
  384.   cof[ 75] = "lastrec("
  385.   cof[ 76] = "recount("
  386.   cof[ 77] = "left("
  387.   cof[ 78] = "len("
  388.   cof[ 79] = "log("
  389.   cof[ 80] = "lower("
  390.   cof[ 81] = "ltrim("
  391.   cof[ 82] = "lupdate("
  392.   cof[ 83] = "max("
  393.   cof[ 84] = "memoedit("
  394.   cof[ 85] = "memoline("
  395.   cof[ 86] = "memoread("
  396.   cof[ 87] = "memory("
  397.   cof[ 88] = "memotran("
  398.   cof[ 89] = "memowrit("
  399.   cof[ 90] = "min("
  400.   cof[ 91] = "mlcount("
  401.   cof[ 92] = "mlpos("
  402.   cof[ 93] = "month("
  403.   cof[ 94] = "neterr("
  404.   cof[ 95] = "netname("
  405.   cof[ 96] = "nextkey("
  406.   cof[ 97] = "pcol("
  407.   cof[ 98] = "pcount("
  408.   cof[ 99] = "procline("
  409.   cof[100] = "procname("
  410.   cof[101] = "prow("
  411.   cof[102] = "rat("
  412.   cof[103] = "readexit("
  413.   cof[104] = "readinsert("
  414.   cof[105] = "readvar("
  415.   cof[106] = "recno("
  416.   cof[107] = "recsize("
  417.   cof[108] = "replicate("
  418.   cof[109] = "restscreen("
  419.   cof[110] = "right("
  420.   cof[111] = "rlock("
  421.   cof[112] = "round("
  422.   cof[113] = "row("
  423.   cof[114] = "savescreen("
  424.   cof[115] = "scroll("
  425.   cof[116] = "seconds("
  426.   cof[117] = "select("
  427.   cof[118] = "setcancel("
  428.   cof[119] = "setcolor("
  429.   cof[120] = "setprc("
  430.   cof[121] = "soundex("
  431.   cof[122] = "space("
  432.   cof[123] = "sqrt("
  433.   cof[124] = "str("
  434.   cof[125] = "strtran("
  435.   cof[126] = "stuff("
  436.   cof[127] = "substr("
  437.   cof[128] = "time("
  438.   cof[129] = "tone("
  439.   cof[130] = "transform("
  440.   cof[131] = "trim("
  441.   cof[132] = "type("
  442.   cof[133] = "updated("
  443.   cof[134] = "upper("
  444.   cof[135] = "used("
  445.   cof[136] = "val("
  446.   cof[137] = "word("
  447.   cof[138] = "year("
  448.   cof[139] = "browse("
  449.  
  450. cor[ 1]= "if"
  451. cor[ 2]= "while"
  452. cor[ 3]= "for"
  453.  
  454. coe[ 1]= "next"
  455. coe[ 2]= "endif"
  456. coe[ 3]= "wend"
  457. coe[ 4]= "enddo"
  458. coe[ 5]= "else"
  459.  
  460. RETURN
  461.  
  462. * -------------------------------------------------------- *
  463. *               Ende von CFORMAT.PRG                       *
  464.  
  465.  
  466.