home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug061.arc / DBFTOTXT.CMD < prev    next >
OS/2 REXX Batch file  |  1979-12-31  |  4KB  |  182 lines

  1. ERASE
  2. SET TALK OFF
  3. SET ECHO OFF
  4. SET BELL OFF
  5. SET CONFIRM ON
  6. SET DEFAULT TO A:
  7. CLEAR
  8. STORE 240 TO maxlength
  9. *
  10. * etsi muunnettavan tiedoston nimi*
  11. *
  12. STORE F TO ok
  13. DO WHILE .NOT. ok
  14.   STORE '        ' TO filename
  15. @ 02,06 SAY 'Mink{ dBASE.DBF muunnat MailMerge.TXTiksi >> ';
  16.   GET filename
  17.   READ
  18.   ERASE
  19.   @ 04,06 SAY 'Varmistu, ett{ valittu .DBF-tiedosto on A:ssa! '
  20.   SET CONSOLE OFF
  21.   WAIT
  22.   SET CONSOLE ON
  23.   IF FILE('&filename')
  24.     STORE T TO ok
  25.   ELSE
  26.     ERASE
  27.     ? CHR(7)
  28.     @ 01,00 'Levyll{ ovat ainoastaan n{m{ .DBF-tiedostot:'
  29.   ?
  30.   LIST FILES LIKE *.dbf
  31.   STORE 100 TO delay
  32.   DO WHILE delay > 0
  33.     STORE delay-1 TO delay
  34.   ENDDO delay > 0
  35.   ERASE
  36.   ENDIF FILE('&filename')
  37. ENDDO .NOT. ok
  38. *
  39. * lue tiedoston rakenne ja valitse muunnettavat kent{t
  40. *
  41. ERASE
  42. SET CONFIRM OFF
  43. ? ' *** Tutkitaan .DBF-tiedoston rakenne ***'
  44. USE &filename
  45. COPY STRUCTURE EXTENDED TO tempstru
  46. USE tempstru
  47. STORE F TO ok
  48. DO WHILE .NOT. ok
  49.   STORE 0 TO count
  50.   STORE 2 TO offset
  51.   STORE 0 TO length
  52.   GOTO TOP
  53.   ERASE
  54. @ 01,01 SAY '  TIEDOSTO/TYYPPI/PITUUS';
  55.   + ' - Ilmoita mitk{ kentist{ valitaan mukaan.'
  56.   DO WHILE .NOT. eof
  57.   STORE 'E' TO include
  58.   @ # +(offset),01 SAY STR(#,2)+'.'+field:name+' '+field:type+' ';
  59.       +STR(field:len,3)+' luetaan MailMerge-tiedostoksi (K/E)  ';
  60.   GET include
  61.   READ
  62.   IF    !(include)='K'
  63.    IF   field:type='C'
  64.       STORE 'var'+STR(count+10,2) TO variable
  65.       STORE field:name TO &variable
  66.       STORE length+field:len TO length
  67.       STORE count+ 1 TO count
  68.    ENDIF field:type='C'
  69.    IF   field:type='E'
  70.       STORE 'var'+STR(count+10,2) TO variable
  71.       STORE 'STR('+field:name;
  72.         +','+STR(field:len,2);
  73.         +','+STR(field:dec,2)+')' TO &variable
  74.       STORE length+field:len TO length
  75.       STORE COUNT+1 TO count
  76.    ENDIF field:type='E'
  77. ENDIF !(include)='K'
  78. SKIP
  79. IF # = 20
  80.   ERASE
  81.   STORE -19 TO offset
  82. ENDIF # = 20     
  83. ENDDO .NOT. eof
  84. @ 24,10 SAY 'Meniv{tk| valinnat t(iptop) vai f(ibaan) ';
  85. GET ok
  86. READ
  87. IF length>maxlength
  88.   STORE F TO ok
  89.   ERASE
  90.   ? CHR(7)
  91.   ? 'MM-tietueesta tulee liian pitk{, ';
  92.     + 'lyhenn{ '+STR(length-maxlength,3);
  93.     + ' merkill{ kentti{!'
  94.   STORE 100 TO DELAY
  95.   DO WHILE delay>0
  96.     STORE delay-1 TO delay
  97.   ENDDO delay>0
  98.   ERASE
  99.   ENDIF length>maxlength
  100. ENDDO .NOT. ok
  101. USE
  102. DELETE FILE tempstru
  103. *
  104. * saumaa kent{t yhdeksi v{liaikaiskent{ksi
  105. *
  106. ERASE
  107. ? ' ***  Rakennetaan v{liaikaistiedostoa ***'
  108. ?
  109. USE template
  110. COPY STRUCTURE TO tempfile
  111. USE
  112. ERASE
  113. ? ' ***  Tietueet saatetaan yhteen ***'
  114. ?
  115. SELECT PRIMARY
  116. USE &filename
  117. SELECT SECONDARY
  118. USE tempfile
  119. SELECT PRIMARY
  120. GOTO TOP
  121. DO WHILE .NOT. eof .AND. count>0
  122.   STORE '"' TO m:concat
  123.   STORE 0 TO loop
  124.   DO WHILE count>loop
  125.     STORE 'var'+STR(loop+10,2) TO variable
  126.     STORE &variable TO variable
  127.     STORE m:concat-&variable TO m:concat        
  128.     STORE loop+1 TO loop
  129.     IF count>loop
  130.       STORE m:concat-'","' TO m:concat
  131.     ELSE
  132.       STORE m:concat-'"' TO m:concat
  133.     ENDIF count>loop
  134.   ENDDO count>loop
  135.   SELECT SECONDARY
  136.   APPEND BLANK
  137.   REPLACE concat WITH m:concat
  138.   ? m:concat
  139.   SELECT PRIMARY
  140.   SKIP
  141.   ENDDO .NOT. eof .AND. count>0
  142. SELECT PRIMARY
  143. USE
  144. *
  145. * kopioi saumattu .DBF-tiedosto .SDF/.MM-tiedostoksi
  146. *
  147. STORE F TO ok
  148. DO WHILE .NOT. ok
  149.   ERASE
  150.   STORE "        " TO mmfilename
  151.   SET CONFIRM ON
  152.   @ 01,05 SAY 'Nime{ uusi MailMergen .TXT-tyypin tiedosto: ';
  153.   GET mmfilename
  154.   READ
  155.   SET CONFIRM OFF
  156.   @ 03,05 SAY 'Siis '+!(mmfilename)-'.TXT, T(osi) vai F(iba)? ' GET ok
  157.   READ
  158. ENDDO .NOT. ok
  159. ERASE
  160. @ 01,05 SAY !(mmfilename)-'.TXT rakentuu parhaillaan. Hetki vain!'
  161. SELECT SECONDARY
  162. COPY TO &mmfilename SDF DELIMITED WITH ,
  163. USE 
  164. DELETE FILE tempfile
  165. ERASE
  166. @ 05,05 SAY ' *** dBASE-tietosi ovat nyt my|s MailMerge-k{yt|ss{ *** '
  167. @ 07,05 SAY '      (Tarkista vaikka allaolevasta hakemistosta!)'
  168. SET INTENSITY OFF
  169. LIST FILES LIKE *.txt
  170. CLEAR
  171. RELEASE ALL
  172. QUIT
  173. A:ssa! '
  174.   SET CONSOLE OFF
  175.   WAIT
  176.   SET CONSOLE ON
  177.   IF FILE('&filename')
  178.     STORE T TO ok
  179.   ELSE
  180.     ERASE
  181.     ? CHR(7)
  182.     @ 0