home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / dbutil.zip / COPYFLD.CMD next >
OS/2 REXX Batch file  |  1987-02-14  |  4KB  |  130 lines

  1. * COPYFLD.CMD
  2. * Copyright 1983 by Kenneth Eagle 
  3. *       2304 Rockwell Road         (302) 475-2763
  4. *       Wilmington, DE. 19810
  5. * This program is contributed to the public domain with the
  6. * restriction that it may not be used for commercial purposes
  7. * without written permission from the author.
  8. *
  9. ? "A dBASEII program to copy field(s) from one file to another"
  10. ? "Both files must contain a common 'KEY FIELD'."
  11. ? "Both files must be in order of (or indexed on) 'KEYFIELD'."
  12. ? "  (the program will do this on a temporary basis if you like)"
  13. ? "FROM file must have a KEYFIELD entry for every one in the TO file."
  14. ? "As presently programmed, the TO file must already be structured"
  15. ? "with the field to be copied into already created (filled or empty)"
  16. ?
  17. ACCEPT "Input the name of the file you want to copy from " TO FROMFILE
  18. ?
  19. ACCEPT "Input the name of the file you want to copy to " TO TOFILE
  20. ?
  21. ACCEPT "Input the name of the KEY (common) field " TO KEYFIELD
  22. ?
  23. ? "Input the name of the field(s) to be copied from &FROMFILE"
  24. ? "    ( e.g. NAME or LASTNAME-','-FIRSTNAME )"
  25. ACCEPT TO FROMFIELD
  26. ?
  27. ? "Input the name of the field in &TOFILE to be filled"
  28. ? "    ( Must already exist. - Default is &FROMFIELD )"
  29. ACCEPT TO TOFIELD
  30. SET TALK OFF
  31. IF TOFIELD = " "
  32.  STORE FROMFIELD TO TOFIELD
  33. ENDIF
  34. STORE "N" TO ANSWER1 ,ANSWER2
  35. STORE "Y" TO ANSWER3
  36. SELECT SECONDARY
  37. ?
  38. ? "Are you SURE that &FROMFILE is in order of &KEYFIELD ?"
  39. ? "               (Answer Y for yes or N for no)"
  40. WAIT TO ANSWER1
  41. STORE !(ANSWER1) TO ANSWER1
  42. USE &FROMFILE
  43. IF ANSWER1 <> "Y"
  44.  ? "Temporarily indexing &FROMFILE on &KEYFIELD to TEMP#1.NDX"
  45.  ? "  (TEMP#1.NDX normally deleted at end of program)"
  46.  INDEX ON &KEYFIELD TO TEMP#1
  47.  ? CHR(7)
  48. ENDIF
  49. GOTO TOP
  50. SELECT PRIMARY
  51. ?
  52. ? "Are you SURE that &TOFILE is in order of &KEYFIELD ?"
  53. ? "               (Answer Y for yes or N for no)"
  54. WAIT TO ANSWER2
  55. STORE !(ANSWER2) TO ANSWER2
  56. USE &TOFILE
  57. IF ANSWER2 <> "Y"
  58.  ? "Temporarily indexing &TOFILE on &KEYFIELD to TEMP#2.NDX"
  59.  ? "  (TEMP#2.NDX normally deleted at end of program)"
  60.  INDEX ON &KEYFIELD TO TEMP#2
  61.     ? CHR(7)
  62. ENDIF
  63. ?
  64. ? "Do you want a display on the screen as the program runs?"
  65. ? "              (Answer Y for yes or N for no)"
  66. WAIT TO ANSWER3A
  67. IF ANSWER3A <> " "
  68.     STORE !(ANSWER3A) TO ANSWER3
  69. ENDIF
  70. ?
  71. GOTO TOP
  72. ? "Program is running"
  73. * ------- LOOP SECTION ---------------------------------------
  74. DO WHILE  .NOT. EOF
  75.     SELECT SECONDARY
  76.     STORE &KEYFIELD TO SKEYFIELD
  77.     STORE &FROMFIELD TO SFROMFIELD
  78.     SELECT PRIMARY
  79.     DO WHILE &KEYFIELD <> SKEYFIELD
  80.         IF ( SKEYFIELD > &KEYFIELD ) .OR. EOF
  81.             * ---- Keyfield in TO file not in FROM file -------
  82.             ? KEYFIELD,&KEYFIELD," NOT FOUND"
  83.             * (Next 4 lines necessary to 'free' .NDX files)
  84.             SELECT SECONDARY
  85.             USE
  86.             SELECT PRIMARY
  87.             USE &TOFILE
  88.             IF ANSWER1 <> "Y"
  89.                 DELETE FILE TEMP#1.NDX
  90.             ENDIF
  91.             IF ANSWER2 <> "Y"
  92.                 DELETE FILE TEMP#2.NDX
  93.             ENDIF
  94.             SET TALK ON
  95.             ? CHR(7),"PROGRAM ABORTED !"
  96.             RETURN
  97.         ENDIF
  98.         * ---- Pick up FROMFIELD data -------------------------
  99.         SELECT SECONDARY
  100.         SKIP
  101.         STORE &KEYFIELD TO SKEYFIELD
  102.         STORE &FROMFIELD TO SFROMFIELD
  103.         SELECT PRIMARY
  104.     LOOP
  105.     ENDDO
  106.     * ---- Match found. Transfer data -----------------------------
  107.     REPLACE &TOFIELD WITH SFROMFIELD
  108.     IF ANSWER3 = "Y"
  109.         ? #,&KEYFIELD, &TOFIELD
  110.     ENDIF
  111.     * ---- Go to next record in TO file ---------------------------
  112.     SKIP
  113. LOOP
  114. ENDDO
  115. * ---- WRAPUP ---------------------------------
  116. * (Next 4 lines necessary to 'free' .NDX files)
  117. SELECT SECONDARY
  118. USE
  119. SELECT PRIMARY
  120. USE &TOFILE
  121. IF ANSWER1 <> "Y"
  122.     DELETE FILE TEMP#1.NDX
  123. ENDIF
  124. IF ANSWER2 <> "Y"
  125.     DELETE FILE TEMP#2.NDX
  126. ENDIF
  127. SET TALK ON
  128. ? CHR(7),"Program is done."
  129. RETURN
  130.