home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / clipper / def220.arj / DEFCHECK.PRG < prev   
Encoding:
Text File  |  1992-06-01  |  12.9 KB  |  485 lines

  1. ***************************************************************************
  2. *   Programmname : defcheck.prg
  3. *   Datum        : 1992.1.16
  4. *   Autor        : INRO
  5. *   Version      :  1.00
  6. *   Kurze Programmbeschreibung : 
  7. ***************************************************************************
  8.  
  9.  parameters par1,par2,par3,par4
  10.  
  11.  set exact on
  12.  
  13.  ? "IRH Define Checker Version 2.20"
  14.  ? "IRH Corp. 1992. Freeware."
  15.  ?
  16.  
  17.  if pcount() # 3  .and. pcount() # 4
  18.     ? "Use : DEFCHECK <File> <Org.language> <Checklanguage> [/P]"
  19.     ? "[/P] : Print error"
  20.     quit
  21.  endif
  22.  
  23.  printit = .f.
  24.  
  25.  if pcount() = 4 
  26.     par4 = alltrim(upper(par4))
  27.     if par4 # "/P"
  28.        ? "Wrong Option"
  29.        ? "Use : DEFCHECK <File> <Org.language> <Checklanguage> [/P]"
  30.        ? "[/P] : Print error"
  31.        quit
  32.     else
  33.        printit = .t.
  34.     endif
  35.  endif
  36.  
  37.  datei = alltrim(par1)
  38.  
  39.  if "*" $ datei .or. "?" $ datei
  40.     ? "No wildcards allowed"
  41.     quit
  42.  endif
  43.  
  44.  if .not. file(datei)
  45.     ? "File not found"
  46.     quit
  47.  endif
  48.  
  49.  olan = alltrim(upper(par2))
  50.  clan = alltrim(upper(par3))
  51.  
  52.  if olan == clan
  53.     ? "Always look on the bright side of life ...."
  54.     quit
  55.  endif
  56.  
  57.  filelen = filesize(datei)
  58.  fianzbyte = 0
  59.  
  60.  fc = fopen(datei,0)
  61.  if ferror() # 0
  62.     ? " Open Error : " + str(ferror())
  63.     quit
  64.  endif
  65.  
  66.  fseek(fc,0,0)
  67.  if ferror() # 0
  68.     ? " Seek Error : " + str(ferror())
  69.     quit
  70.  endif
  71.  fianzbyte = 0
  72.  aktlen = 0
  73.  string = ""
  74.  tlinenum = 0
  75.  olinenum = 0
  76.  clinenum = 0
  77.  olanlifo = 0
  78.  clanlifo = 0
  79.  
  80.  ? "File checking start                   "
  81.  ?
  82.  
  83.  do while aktlen <= filelen 
  84.     ostring = string
  85.     string = alltrim(readline())
  86.     tlinenum = tlinenum + 1
  87.     @ row(),0 say "Working line : " + alltrim(str(tlinenum)) 
  88.     @ row(),0 say ""
  89.     if olan $ upper(string) .and. substr(upper(string),1,6) == "#IFDEF"
  90.        olanlifo = fianzbyte - (len(string)+1)
  91.        olinenum = tlinenum - 1
  92.     endif
  93.     if clan $ upper(string) .and. substr(upper(string),1,6) == "#IFDEF"
  94.        clanlifo = fianzbyte - (len(string)+1)
  95.        clinenum = tlinenum - 1
  96.     endif
  97.     if substr(string,1,1) # "*" .and. substr(string,1,1) # "#" .and.;
  98.        len(string) > 0 
  99.        if printit
  100.           set print on
  101.        endif
  102.        ?? alltrim(upper(datei)) + "(" + alltrim(str(tlinenum)) + ")" +;
  103.           " Warning : Crazy line found "
  104.        ? "    LINE : " + string
  105.        ?
  106.        if printit
  107.           set print off
  108.        endif
  109.     endif
  110.  enddo
  111.  
  112.  ?? "File checking end                   "
  113.  ?
  114.  if substr(upper(ostring),1,6) == "#ENDIF"
  115.     ?? alltrim(upper(datei)) + " Warning : #ENDIF on last position in File !"
  116.     ?
  117.  endif
  118.  
  119.  if olanlifo = 0 
  120.     ?? alltrim(upper(datei)) + " Error : Original language not found"
  121.     ?
  122.     quit
  123.  endif
  124.  
  125.  if clanlifo = 0 
  126.     ?? alltrim(upper(datei)) + " Error : Check language not found"
  127.     ?
  128.     quit
  129.  endif
  130.  
  131.  fseek(fc,olanlifo,0)
  132.  if ferror() # 0
  133.     ? " Seek Error : " + str(ferror())
  134.     quit
  135.  endif
  136.  fianzbyte = 0
  137.  aktlen = 0
  138.  
  139.  olanfound = .f.
  140.  string = ""
  141.  oendifs = 0
  142.  
  143. * @ row(),0 say "Seek for original language ..."
  144. * ?
  145. *
  146. * for i = 1 to olanlifo
  147. *    readline()
  148. *    olinenum = olinenum + 1
  149. * next
  150.  
  151.  do while aktlen <= filelen 
  152.     string = alltrim(readline())
  153.     olinenum = olinenum + 1
  154.     @ row(),0 say "Working line : " + alltrim(str(olinenum)) 
  155.     @ row(),0 say ""
  156.     if substr(string,1,1) == "*"
  157.        loop
  158.     endif
  159.     if olanfound .and. substr(upper(string),1,6) == "#IFDEF"
  160.        oendifs = oendifs + 1
  161.     endif
  162.     if olan $ upper(string) .and. substr(upper(string),1,6) == "#IFDEF"
  163.        @ row(),0 say "Original language found at " + alltrim(str(olinenum))
  164.        ?
  165.        olanfound = .t.
  166.     endif
  167.     if olanfound .and. substr(upper(string),1,6) == "#ENDIF"
  168.        if oendifs <= 0
  169.           @ row(),0 say "Original language end at " + alltrim(str(olinenum))
  170.           ?
  171.           olanfound = .f.
  172.           exit
  173.        else
  174.           oendifs = oendifs - 1
  175.        endif
  176.     endif
  177.     if olanfound .and. substr(upper(string),1,7) == "#DEFINE"
  178.        if type ("odef") = "U"
  179.           odef = array(1,3)
  180.        else
  181.           aadd(odef,{"","",.f.})
  182.        endif
  183.        oarrlen =  len(odef)
  184.        odef [oarrlen,1] = token(string," ",2)
  185.        odef [oarrlen,3] = .f.
  186.        if numat("'",string) > 0
  187.              if printit
  188.                 set print on
  189.              endif
  190.              ?? alltrim(upper(datei)) + " Lan: " + olan + " (" + alltrim(str(olinenum)) + ")" +;
  191.                 " Error : >'< found "
  192.              ? "    DEFINE : " + token(string," ",2)
  193.              ? "    STRING : " + hstring
  194.              ?
  195.              if printit
  196.                 set print off
  197.              endif
  198.        endif
  199.        i = 3
  200.        hstring = ""
  201.        do while .not. empty(token(string," ",i))
  202.           hstring = hstring + " " + token(string," ",i)
  203.           i ++
  204.        enddo
  205.        hstring = alltrim(hstring)
  206.        if numat("'",string) > 0
  207.              if printit
  208.                 set print on
  209.              endif
  210.              ?? alltrim(upper(datei)) + " Lan: " + olan + " (" + alltrim(str(olinenum)) + ")" +;
  211.                 " Error : >'< found "
  212.              ? "    DEFINE : " + token(string," ",2)
  213.              ? "    STRING : " + hstring
  214.              ?
  215.              if printit
  216.                 set print off
  217.              endif
  218.        endif
  219.        if hstring = alltrim(str(val(hstring)))
  220.           odef [oarrlen,2] = "N"
  221.        elseif numat(chr(34),hstring) > 0
  222.           if numat(chr(34),hstring) # int(numat(chr(34),hstring)/2)*2
  223.              if printit
  224.                 set print on
  225.              endif
  226.              ?? alltrim(upper(datei)) + " Lan: " + olan + " (" + alltrim(str(olinenum)) + ")" +;
  227.                 " Error : Unterminated string"
  228.              ? "    DEFINE : " + token(string," ",2)
  229.              ? "    STRING : " + hstring
  230.              ?
  231.              if printit
  232.                 set print off
  233.              endif
  234.           endif
  235.           odef [oarrlen,2] = "S"
  236.        else
  237.           odef [oarrlen,2] = "C"
  238.        endif
  239.     endif
  240.  enddo
  241.  
  242.  if type("odef") = "U"
  243.     ?? alltrim(upper(datei)) + " Warning : No DEFINE found"
  244.     ?
  245.     quit
  246.  endif
  247.  
  248.  ?? "Checking " + clan
  249.  ?
  250.  
  251.  fseek(fc,clanlifo,0)
  252.  if ferror() # 0
  253.     ? " Seek Error : " + str(ferror())
  254.     quit
  255.  endif
  256.  fianzbyte = 0
  257.  aktlen = 0
  258.  
  259.  clanfound = .f.
  260.  string = ""
  261.  cendifs = 0
  262.  
  263. * @ row(),0 say "Seek for check language ..."
  264. * ?
  265. *
  266. * for i = 1 to clanlifo
  267. *    readline()
  268. *    clinenum = clinenum + 1
  269. * next
  270.  
  271.  do while aktlen <= filelen 
  272.     string = alltrim(readline())
  273.     clinenum = clinenum + 1
  274.     @ row(),0 say "Working line : " + alltrim(str(clinenum)) 
  275.     @ row(),0 say ""
  276.     if substr(string,1,1) == "*"
  277.        loop
  278.     endif
  279.     if clanfound .and. substr(upper(string),1,6) == "#IFDEF"
  280.        cendifs = cendifs + 1
  281.     endif
  282.     if clan $ upper(string) .and. substr(upper(string),1,6) == "#IFDEF"
  283.        @ row(),0 say "Check language found at " + alltrim(str(clinenum))
  284.        ?
  285.        clanfound = .t.
  286.     endif
  287.     if clanfound .and. substr(upper(string),1,6) == "#ENDIF"
  288.        if cendifs <= 0
  289.           @ row(),0 say "Check language end at " + alltrim(str(clinenum))
  290.           ?
  291.           clanfound = .f.
  292.           exit
  293.        else
  294.           cendifs = cendifs -1
  295.        endif
  296.     endif
  297.     if clanfound .and. substr(upper(string),1,7) == "#DEFINE"
  298.        i = 3
  299.        hstring = ""
  300.        do while .not. empty(token(string," ",i))
  301.           hstring = hstring + " " + token(string," ",i)
  302.           i ++
  303.        enddo
  304.        hstring = alltrim(hstring)
  305.        stringpos = 0
  306.        for i = 1 to len(odef)
  307.           if odef[i,1] == alltrim(token(string," ",2)) .and. .not. odef[i,3]
  308.              stringpos = i
  309.              exit
  310.           endif
  311.        next
  312.        if numat("'",string) > 0
  313.           if printit
  314.              set print on
  315.           endif
  316.           ?? alltrim(upper(datei)) + " Lan: "+ clan+ " (" + alltrim(str(clinenum)) + ")" +;
  317.              " Error : >'< found "
  318.           ? "    DEFINE : " + token(string," ",2)
  319.           ? "    STRING : " + hstring
  320.           ?
  321.           if printit
  322.              set print off
  323.           endif
  324.        endif
  325.        if stringpos = 0
  326.           if printit
  327.              set print on
  328.           endif
  329.           ?? alltrim(upper(datei)) + " Lan: "+ clan+ " (" + alltrim(str(clinenum)) + ")" +;
  330.              " Warning : Define not in original language "
  331.           ? "    DEFINE : " + token(string," ",2)
  332.           ? "    STRING : " + hstring
  333.           ?
  334.           if printit
  335.              set print off
  336.           endif
  337.        else
  338.           odef [stringpos,3] = .t.
  339.           if odef[stringpos,2] = "N"
  340.              if hstring # alltrim(str(val(hstring)))
  341.                 if printit
  342.                    set print on
  343.                 endif
  344.                 ?? alltrim(upper(datei)) + " Lan: "+ clan+ " (" + alltrim(str(clinenum)) + ")" +;
  345.                    " Error : Wrong type found "
  346.                 ? "    DEFINE : " + token(string," ",2)
  347.                 ? "    STRING : " + hstring
  348.                 ?
  349.                 if printit
  350.                    set print off
  351.                 endif
  352.              endif
  353.           elseif odef[stringpos,2] = "S"
  354.              if hstring = alltrim(str(val(hstring)))
  355.                 if printit
  356.                    set print on
  357.                 endif
  358.                 ?? alltrim(upper(datei)) + " Lan: "+ clan+ " (" + alltrim(str(clinenum)) + ")" +;
  359.                    " Error : Wrong type found "
  360.                 ? "    DEFINE : " + token(string," ",2)
  361.                 ? "    STRING : " + hstring
  362.                 ?
  363.                 if printit
  364.                    set print off
  365.                 endif
  366.              elseif numat(chr(34),hstring) > 0
  367.                 if numat(chr(34),hstring) # int(numat(chr(34),hstring)/2)*2
  368.                    if printit
  369.                       set print on
  370.                    endif
  371.                    ?? alltrim(upper(datei)) + " Lan: "+ clan+ " (" + alltrim(str(clinenum)) + ")" +;
  372.                       " Error : Unterminated string"
  373.                    ? "    DEFINE : " + token(string," ",2)
  374.                    ? "    STRING : " + hstring
  375.                    ?
  376.                    if printit
  377.                       set print off
  378.                    endif
  379.                 endif
  380.              else
  381.                 if printit
  382.                    set print on
  383.                 endif
  384.                 ?? alltrim(upper(datei)) + " Lan: "+ clan+ " (" + alltrim(str(clinenum)) + ")" +;
  385.                    " Error : Wrong type found "
  386.                 ? "    DEFINE : " + token(string," ",2)
  387.                 ? "    STRING : " + hstring
  388.                 ?
  389.                 if printit
  390.                    set print off
  391.                 endif
  392.              endif
  393.           elseif odef[stringpos,2] = "C"
  394.              if hstring = alltrim(str(val(hstring)))
  395.                 if printit
  396.                    set print on
  397.                 endif
  398.                 ?? alltrim(upper(datei)) + " Lan: "+ clan+ " (" + alltrim(str(clinenum)) + ")" +;
  399.                    " Error : Wrong type found "
  400.                 ? "    DEFINE : " + token(string," ",2)
  401.                 ? "    STRING : " + hstring
  402.                 ?
  403.                 if printit
  404.                    set print off
  405.                 endif
  406.              elseif numat(chr(34),hstring) > 0
  407.                 if printit
  408.                    set print on
  409.                 endif
  410.                 ?? alltrim(upper(datei)) + " Lan: "+ clan+ " (" + alltrim(str(clinenum)) + ")" +;
  411.                    " Error : Wrong type found "
  412.                 ? "    DEFINE : " + token(string," ",2)
  413.                 ? "    STRING : " + hstring
  414.                 ?
  415.                 if printit
  416.                    set print off
  417.                 endif
  418.              endif
  419.           endif
  420.        endif
  421.     endif
  422.  enddo
  423.  
  424.  for i = 1 to len(odef)
  425.     if .not. odef[i,3]
  426.        if printit
  427.           set print on
  428.        endif
  429.        ?? alltrim(upper(datei)) + " Lan: " + clan +;
  430.           " Error : Define in Checking Language missing "
  431.        ? "    DEFINE : " + odef[i,1]
  432.        ?
  433.        if printit
  434.           set print off
  435.        endif
  436.     endif
  437.  next
  438.  
  439.  @ row(),0 say "End of checking                                    "
  440.  
  441.  quit
  442.  
  443. *-------------------------------------------------------------------------
  444. *   Datum         : 1992.1.17
  445. *   Parameter     : 
  446. *   Returnwert    : 
  447. *   Aufgerufene Funktionen : 
  448. *   Kurze Beschreibung     : 
  449. *-------------------------------------------------------------------------
  450.  
  451.  function readline
  452.  
  453.  private string ,char1
  454.  
  455.  string = ""
  456.  
  457.  char1 = freadstr(fc,1)
  458.  fianzbyte = fianzbyte + 1
  459.  aktlen = aktlen + 1
  460.  
  461.  do while char1 # chr(13) .and. aktlen <= filelen
  462.     if asc(char1) > 31
  463.        string = string + char1
  464.     endif
  465.     char1 = freadstr(fc,1)
  466.     fianzbyte = fianzbyte + 1
  467.     aktlen = aktlen + 1
  468.  enddo
  469.  
  470.  return string
  471.