home *** CD-ROM | disk | FTP | other *** search
/ Software Du Jour / SoftwareDuJour.iso / BUSINESS / DBASE / DBAPG.ARC / NAMEGEN2.PRG < prev    next >
Text File  |  1984-12-17  |  4KB  |  132 lines

  1. * Program..: NAMEGEN2.PRG
  2. * Author...: Tom Rettig
  3. * Date.....: March 28, 1984
  4. * Notice...: Copyright 1984 by Tom Rettig & Associates.  All rights reserved.
  5. * Version..: dBASE II, version 2.4x
  6. * Notes....: For generating memory variable names from datafile
  7. *            field names, and writing the memory variable 
  8. *            initialization routines and the STORE and REPLACE code.
  9. *
  10. *            Saves the output in a text file with the same name as
  11. *            the database file and a .TXT extension.
  12. *
  13. * Establish working environment, and prompt for data file name...
  14. SET TALK OFF
  15. CLEAR
  16. ACCEPT "Enter [drive:]<data file name> with no extension -->" TO datafile
  17. STORE !(TRIM(datafile)) + ".DBF" TO datafile
  18. *
  19. * Open the file if it exists, otherwise exit...
  20. IF FILE("&datafile")
  21.    USE &datafile
  22. ELSE
  23.    ? datafile + " does not exist where I'm looking for it."
  24.    SET TALK ON
  25.    RETURN
  26. ENDIF
  27. *
  28. * Copy to a structure extended file to access the fieldnames...
  29. COPY TO Temp STRUCTURE EXTENDED
  30. USE Temp
  31. *
  32. * Convert field names to lower case...
  33. ERASE
  34. @ 1, 0 SAY "========================================"+;
  35.            "========================================"
  36. @ 2, 0 SAY "||"
  37. @ 2,19 SAY "C H A N G I N G   T O   L O W E R   C A S E"
  38. @ 2,78 SAY "||"
  39. @ 3, 0 SAY "========================================"+;
  40.            "========================================"
  41. *
  42. DO WHILE .NOT. EOF
  43.    *
  44.    * Display the record number and uppercase field, and
  45.    * blank the previous lowercase field if there was one.
  46.    @ 10,20 SAY Field:name
  47.    @ 11,20 SAY #
  48.    *
  49.    * Initialize the memory variables.
  50.    STORE " " TO new:char
  51.    STORE 0 TO counter
  52.    *
  53.    * Loop to work on each character one at a time
  54.    * for the length of the field.
  55.    DO WHILE counter < LEN(TRIM(Field:name))
  56.       STORE counter+1 TO counter
  57.       STORE $(Field:name,counter,1) TO char
  58.       *
  59.       * If this character is an uppercase letter,
  60.       * replace with a lowercase letter.
  61.       IF char >= "A" .AND. char <= "Z"
  62.          STORE new:char+CHR( RANK(char)+32 ) TO new:char
  63.       ELSE
  64.          * If this character is not an uppercase letter,
  65.          * do not replace.
  66.          STORE new:char + char TO new:char
  67.       ENDIF
  68.       *
  69.    ENDDO
  70.    REPLACE Field:name WITH $(new:char,2,LEN(TRIM(Field:name))+1)
  71.    SKIP
  72. ENDDO
  73. @ 10,0
  74. @ 11,0
  75. @ 12,12 SAY "********** C H A N G E   I S   C O M P L E T E **********"
  76. *
  77. * Index and reopen the structure file, and erase the screen...
  78. INDEX ON Field:type + Field:name TO Temp
  79. USE Temp INDEX Temp
  80. ERASE
  81. *
  82. * Initialize a text file to receive the output...
  83. STORE $(datafile,1,@(".",datafile)-1) TO textfile
  84. SET ALTERNATE TO &textfile
  85. SET ALTERNATE ON
  86. *
  87. * Output the initialization statements...
  88. STORE '00000000000000000000' TO zeros
  89. DO WHILE .NOT. EOF
  90.    DO CASE
  91.       CASE Field:type = 'C'
  92.          ? 'STORE $(blank,1,' + STR(Field:len,3) + ' )' +;
  93.            ' TO m:' + $(Field:name,1,8)
  94.       CASE Field:type = 'N' .AND. Field:dec = 0
  95.          ? 'STORE ' + $(zeros,1,Field:len-Field:dec) +;
  96.            ' TO m:' + $(Field:name,1,8)
  97.       CASE Field:type = 'N' .AND. Field:dec > 0
  98.          ? 'STORE ' + $(zeros,1,Field:len-Field:dec-1) + '.' +;
  99.            $(zeros,1,Field:dec) + ' TO m:' + $(Field:name,1,8)
  100.       CASE Field:type = 'L'
  101.          ? 'STORE F TO m:' + $(Field:name,1,8) 
  102.    ENDCASE
  103.    SKIP
  104. ENDDO
  105. *
  106. * Output the STORE statements...
  107. ?
  108. GO TOP
  109. DO WHILE .NOT. EOF
  110.    ? 'STORE ' + !($(Field:name,1,1)) + $(Field:name,2,9) +;
  111.      ' TO m:' + $(Field:name,1,8)
  112.    SKIP
  113. ENDDO
  114. *
  115. * Output the REPLACE statements...
  116. ?
  117. GO TOP
  118. DO WHILE .NOT. EOF
  119.    ? 'REPLACE ' + !($(Field:name,1,1)) + $(Field:name,2,9) +;
  120.      ' WITH m:' + $(Field:name,1,8)
  121.    SKIP
  122. ENDDO
  123. *
  124. * Close the text file...
  125. SET ALTERNATE OFF
  126. SET ALTERNATE TO
  127. *
  128. * Restore the environment, and exit...
  129. SET TALK ON
  130. RETURN
  131. * EOF: Namegen2.prg
  132.