home *** CD-ROM | disk | FTP | other *** search
- ***************************************************************
- ** DBASE-MM.PRG - JOHN SCHNELL - 1983 **
- ** program to convert dBASE.DBF files to MAILMERGE.TXT files **
- ** **
- ** datafile needed: TEMPLATE.DBF (zero records) **
- ** one fieldname: CONCAT,C,100 (increase size up to 254 **
- ** characters, to equal maxlength field) **
- ***************************************************************
-
- ERASE
- SET TALK OFF
- SET ECHO OFF
- SET BELL OFF
- SET CONFIRM ON
- SET DEFAULT TO B:
- CLEAR
- STORE 100 TO maxlength
-
- *******************************
- * get name of file to convert *
- *******************************
- STORE F TO ok
- DO WHILE .NOT. ok
- STORE ' ' TO filename
- @ 01,05 SAY 'Enter name of dBASE file to convert to MAILMERGE file';
-
- GET filename
- READ
- ERASE
- @ 01,05 SAY 'Insert diskette with .DBF file into drive B:, push any key'
- SET CONSOLE OFF
- WAIT
- SET CONSOLE ON
- IF FILE('&filename')
- STORE T TO ok
- ELSE
- ERASE
- ? CHR(7)
- @ 01,00 SAY '!!Sorry, only these .DBF files are on this disk,';
- +'please try again !!'
- ?
- LIST FILES LIKE *.dbf
- STORE 100 TO delay
- DO WHILE delay > 0
- STORE delay-1 TO delay
- ENDDO delay > 0
- ERASE
- ENDIF FILE('&filename')
- ENDDO .NOT. ok
-
- *************************************************
- * read file structure and get fields to convert *
- *************************************************
- ERASE
- SET CONFIRM OFF
- ? '=== Retrieving database record structure ==='
- USE &filename
- COPY STRUCTURE EXTENDED TO tempstru USE tempstru
- STORE F TO ok
- DO WHILE .NOT. ok
- STORE 0 TO count
- STORE 2 TO offset
- STORE 0 TO length
- GOTO TOP
- ERASE
- @ 01,01 SAY ' FIELDNAME / TYPE / LENGTH ';
- +'- Please identify fields you wish to convert.'
- DO WHILE .NOT. eof
- STORE 'N' TO include
- @ #+(offset),01 SAY str(#,2)+'. '+field:name+' '+field:type+' ';
- +STR(field:len,3)+' -- Include in MailMerge file (Y/N) ';
- GET include
- READ
- IF !(include) = 'Y'
- IF field:type = 'C'
- STORE 'var'+STR(count+10,2) TO variable
- STORE field:name TO &variable
- STORE length+field:len TO length
- STORE count+1 to count
- ENDIF field:type = 'C'
- IF field:type = 'N'
- STORE 'var'+STR(count+10,2) TO variable
- STORE 'STR('+field:name;
- +','+STR(field:len,2);
- +','+STR(field:dec,2)+')' TO &variable
- STORE length+field:len TO length
- STORE count+1 TO count
- ENDIF field:type = 'N'
- ENDIF !(include) = 'Y'
- SKIP
- IF # = 20
- ERASE
- STORE -19 TO offset
- ENDIF # = 20
- ENDDO .NOT. eof
- @ 24,10 SAY 'Is the above correct ???';
- GET ok
- READ
- IF length > maxlength
- STORE F TO ok
- ERASE
- ? CHR(7)
- ? 'Concatenated string too long, ';
- +'eliminate'+STR(length - maxlength,3);
- +' characters from selected fields'
- STORE 100 TO delay
- DO WHILE delay > 0
- STORE delay-1 TO delay
- ENDDO delay > 0
- ERASE
- ENDIF length > maxlength
-
- ENDDO .NOT. ok
- USE
- DELETE FILE tempstru
-
- ********************************************************
- * convert fields to one concatenated field in tempfile *
- ********************************************************
- ERASE
- ? '=== Creating tempfile ===== '
- ?
- USE template
- COPY STRUCTURE TO tempfile
- USE
- ERASE
- ? '=== Creating concatenated records ====='
- ?
- SELECT PRIMARY
- USE &filename
- SELECT SECONDARY
- USE tempfile
- SELECT PRIMARY
- GOTO TOP
- DO WHILE .NOT. eof .AND. count > 0
- STORE '"' TO m:concat
- STORE 0 TO loop
- DO WHILE count > loop
- STORE 'var'+STR(loop+10,2) TO variable
- STORE &variable TO variable
- STORE m:concat-&variable TO m:concat
- STORE loop+1 TO loop
- IF count > loop
- STORE m:concat-'","' TO m:concat
- ELSE
- STORE m:concat-'"' TO m:concat
- ENDIF count > loop
- ENDDO count > loop
- SELECT SECONDARY
- APPEND BLANK
- REPLACE concat WITH m:concat
- ? m:concat
- SELECT PRIMARY
- SKIP
- ENDDO .NOT. eof .AND count > 0
- SELECT PRIMARY
- USE
-
- ************************************************
- * copy concatenated .DBF file to .SDF/.MM file *
- ************************************************
- STORE F TO ok
- DO WHILE .NOT. ok
- ERASE
- STORE " " TO mmfilename
- SET CONFIRM ON
- @ 01,05 SAY 'What name do you want for the MailMerge .TXT file ? ';
- GET mmfilename
-
- READ
- SET CONFIRM OFF
- @ 03,05 SAY 'Is '+!(mmfilename)-'.TXT correct (Y/N) '; GET ok
- READ
- ENDDO .NOT. ok
- ERASE
- @ 01,05 SAY !(mmfilename)-'.TXT file now being created, please stand-by'
- SELECT SECONDARY
- COPY TO &mmfilename SDF delimited with ,
- USE
- DELETE FILE tempfile
- ERASE
- @05,05 SAY 'dBASE to MailMerge file conversion is complete'
- SET INTENSITY OFF
- CLEAR
- RELEASE ALL
- LETE FILE tempfile
- ERAS