home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol028 / nad.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1984-04-29  |  11.8 KB  |  563 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8. PROGRAM NAD; {$P}
  9.  
  10. TYPE
  11.  
  12.     MAILING = RECORD
  13.         NAME:ARRAY[1..30] OF CHAR;
  14.         STREET_NUMBER:ARRAY[1..6] OF CHAR;
  15.         STREET: ARRAY[1..20] OF CHAR;
  16.         CITY: ARRAY[1..10] OF CHAR;
  17.         STATE:ARRAY[1..10] OF CHAR;
  18.         ZIP:ARRAY[1..10] OF CHAR;
  19.         ATTENTION:ARRAY[1..30] OF CHAR;
  20.         ACCT_NUMBER:ARRAY[1..4] OF CHAR;
  21.         BLANKS: ARRAY[1..8]  OF CHAR;
  22.         END;
  23.  
  24. F = FILE OF MAILING;
  25. $STRING80 = STRING 80;
  26. $STRING0  = STRING 0;
  27. $STRING255 = STRING 255;
  28. $STRING14 = STRING 14;
  29.  
  30. TR = ARRAY [1..4] OF CHAR;
  31.  
  32. VAR
  33. FIN: F;
  34. COUNTER,I,N:INTEGER;
  35. INFORMATION: MAILING;
  36. NUMBER_OF_RECORDS: INTEGER;
  37.  
  38. NA,ST_NO,ST,CIT,STA,ZI,ATT: $STRING80;
  39.  
  40. CONTINUE,NEWFILE: BOOLEAN;
  41. ANSWER:CHAR;
  42. FILENAM:$STRING14;
  43.  
  44.  
  45. PROCEDURE SETLENGTH(VAR X: $STRING0; Y:INTEGER);EXTERNAL;
  46. FUNCTION LENGTH(X:$STRING255):INTEGER;EXTERNAL;
  47.  
  48.  
  49. PROCEDURE CLEAR_SCREEN;
  50. BEGIN
  51. WRITE (CHR(27),'*',CHR(0),CHR(0),CHR(0),CHR(0));
  52. END;
  53.  
  54. PROCEDURE ERASE_LINES(STARTING_LINE,NUMBER_OF_LINES:INTEGER);
  55.  
  56. VAR
  57. I:INTEGER;
  58. BLANKS:STRING 80;
  59.  
  60. BEGIN
  61. BLANKS:='                                        ';{40SPACES}
  62. FOR I:= 1 TO NUMBER_OF_LINES DO
  63.     BEGIN
  64.     WRITE(CHR(27),'=',CHR(STARTING_LINE+31),CHR(32),BLANKS,BLANKS);
  65.     STARTING_LINE:=STARTING_LINE + 1;
  66.     END
  67. END;
  68.  
  69.  
  70. PROCEDURE MOVE_CURSOR (X,Y:INTEGER);
  71. BEGIN
  72.     WRITE(CHR(27),'=',CHR(Y+31),CHR(X+31));
  73. END;
  74.  
  75. PROCEDURE PROMPT (X,Y,LENGTH:INTEGER; P:$STRING80;
  76.           PROTECTED_FIELD_DESIRED:BOOLEAN);
  77.  
  78. VAR
  79. UNDERLINE:STRING 80;
  80. I:INTEGER;
  81. BEGIN
  82. UNDERLINE:='_';
  83.     FOR I:= 1 TO LENGTH DO APPEND(UNDERLINE,'_');
  84.     IF PROTECTED_FIELD_DESIRED = FALSE THEN
  85. WRITE(CHR(27),'=',CHR(Y+31),CHR(X+31),P,UNDERLINE)
  86.     ELSE
  87. WRITE(CHR(27),'=',CHR(Y+31),CHR(X+31),')',P,
  88.     UNDERLINE,CHR(27),'(');
  89. END;
  90.  
  91.  
  92. FUNCTION INPUT_DATA (X,Y,LEN:INTEGER; ALPHANUMERIC:BOOLEAN;
  93.              MAXIMUM_VALUE,MINIMUM_VALUE:REAL):$STRING80;
  94.  
  95. VAR
  96. DATA,BLANKS:$STRING80;
  97. I:INTEGER;
  98.  
  99. PROCEDURE CORRECT(X,Y:INTEGER);
  100. VAR
  101. I,A,B:INTEGER;
  102. BEGIN
  103.  
  104.     ERASE_LINES(20,2);
  105.     WRITE (CHR(7));
  106.     MOVE_CURSOR (1,20);
  107.     
  108.     IF (ALPHANUMERIC = TRUE) AND (LENGTH(DATA)>LEN) THEN
  109.         WRITE('TERM TOO LONG');
  110.     
  111.     MOVE_CURSOR(X,Y);
  112.     WRITE(' ');
  113.     A:=X;
  114.     B:=Y;
  115.  
  116.     FOR I:= 1 TO LENGTH(DATA) DO
  117.     BEGIN
  118.         MOVE_CURSOR(A,B);
  119.         WRITE(' ');    
  120.         A:=A+1;
  121.     END;
  122.  
  123.     MOVE_CURSOR(X,Y);
  124.     WRITE('_');
  125.     A:=X;
  126.     B:=Y;
  127.     FOR I:= 1 TO (LEN-1) DO    
  128.     BEGIN
  129.         MOVE_CURSOR(A,B);
  130.         WRITE('_');
  131.         A:=A+1;
  132.     END;
  133.  
  134.     MOVE_CURSOR(X,Y);
  135.     READ(DATA);
  136.     ERASE_LINES(20,1);
  137.  
  138.  
  139. END;
  140.  
  141.  
  142.  
  143. BEGIN
  144.  
  145.     BLANKS:='                                        ';{40SPACES}
  146.  
  147. MOVE_CURSOR(X,Y);
  148. READ(DATA);
  149.  
  150. WHILE(ALPHANUMERIC = TRUE) AND (LENGTH(DATA) > LEN) DO CORRECT(X,Y);
  151.  
  152. IF LENGTH(DATA) = 0 THEN
  153. BEGIN
  154.     DATA:=' ';
  155.     FOR I:=1 TO (LEN-1) DO APPEND(DATA,' ');
  156. END;
  157.  
  158. IF LENGTH(DATA) < LEN THEN
  159.     FOR I:=  LENGTH(DATA) TO LEN DO APPEND(DATA,' ');
  160.  
  161. INPUT_DATA:=DATA;
  162.  
  163. END;
  164.  
  165.  
  166. {************  PROCEDURE TO DETERMINE NUMBER RECORDS IN FILE ******}
  167.  
  168. PROCEDURE NUMBER_RECORDS(FILENAM:$STRING14);
  169. BEGIN
  170.  
  171. RESET(FILENAM,FIN);
  172. WITH INFORMATION DO
  173. BEGIN
  174.  
  175. READ(FIN:1,INFORMATION);
  176. NUMBER_OF_RECORDS:=(((ORD(ACCT_NUMBER[1])-48)*1000)+
  177.         ((ORD(ACCT_NUMBER[2])-48)*100)+
  178.         ((ORD(ACCT_NUMBER[3])-48)*10)+
  179.         ((ORD(ACCT_NUMBER[4])-48)*1));
  180. END; {OF WITH}
  181.  
  182. END; {OF PROCEDURE}
  183.  
  184. {********** DETERMINE THE CURRENT NUMBER OF RECORDS  *******}
  185.  
  186. PROCEDURE CALC_ACCT_NO(CURRENT_NUMBER_OF_RECORDS:INTEGER);
  187. VAR
  188. ONES,TENS,HUNDREDS,THOUSANDS:CHAR;
  189. O,T,H,TH:INTEGER;
  190.  
  191. BEGIN
  192. O:=1;
  193. T:=1;
  194. H:=1;
  195. TH:=1;
  196. WITH INFORMATION DO
  197. BEGIN
  198.  
  199. IF CURRENT_NUMBER_OF_RECORDS < 10 THEN
  200. BEGIN
  201. ONES:=CHR(CURRENT_NUMBER_OF_RECORDS + 48);
  202. ACCT_NUMBER[1]:='0';
  203. ACCT_NUMBER[2]:='0';
  204. ACCT_NUMBER[3]:='0';
  205. ACCT_NUMBER[4]:=ONES;
  206. END; {IF}
  207.  
  208. IF CURRENT_NUMBER_OF_RECORDS  = 10 THEN ACCT_NUMBER:='0010';
  209. IF CURRENT_NUMBER_OF_RECORDS  = 100 THEN ACCT_NUMBER:='0100';
  210.  
  211. IF (CURRENT_NUMBER_OF_RECORDS < 100) AND
  212.    (CURRENT_NUMBER_OF_RECORDS > 10) THEN
  213. BEGIN
  214. WHILE (CURRENT_NUMBER_OF_RECORDS < 100) AND
  215.       (CURRENT_NUMBER_OF_RECORDS > 10) DO          {FOR VALUE 1-99}
  216. BEGIN
  217. CURRENT_NUMBER_OF_RECORDS:=CURRENT_NUMBER_OF_RECORDS-10;
  218. T:=T+1;
  219. IF CURRENT_NUMBER_OF_RECORDS < 10 THEN
  220. BEGIN
  221. ONES:= CHR(CURRENT_NUMBER_OF_RECORDS + 48);
  222. TENS:=CHR(T+48);
  223. ACCT_NUMBER[1]:='0';
  224. ACCT_NUMBER[2]:='0';
  225. ACCT_NUMBER[3]:=TENS;
  226. ACCT_NUMBER[4]:=ONES;
  227. END; {IF}
  228.  
  229. END; {WHILE}
  230. END; {OF IF}
  231.  
  232. IF (CURRENT_NUMBER_OF_RECORDS < 10000) AND
  233.    (CURRENT_NUMBER_OF_RECORDS > 10) THEN
  234. BEGIN
  235. WHILE (CURRENT_NUMBER_OF_RECORDS < 10000) AND
  236.       (CURRENT_NUMBER_OF_RECORDS > 10) DO           {FOR VALUE 1 - 9999}
  237. BEGIN
  238. WHILE (CURRENT_NUMBER_OF_RECORDS < 10000) AND
  239.       (CURRENT_NUMBER_OF_RECORDS > 1000) DO
  240. BEGIN
  241. CURRENT_NUMBER_OF_RECORDS:=CURRENT_NUMBER_OF_RECORDS - 1000;
  242. TH:=TH+1;
  243. IF CURRENT_NUMBER_OF_RECORDS < 1000 THEN THOUSANDS:=CHR(TH+48);
  244. END;
  245.  
  246. WHILE (CURRENT_NUMBER_OF_RECORDS < 1000) AND
  247.       (CURRENT_NUMBER_OF_RECORDS > 100) DO
  248. BEGIN
  249. CURRENT_NUMBER_OF_RECORDS:=CURRENT_NUMBER_OF_RECORDS-100;
  250. H:=H+1;
  251. IF CURRENT_NUMBER_OF_RECORDS < 100 THEN HUNDREDS:=CHR(H+48);
  252. END;
  253.  
  254. WHILE (CURRENT_NUMBER_OF_RECORDS < 100) AND
  255.       (CURRENT_NUMBER_OF_RECORDS > 10) DO
  256. BEGIN
  257. CURRENT_NUMBER_OF_RECORDS:=CURRENT_NUMBER_OF_RECORDS-10;
  258. T:=T+1;
  259. IF CURRENT_NUMBER_OF_RECORDS < 10 THEN
  260. BEGIN
  261. TENS:=CHR(T+48);
  262. ONES:=CHR(CURRENT_NUMBER_OF_RECORDS+48);
  263. END;
  264. END;
  265.  
  266. ACCT_NUMBER[1]:=THOUSANDS;
  267. ACCT_NUMBER[2]:=HUNDREDS;
  268. ACCT_NUMBER[3]:=TENS;
  269. ACCT_NUMBER[4]:=ONES;
  270.  
  271. END; {OF WHILE}
  272. END; {OF IF}
  273. END; {OF WITH INFORMATION DO}
  274. END; {OF PROCEDURE}
  275.  
  276.  
  277. {********************  PRINT THE FILE  ********************}
  278.  
  279. PROCEDURE PRINT_FILE(FILENAM:$STRING14);
  280.  
  281. TYPE
  282. C = FILE OF CHAR;
  283.  
  284. VAR
  285. ANSWER:CHAR;
  286. AC,HARDCOPY: BOOLEAN;
  287. FOUT: C;
  288.  
  289. BEGIN
  290. CLEAR_SCREEN;
  291. REPEAT
  292. WRITELN;
  293. WRITE ('DO YOU WANT A HARDCOPY OF THE FILE? Y/N');
  294. READ(ANSWER);
  295. UNTIL (ANSWER = 'Y') OR (ANSWER = 'N');
  296.  
  297. IF ANSWER = 'Y' THEN 
  298.     BEGIN
  299.     HARDCOPY:=TRUE;
  300.     REWRITE('LST',FOUT);
  301.     END;
  302.  
  303. IF ANSWER = 'N' THEN HARDCOPY:= FALSE;
  304.  
  305. REPEAT
  306. WRITELN;
  307. WRITE ('DO YOU WANT THE ACCOUNT NUMBER INCLUDED IN THE PRINT OUT? Y/N');
  308. READ(ANSWER);
  309. UNTIL (ANSWER = 'Y') OR (ANSWER = 'N');
  310. IF ANSWER = 'Y' THEN AC:=TRUE ELSE AC:=FALSE;
  311.  
  312. RESET(FILENAM,FIN);
  313. CLEAR_SCREEN;
  314. NUMBER_RECORDS(FILENAM);
  315.  
  316. WITH INFORMATION DO
  317. BEGIN
  318.  
  319. FOR I:= 2 TO NUMBER_OF_RECORDS DO
  320. BEGIN
  321. READ(FIN:I,INFORMATION);
  322.  
  323. IF HARDCOPY = FALSE THEN
  324. BEGIN
  325. WRITELN;
  326. WRITELN (NAME);
  327. WRITELN(STREET_NUMBER,'  ',STREET);
  328. WRITELN(CITY,'    ',STATE,'    ',ZIP);
  329. WRITELN;
  330. IF ATTENTION <> '                              ' THEN
  331.     WRITELN('ATT:  ',ATTENTION);
  332. IF AC = TRUE THEN
  333.     BEGIN
  334.     WRITELN;
  335.     WRITELN('ACCOUNT NUMBER:  ',ACCT_NUMBER);
  336.     END;
  337.  
  338. END; {FOR HARDCOPY = FALSE}
  339.  
  340. IF HARDCOPY = TRUE THEN
  341. BEGIN
  342. WRITELN(FOUT,' ');
  343. WRITELN(FOUT,NAME);
  344. WRITELN(FOUT,STREET_NUMBER,'   ',STREET);
  345. WRITELN(FOUT,CITY,'     ',STATE,'    ',ZIP);
  346. WRITELN(FOUT,' ');
  347. IF ATTENTION <> '                              ' THEN
  348.     WRITELN(FOUT,'ATT:   ',ATTENTION);
  349. IF AC = TRUE THEN
  350.     BEGIN
  351.     WRITELN(FOUT,' ');
  352.     WRITELN(FOUT,'ACCOUNT NUMBER:  ',ACCT_NUMBER);
  353.     END;
  354.  
  355. END; {FOR HARDCOPY  =  TRUE}
  356. END;  {FOR LOOP}
  357. END; {THIS IS FOR WITH STATEMENTS}
  358.  
  359. END; {OF PROCEDURE}
  360.  
  361.  
  362. {*****************  CREATING THE FIRST RECORD OF FILE *******}
  363.  
  364. PROCEDURE CREATE_FIRST_RECORD (ACTNO: TR);
  365. BEGIN
  366. IF (NEWFILE = TRUE) AND (CONTINUE = TRUE) THEN REWRITE(FILENAM,FIN);
  367.  
  368. WITH INFORMATION  DO
  369. BEGIN
  370. NAME:='FIRST RECORD OF FILE          ';
  371. STREET_NUMBER:='      ';
  372. STREET:='                    ';
  373. CITY:='          ';
  374. STATE:='          ';
  375. ZIP:='          ';
  376. ATTENTION:='                              ';
  377. IF (NEWFILE = TRUE) AND (CONTINUE = TRUE) THEN ACCT_NUMBER:='0001';
  378. IF (NEWFILE = TRUE) AND (CONTINUE = FALSE) THEN ACCT_NUMBER:=ACTNO;
  379. IF NEWFILE =  FALSE THEN ACCT_NUMBER:= ACTNO;
  380. BLANKS:='        ';
  381. WRITE(FIN:1,INFORMATION);
  382. END; {WITH LOOP}
  383. END; {OF PROCEDURE}
  384.  
  385.  
  386. {**************   ENTER THE  NAME OF THE  FILE *****************}
  387.  
  388. PROCEDURE ENTER_FILE_NAME;
  389. BEGIN
  390. CLEAR_SCREEN;
  391. WRITELN(' ENTER THE FILE  NAME AS: DRIVE: NAME. EXTENSION');
  392. WRITELN;
  393. WRITELN(' WHERE  DRIVE IS  A SINGLE LETTER--EITHER A  OR  B');
  394. WRITELN('        NAME  IS UP TO  8 LETTERS OR SPACES');
  395. WRITELN('        EXTENSION MUST HAVE 3 LETTERS  OR  SPACES');
  396. WRITELN;
  397.  
  398. READLN(FILENAM);
  399.  
  400. REPEAT
  401. MOVE_CURSOR(1,10);
  402. WRITE('IS THIS A  NEW  FILE? Y/N');
  403. READ  (ANSWER);
  404. UNTIL (ANSWER = 'Y') OR (ANSWER = 'N');
  405.  
  406. IF ANSWER = 'Y' THEN NEWFILE:=TRUE ELSE NEWFILE:=FALSE;
  407. IF NEWFILE = TRUE THEN CREATE_FIRST_RECORD('0001');
  408.  
  409. END; {OF PROCEDURE}
  410.  
  411. {*********** PROCEDURE TO CORRECT INCORRECT ENTRY ************}
  412.  
  413. PROCEDURE MISTAKE;
  414. VAR
  415. WRONG:CHAR;
  416.  
  417. BEGIN
  418. WITH INFORMATION DO
  419. BEGIN
  420. ERASE_LINES(10,12);
  421. PROMPT(1,12,0,'ENTER NUMBER OF INCORRECT INFORMATION',FALSE);
  422. PROMPT(1,14,0,'1-NAME ',FALSE);
  423. PROMPT(1,15,0,'2-# ',FALSE);
  424. PROMPT(1,16,0,'3-STREET ',FALSE);
  425. PROMPT(1,17,0,'4-CITY ',FALSE);
  426. PROMPT(1,18,0,'5-STATE ',FALSE);
  427. PROMPT(1,19,0,'6-ZIP ',FALSE);
  428. PROMPT(1,20,0,'7-ATTENTION ',FALSE);
  429. PROMPT(1,21,0,'8-ALL INFORMATION IS CORRECT AS DISPLAYED ',FALSE);
  430.  
  431. REPEAT
  432. MOVE_CURSOR(50,16);
  433. READ(WRONG);
  434.  
  435. CASE WRONG OF 
  436.     '1':BEGIN
  437.         PROMPT(1,2,30,'NAME',FALSE);
  438.         NA:=INPUT_DATA(6,2,30,TRUE,0,0);
  439.         FOR I:= 1 TO 30 DO NAME[I]:=NA[I];
  440.         END;
  441.  
  442.     '2': BEGIN
  443.         PROMPT(1,4,6,'#: ',FALSE);
  444.         ST_NO:=INPUT_DATA(4,4,6,TRUE,0,0);
  445.         FOR I:= 1 TO 6 DO STREET_NUMBER[I]:=ST_NO[I];
  446.         END;
  447.  
  448.     '3': BEGIN
  449.         PROMPT(10,4,20,'STREET:',FALSE);
  450.         ST:=INPUT_DATA(19,4,20,TRUE,0,0);
  451.         FOR I:= 1 TO 20 DO STREET[I]:=ST[I];
  452.         END;
  453.  
  454.     '4': BEGIN
  455.         PROMPT(1,6,10,'CITY: ',FALSE);
  456.         CIT:=INPUT_DATA(7,6,10,TRUE,0,0);
  457.         FOR I:= 1 TO 10 DO CITY[I]:=CIT[I];
  458.         END;
  459.  
  460.     '5': BEGIN
  461.         PROMPT(20,6,10,'STATE: ',FALSE);
  462.         STA:=INPUT_DATA(27,6,10,TRUE,0,0);
  463.         FOR I:= 1 TO 10 DO STATE[I]:=STA[I];
  464.         END;
  465.  
  466.     '6': BEGIN
  467.         PROMPT(40,6,10,'ZIP: ',FALSE);
  468.         ZI:= INPUT_DATA(46,6,10,TRUE,0,0);
  469.         FOR I:= 1 TO 10 DO ZIP[I]:=ZI[I];
  470.         END;
  471.  
  472.     '7': BEGIN
  473.         PROMPT(1,8,30,'ATTENTION: ',FALSE);
  474.         ATT:=INPUT_DATA(12,8,29,TRUE,0,0);
  475.         FOR I:= 1 TO 30 DO ATTENTION[I]:=ATT[I];
  476.         END;
  477.  
  478.     END; {OF CASE}
  479.  
  480. UNTIL WRONG = '8';
  481. END; {OF WITH INFORMATION}
  482. ERASE_LINES(10,12);
  483. END; {OF PROCEDURE}
  484.  
  485. {****************  MAIN PROGRAM BEGINS HERE   ******************}
  486.  
  487. BEGIN
  488. CONTINUE:=TRUE;
  489. ENTER_FILE_NAME;
  490. IF NEWFILE = TRUE THEN COUNTER:= 2;
  491.  
  492. IF NEWFILE = FALSE THEN
  493. BEGIN
  494. NUMBER_RECORDS(FILENAM);
  495. COUNTER:=NUMBER_OF_RECORDS + 1;
  496. END;
  497.  
  498. WITH INFORMATION DO
  499. BEGIN
  500. REPEAT
  501.  
  502. CLEAR_SCREEN;
  503.     PROMPT(1,2,30,'NAME',FALSE);
  504.     PROMPT(1,4,6,'#: ',FALSE);
  505.     PROMPT(10,4,20,'STREET: ',FALSE);
  506.     PROMPT(1,6,10,'CITY: ',FALSE);
  507.     PROMPT(20,6,10,'STATE: ',FALSE);
  508.     PROMPT(40,6,10,'ZIP: ',FALSE);
  509.     PROMPT(1,8,30,'ATTENTION: ',FALSE);
  510.     
  511.     NA:=INPUT_DATA(6,2,30,TRUE,0,0);
  512.     ST_NO:=INPUT_DATA(4,4,6,TRUE,0,0);    
  513.     ST:=INPUT_DATA(19,4,20,TRUE,0,0);
  514.     CIT:=INPUT_DATA(7,6,10,TRUE,0,0);
  515.     STA:=INPUT_DATA(27,6,10,TRUE,0,0);
  516.     ZI:=INPUT_DATA(46,6,10,TRUE,0,0);
  517.     ATT:=INPUT_DATA(12,8,29,TRUE,0,0);
  518.  
  519. FOR I:= 1 TO 30 DO NAME[I]:=NA[I];
  520. FOR I:= 1 TO 6  DO STREET_NUMBER[I]:=ST_NO[I];
  521. FOR I:= 1 TO 20 DO STREET[I]:=ST[I];
  522. FOR I:= 1 TO 10 DO CITY[I]:=CIT[I];
  523. FOR I:= 1 TO 10 DO STATE[I]:=STA[I];
  524. FOR I:= 1 TO 10 DO ZIP[I]:=ZI[I];
  525. FOR I:= 1 TO 30 DO ATTENTION[I]:=ATT[I];
  526. CALC_ACCT_NO(COUNTER);
  527. FOR I:= 1 TO 8 DO BLANKS[I]:=' ';
  528.  
  529. IF NAME <> 'EXIT                          ' THEN
  530. REPEAT
  531. PROMPT(1,20,1,'IS INFORMATION CORRECT AS ENTERED? Y/N',FALSE);
  532. MOVE_CURSOR(50,20);
  533. READ(ANSWER);
  534. UNTIL (ANSWER = 'Y') OR (ANSWER = 'N');
  535.  
  536. IF ANSWER = 'N' THEN MISTAKE;
  537.  
  538. IF NAME <> 'EXIT                          ' THEN
  539. BEGIN
  540. WRITE(FIN:COUNTER,INFORMATION);
  541. COUNTER:=COUNTER+1;
  542. END; {OF IF}
  543.  
  544. UNTIL NAME = 'EXIT                          ';
  545. CONTINUE:=FALSE;
  546. CALC_ACCT_NO(COUNTER - 1);
  547. CREATE_FIRST_RECORD(ACCT_NUMBER);
  548.  
  549. END;
  550.  
  551. REPEAT
  552. ERASE_LINES(20,1);
  553. PROMPT(1,20,1,'DO YOU WANT A LISTING OF THE FILE? Y/N',FALSE);
  554. MOVE_CURSOR(50,20);
  555. READ(ANSWER);
  556. UNTIL (ANSWER = 'Y') OR (ANSWER = 'N');
  557.  
  558. IF ANSWER = 'Y' THEN PRINT_FILE(FILENAM);
  559.  
  560.  
  561. END.
  562.  
  563.