home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: InfoMgt / InfoMgt.zip / pmmeal10.zip / cnvkochb.cmd next >
OS/2 REXX Batch file  |  1994-07-15  |  9KB  |  302 lines

  1. /*   */
  2.  
  3. anzarg=arg();
  4. if anzarg=0 | arg(1)="?" | arg(1)="/?" then do
  5.     say "Konvertierungsprogramm für die PC-KOCHBUCH-Reihe von BOEDER"
  6.     say "Das Programm Schreibt die Daten in das Meal-Master-Format"
  7.     say ""
  8.     say "In Abwandlung zum Orginalformat werden die Bild-Informationen"
  9.     say "mitabgespeichert."
  10.     say ""
  11.     say "PMMEAL wertet diese Bild-Informationen aus. (ab Version 0.9)"
  12.     say ""
  13.     say "SYNTAX : CNVKOCHB.CMD <rezdatei> <mmrdatei> [<einheitenfehler>]"
  14.     say "         <rezdatei>    Die KOCHBUCH-Rezeptdatei"
  15.     say "         <mmrdatei>    die Ausgabedatei"
  16.     say "  <einheitenfehler>    1 = Fehlerhafte Einheiten werden durch"
  17.     say "                           Leerstellen ersetzt. "
  18.     signal ende
  19. end
  20.  
  21. parse value arg(1) with filename" "output" "eherror
  22. if output="" then output="MMREZEPT.ASC"
  23. eherror=\(eherror<>"")
  24.  
  25. kochbuch.0=33
  26. kochbuch.1="";                         einheit.1="xx"
  27. kochbuch.2="EL";                       einheit.2="tb"
  28. kochbuch.3="TL";                       einheit.3="ts"
  29. kochbuch.4="TASSE";                    einheit.4="c "
  30. kochbuch.5="TASSEN";                   einheit.5="c "
  31. kochbuch.6="G";                        einheit.6="g "
  32. kochbuch.7="KG";                       einheit.7="kg"
  33. kochbuch.8="PRISE";                    einheit.8="pn"
  34. kochbuch.9="PRISEN";                   einheit.9="pn"
  35. kochbuch.10="L";                       einheit.10="l "
  36. kochbuch.11="ML";                      einheit.11="ml"
  37. kochbuch.12="DOSE";                    einheit.12="cn"
  38. kochbuch.13="STÜCK";                   einheit.13="x "
  39. kochbuch.14="STÜCKE";                  einheit.14="x "
  40. kochbuch.15="STÜCKCHEN";               einheit.15="x "
  41. kochbuch.16="STANGE";                  einheit.16=""
  42. kochbuch.17="STANGEN";                 einheit.17=""
  43. kochbuch.18="SCHEIBE";                 einheit.18="sl"
  44. kochbuch.19="SCHEIBEN";                einheit.19="sl"
  45. kochbuch.20="SCHALE";                  einheit.20=""
  46. kochbuch.21="TROPFEN";                 einheit.21="dr"
  47. kochbuch.22="BD";                      einheit.22="bn"
  48. kochbuch.23="BUND";                    einheit.23="bn"
  49. kochbuch.24="BLOCK";                   einheit.24=""
  50. kochbuch.25="MSP";                     einheit.25="pn"
  51. kochbuch.26="BLÄTTER";                 einheit.26=""
  52. kochbuch.27="STENGEL";                 einheit.27=""
  53. kochbuch.28="SPRITZER";                einheit.28="ds"
  54. kochbuch.29="PK";                      einheit.29="pk"
  55. kochbuch.30="PÄCKCHEN";                einheit.30="pk"
  56. kochbuch.31="GLAS";                    einheit.31=""
  57. kochbuch.32="GLÄSER";                  einheit.32=""
  58. kochbuch.33="-";                       einheit.33=""
  59.  
  60. meal.yield="Personen"
  61. meal.titel=""
  62. meal.category.0=0
  63. meal.ingred.0=0
  64. meal.direct.0=0
  65. meal.pict=""
  66. c=0
  67. i=0
  68. d=0
  69. zt=""
  70. vg=""
  71. eh=";"
  72. call stream filename,"C","Open read"
  73. do while lines(filename)
  74.   xx=linein(filename)
  75.   art=left(xx,3)
  76.   text=translate(strip(substr(xx,5)),"ÄÖÜäöüß°","─╓▄Σ÷ⁿ▀░")
  77.   select
  78.     when art="-- " then
  79.       if meal.titel<>"" then do
  80.         p=0
  81.         vg=strip(vg,"L")" "
  82.         d=d+1
  83.         meal.direct.d=""
  84.         x=pos("+",vg)
  85.         do while x<>0
  86.           vg=left(vg,x-1)substr(vg,x+1)
  87.           x=pos("+",vg,x)
  88.         end
  89.         do until vg=""
  90.           d=d+1
  91.           t=lastpos(" ",vg,75)
  92.           if p>0 then do
  93.             meal.direct.d=""
  94.             p=0;
  95.           end; else do
  96.             p=pos("\",left(vg,t))
  97.             if p>0 then t=p
  98.             meal.direct.d=left(vg,t-1)
  99.             vg=substr(vg,t+1)
  100.           end
  101.         end
  102.         meal.category.0=c
  103.         meal.ingred.0=i
  104.         meal.direct.0=d
  105.         call saveindex
  106.         meal.titel=""
  107.         meal.pict=""
  108.         meal.category.0=0
  109.         meal.ingred.0=0
  110.         meal.direct.0=0
  111.         c=0
  112.         i=0
  113.         d=0
  114.         zt=""
  115.       end
  116.     when art=";NA" then
  117.       meal.titel=text
  118.     when art=";TY" | art=";BK" then do
  119.       c=c+1
  120.       text=word(text,1)
  121.       if length(text)>11 then do
  122.         x=pos("gericht",text)
  123.         if x>2 then text=left(text,x-1)
  124.       end
  125.       meal.category.c=strip(left(text,11))
  126.     end
  127.     when art=";PS" then
  128.       meal.anzyield=text
  129.     when art=";SV" then do
  130.       d=d+1;  meal.direct.d=""
  131.       d=d+1;  meal.direct.d="Serviervorschlag :"
  132.       d=d+1;  meal.direct.d=text
  133.     end
  134.     when art=";BG" then do
  135.       d=d+1;  meal.direct.d=""
  136.       d=d+1;  meal.direct.d="Benötigte Gerätschaften :"
  137.       d=d+1;  meal.direct.d=text
  138.     end
  139.     when art=";ZT" then do
  140.       i=i+1;  meal.ingred.i=text
  141.       meal.anz.i="       "
  142.       meal.einheit.i="  "
  143.       if zt="" then
  144.         zt=text
  145.       else
  146.        zt=zt", "text
  147.     end
  148.     when art=";ME" then do
  149.       parse value text with meal.anz.i" "e
  150.       meal.anz.i=right(meal.anz.i,7)
  151.       if meal.anz.i="      -" then
  152.         meal.anz.i=left("",7)
  153.       ok=testzahl(meal.anz.i)
  154.       ok2=0
  155.       if ok then do
  156.         if anzpkt=0 & anzsch=0 & e<>"" then do
  157.           ok2=testzahl(word(e,1))
  158.           if ok2 then do
  159.             meal.anz.i=right(strip(meal.anz.i)" "word(e,1),7)
  160.             e=strip(substr(e,pos(" ",e)+1))
  161.           end
  162.         end
  163.       end; else do
  164.         e=text
  165.         meal.anz.i=left("",7)
  166.       end
  167.       et=translate(e)
  168.       et=translate(et,"ÄÖÜ","äöü")
  169.       found=0;  n=0;
  170.       do until found | n=kochbuch.0
  171.         n=n+1;
  172.         found=et=kochbuch.n
  173.       end
  174.       me=meal.ingred.i
  175.       if found then do
  176.         if einheit.n<>"" then
  177.           if einheit.n="xx" then
  178.             meal.einheit.i="  "
  179.           else
  180.             meal.einheit.i=einheit.n
  181.         else do
  182.           meal.einheit.i="  "
  183.           me=e" "me
  184.         end
  185.       end; else do
  186.         if eherror then
  187.           meal.einheit.i="__"
  188.         else
  189.           meal.einheit.i="  "
  190.         me=e" "me
  191.         if pos(";"e";",eh)=0 then
  192.           eh=eh||e";"
  193.       end
  194.       me=me" "
  195.       do until me="- "
  196.         t=lastpos(" ",me,28)
  197.         meal.ingred.i=left(me,t-1)
  198.         i=i+1
  199.         meal.anz.i=left("",7)
  200.         meal.einheit.i="  "
  201.         me="- "substr(me,t+1)
  202.       end
  203.       i=i-1
  204.       zt=zt"("text")"
  205.     end
  206.     when art=";VG" | art=";VO" then do
  207.       x=lastpos(", ",zt)
  208.       if x>0 then zt=left(zt,x-1)" und "substr(zt,x+2)
  209.       vg=vg" "zt" "text
  210.       zt=""
  211.     end
  212.     when art=";BI" then do
  213.       meal.pict=text
  214.     end
  215.     when art=";Z1" then do
  216.       d=d+1;  meal.direct.d="Kochzeit : "text" min"
  217.     end
  218.     when art=";Z2" then do
  219.       d=d+1;  meal.direct.d="Gesamt   : "text" min"
  220.     end
  221.     when art=";Z3" then do
  222.       d=d+1;  meal.direct.d="Ruhezeit : "text" min"
  223.     end
  224.     otherwise
  225.       say xx
  226.   end
  227. end
  228. call lineout "Kochbuch.err",eh
  229. signal ende
  230.  
  231. makerezept: procedure expose meal.
  232.     crlf="0d0a"x
  233.     t=0
  234.     if strip(meal.titel)="" then meal.titel="Titel unbekannt"
  235.     meal=right("Title: ",12)meal.titel||crlf
  236.     meal=meal||right("Categories: ",12)meal.category.1
  237.     do n=2 to meal.category.0
  238.       if meal.category.n<>"" then meal=meal", "meal.category.n
  239.     end
  240.     meal=meal||crlf
  241.     meal=meal||right("Yield: ",12)strip(meal.Anzyield)" "meal.Yield||crlf
  242.     meal=meal||crlf
  243.     do n=1 to meal.ingred.0
  244.       eh=meal.einheit.n
  245.       az=meal.anz.n
  246.       if az="-------" then do
  247.         meal=meal||center(strip(meal.ingred.n),75,"-")||crlf
  248.       end; else do
  249.  
  250.         meal=meal||az" "eh" "meal.ingred.n||crlf
  251.       end
  252.     end
  253.     meal=meal||crlf
  254.     if meal.pict<>"" then
  255.       meal=meal"-----PICTURE: "left(meal.pict,60,"-")||crlf||crlf
  256.     do n=1 to meal.direct.0
  257.       xx=strip(meal.direct.n,"T")
  258.       if xx<>"" & left(xx,1)=" " then 
  259.         xx=":"substr(xx,2)
  260.       meal=meal||"  "xx||crlf
  261.     end
  262. return meal
  263.  
  264. saveindex:
  265.     call lineout output,"----- PMMEAL-Rezept. Ausgabe im Meal-Masterformat -----"
  266.     call lineout output,""
  267.     call lineout output,makerezept()
  268.     call lineout output,"-----"
  269.     call lineout output,""
  270. return
  271.  
  272. testzahl: procedure expose error meal. anzpkt anzsch
  273.     test=arg(1)
  274.     error=0
  275.     if test<>"" & substr(test,8,1)=" " & substr(test,11,1)=" " & substr(test,40,2)="  "& substr(test,49,1)=" " & substr(test,52,1)=" " then do  
  276.       test=left(test,7)
  277.       if test<>"       " then do
  278.         anzpkt=0
  279.         anzsch=0
  280.         do m=1 to 7
  281.           x=substr(test,m,1)
  282.           if (x<0 | x>9) & x<>"." & x<>" " & x<>"/" then do
  283.             error=6
  284.             m=8
  285.           end; else do
  286.             if x="." then anzpkt=anzpkt+1
  287.             if x="/" then anzsch=anzsch+1
  288.           end
  289.         end
  290.         if error=0 then do
  291.           if anzpkt>1 then error=7
  292.           if anzsch>1 then error=8
  293.         end
  294.       end
  295.     end; else
  296.       error=-1
  297.     found=error=0
  298. return found
  299.  
  300.  
  301. ende:
  302.