home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
-
-
-
-
- PROGRAM ACCOUNTS_RECEIVABLE; {$P}
-
- TYPE
-
- MAILING = RECORD
- NAME:ARRAY[1..30] OF CHAR;
- STREET_NUMBER: ARRAY[1..6] OF CHAR;
- STREET: ARRAY[1..20] OF CHAR;
- CITY: ARRAY[1..10] OF CHAR;
- STATE: ARRAY[1..10] OF CHAR;
- ZIP: ARRAY[1..10] OF CHAR;
- ATTENTION: ARRAY[1..30] OF CHAR;
- ACCT_NUMBER: ARRAY[1..4] OF CHAR;
- BLANKS: ARRAY[1..8] OF CHAR;
- END;
-
- ENTRY = RECORD
- MONTH:ARRAY[1..2] OF CHAR;
- DAY: ARRAY[1..2] OF CHAR;
- YEAR: ARRAY[1..2] OF CHAR;
- INVOICE_NUMBER: ARRAY[1..6] OF CHAR;
- PURCHASE_ORDER_NUMBER: ARRAY[1..10] OF CHAR;
- AMOUNT:REAL;
- END;
-
- FI = FILE OF ENTRY;
- FO = FILE OF CHAR;
- M = FILE OF MAILING;
-
- TR = ARRAY [1..10] OF CHAR;
-
- $STRING80 = STRING 80;
- $STRING0 = STRING 0;
- $STRING255 = STRING 255;
- $STRING14 = STRING 14;
- $STRING30 = STRING 30;
- $STR2 = STRING 2;
- $STR4 = STRING 4;
-
-
- VAR
- FIN: FI;
- INC,NUMBER_OF_RECORDS,COUNTER,I,N: INTEGER;
- NAME_AND_ADDRESS: MAILING;
- NAD:M;
- INFORMATION: ENTRY;
- FOUT:FO;
- COR,ANSWER,CONTINUE:CHAR;
- ACCOUNT_NAME:$STRING30;
- FILENAM,FILNAME:$STRING14;
- ACCTNAME: ARRAY[1..30] OF CHAR;
- FNAME:ARRAY[1..4] OF CHAR;
- STATEMENT,CONT,POST_TO_ANOTHER_ACCOUNT,NEWACCOUNT,RECURSIVE,NEWFILE:BOOLEAN;
- MO,DA,YR,INO,PNO,NA,ST_NO,ST,CIT,STA,ZI,ATT: $STRING80;
-
- DRIVE:$STR2;
- ACN,EXTENSION:$STR4;
- BALANCE:REAL;
-
-
-
-
- PROCEDURE SETLENGTH(VAR X:$STRING0;Y:INTEGER);EXTERNAL;
- FUNCTION LENGTH(X:$STRING255):INTEGER;EXTERNAL;
-
-
-
-
-
-
- PROCEDURE CLEAR_SCREEN;
- BEGIN
- WRITE(CHR(27),'*',CHR(0),CHR(0),CHR(0),CHR(0));
- END;
-
-
-
-
- PROCEDURE ERASE_LINES(STARTING_LINE,NUMBER_OF_LINES:INTEGER);
-
- VAR
- I:INTEGER;
- BLANKS:STRING 80;
-
- BEGIN
-
- BLANKS:=' ';{40SPACES}
- FOR I:= 1 TO NUMBER_OF_LINES DO
- BEGIN
- WRITE(CHR(27),'=',CHR(STARTING_LINE+31),CHR(32),BLANKS,BLANKS);
- STARTING_LINE:=STARTING_LINE + 1;
- END
- END;
-
-
-
- PROCEDURE MOVE_CURSOR (X,Y:INTEGER);
- BEGIN
- WRITE(CHR(27),'=',CHR(Y+31),CHR(X+31));
- END;
-
-
-
-
- PROCEDURE PROMPT (X,Y,LENGTH: INTEGER; P:$STRING80;
- PROTECTED_FIELD_DESIRED:BOOLEAN);
-
- VAR
- UNDERLINE: STRING 80;
- I:INTEGER;
- BEGIN
- UNDERLINE:='_';
- FOR I:= 1 TO LENGTH DO APPEND (UNDERLINE,'_');
- IF PROTECTED_FIELD_DESIRED = FALSE THEN
- WRITE (CHR(27),'=',CHR(Y+31),CHR(X+31),P,UNDERLINE)
- ELSE
- WRITE (CHR(27),'=',CHR(Y+31),CHR(X+31),CHR(27),')',P,
- UNDERLINE,CHR(27),'(');
- END;
-
-
-
-
- FUNCTION INPUT_DATA(X,Y,LEN:INTEGER; ALPHANUMERIC:BOOLEAN;
- MAXIMUM_VALUE,MINIMUM_VALUE:REAL):$STRING80;
-
-
- VAR
- DATA,BLANKS:$STRING80;
- I:INTEGER;
-
-
-
-
- PROCEDURE CORRECT(X,Y:INTEGER);
- VAR
- I,A,B:INTEGER;
-
- BEGIN
-
- ERASE_LINES (20,2);
- WRITE (CHR(7));
- MOVE_CURSOR (1,20);
-
- IF (ALPHANUMERIC = TRUE) AND (LENGTH(DATA) > LEN) THEN
- WRITE('TERM TOO LONG ');
-
-
- MOVE_CURSOR(X,Y);
- WRITE (' ');
- A:=X;
- B:=Y;
-
- FOR I:=1 TO LENGTH(DATA) DO
- BEGIN
- MOVE_CURSOR(A,B);
- WRITE(' ');
- A:=A+1;
- END;
-
- MOVE_CURSOR(X,Y);
- WRITE('_');
- A:=X;
- B:=Y;
- FOR I:= 1 TO (LEN-1) DO
- BEGIN
- MOVE_CURSOR(A,B);
- WRITE('_');
- A:=A+1;
- END;
-
- MOVE_CURSOR(X,Y);
- READ(DATA);
- ERASE_LINES(20,1);
-
-
-
-
- END;
-
-
-
-
-
- BEGIN
- BLANKS:=' ';{40SPACES}
-
- MOVE_CURSOR(X,Y);
- READ(DATA);
-
-
-
-
- WHILE (ALPHANUMERIC = TRUE) AND (LENGTH(DATA) > LEN) DO CORRECT(X,Y);
-
-
- IF LENGTH(DATA) = 0 THEN
- BEGIN
- DATA:=' ';
- FOR I:= 1 TO (LEN-1) DO APPEND (DATA,' ');
- END;
-
-
- IF LENGTH(DATA) < LEN THEN
- FOR I:= LENGTH(DATA) TO LEN DO APPEND(DATA,' ');
-
-
-
- INPUT_DATA:=DATA;
-
-
- END;
-
- {************ PROCEDURE TO DETERMINE NUMBER OF RECORDS****}
-
- PROCEDURE NUMBER_RECORDS (FILENAM:$STRING14);
- BEGIN
- RESET(FILENAM,FIN);
- WITH INFORMATION DO
- BEGIN
-
- READ(FIN:1,INFORMATION);
- NUMBER_OF_RECORDS:=(((ORD(PURCHASE_ORDER_NUMBER[1])-48)*1000)+
- ((ORD(PURCHASE_ORDER_NUMBER[2])-48)*100)+
- ((ORD(PURCHASE_ORDER_NUMBER[3])-48)*10)+
- ((ORD(PURCHASE_ORDER_NUMBER[4])-48)*1));
- END; {OF WITH}
-
- END; {OF PROCEDURE}
-
-
-
- PROCEDURE PRINT_FILE (FILENAM:$STRING14); {*******************}
-
- TYPE
- C = FILE OF CHAR;
-
-
- VAR
- SCROLLING:CHAR;
- ANSWER:CHAR;
- HARDCOPY:BOOLEAN;
- FOUT:C;
- MASK:$STRING80;
- PAGE,COUNTER:INTEGER;
-
-
- BEGIN {BEGIN PROCEDURE}
-
- CLEAR_SCREEN;
- REPEAT
- WRITE(' DO YOU WANT A HARDCOPY OF THE FILE? Y/N ');
- READ(ANSWER);
- UNTIL (ANSWER = 'Y') OR (ANSWER = 'N');
- IF ANSWER = 'Y' THEN
- BEGIN
- HARDCOPY:=TRUE;
- REWRITE('LST:',FOUT);
- END;
- IF ANSWER = 'N' THEN HARDCOPY:=FALSE;
-
-
-
- RESET (FILENAM,FIN);
- CLEAR_SCREEN;
- NUMBER_RECORDS(FILENAM);
-
- WITH NAME_AND_ADDRESS DO
- BEGIN
- IF HARDCOPY = FALSE THEN
- BEGIN
- WRITELN(NAME);
- WRITELN(STREET_NUMBER,' ',STREET);
- WRITELN(CITY,', ',STATE,' ',ZIP);
- WRITELN;
- WRITELN(ATTENTION);
- END;
-
- IF HARDCOPY = TRUE THEN
- BEGIN
- WRITELN(FOUT,CHR(12));
- WRITELN(FOUT,' ');
- WRITELN(FOUT,NAME);
- WRITELN(FOUT,STREET_NUMBER,' ',STREET);
- WRITELN(FOUT,CITY,', ',STATE,' ',ZIP);
- WRITELN(FOUT,' ');
- WRITELN(FOUT,ATTENTION);
- END;
- END; {OF WITH NAME AND ADDRESS}
-
-
-
-
- WITH INFORMATION DO
- BEGIN
- MASK:='DATE INVOICE NO. PURCHASE OR # AMOUNT';
- IF HARDCOPY = FALSE THEN WRITELN(MASK);
- IF HARDCOPY = TRUE THEN WRITELN(FOUT,MASK);
-
- COUNTER:=7;
- PAGE := 1;
- BALANCE:=0.0;
-
-
- FOR I:= 2 TO NUMBER_OF_RECORDS DO
- BEGIN
- READ(FIN:I,INFORMATION);
-
- BALANCE:=BALANCE+AMOUNT;
-
- IF HARDCOPY = FALSE THEN
- BEGIN
- IF COUNTER > 20 THEN
- BEGIN
- PROMPT(1,22,0,'ENTER ANY CHARACTER TO CONTINUE',FALSE);
- READ(SCROLLING);
- ERASE_LINES(7,15);
- MOVE_CURSOR(50,2);
- PAGE:=PAGE + 1;
- WRITE('PAGE ',PAGE);
- ERASE_LINES(22,1);
- MOVE_CURSOR(1,7);
- COUNTER:=7;
- END;
- WRITELN;
- WRITE(MONTH,'/',DAY,'/',YEAR,' ',INVOICE_NUMBER,' ');
- IF AMOUNT > 0.00 THEN
- WRITELN(PURCHASE_ORDER_NUMBER,' ','$',AMOUNT:9:2);
- IF AMOUNT < 0.00 THEN
- WRITELN(PURCHASE_ORDER_NUMBER,' ','$',AMOUNT:9:2,' CREDIT');
- COUNTER:=COUNTER + 2;
- END; {FOR HARDCOPY = FALSE}
-
- IF HARDCOPY = TRUE THEN
- BEGIN
- WRITELN(FOUT,' ');
- WRITE(FOUT,MONTH,'/',DAY,'/',YEAR,' ',INVOICE_NUMBER,' ');
- IF AMOUNT > 0.0 THEN
- WRITELN(FOUT,PURCHASE_ORDER_NUMBER,' ','$',AMOUNT:9:2);
- IF AMOUNT < 0.0 THEN
- WRITELN(FOUT,PURCHASE_ORDER_NUMBER,' ','$',AMOUNT:9:2,' CREDIT');
- IF COUNTER > 40 THEN
- BEGIN
- WRITELN(FOUT,CHR(12));
- WRITELN(FOUT,' ');
- WRITELN(FOUT,' ');
- WRITELN(FOUT,' PAGE: ',PAGE);
- COUNTER:=1;
- PAGE:=PAGE + 1;
- END;
- END; {FOR HARDCOPY = TRUE}
-
- END; {FOR LOOP}
-
- END; {THIS IS FOR WITH STATEMENTS}
- ERASE_LINES(22,1);
- IF HARDCOPY = FALSE THEN
- BEGIN
- MOVE_CURSOR(1,22);
- WRITELN('BALANCE DUE: ','$',BALANCE:9:2);
- END;
-
- IF HARDCOPY = TRUE THEN
- BEGIN
- WRITELN(FOUT,' ');
- WRITELN(FOUT,' ');
- WRITELN(FOUT,'BALANCE DUE: ','$',BALANCE:9:2);
- END;
-
-
- END; {PROCEDURE}
-
-
-
- {**********************************************************}
-
- PROCEDURE ENTER_FILE_NAME;
-
- BEGIN
- DRIVE:='B:';
- EXTENSION:='.INV';
- CLEAR_SCREEN;
- WRITELN(' ACCOUNTS RECEIVABLE');
- WRITELN;
- WRITELN;
- WRITELN;
- IF RECURSIVE = TRUE THEN
- WRITELN('ACCOUNT WAS NOT FOUND IN FILE, PLEASE RE-ENTER');
-
- IF (POST_TO_ANOTHER_ACCOUNT = FALSE) OR (STATEMENT = TRUE) THEN
- BEGIN
- WRITE('ENTER NAME & ADDRESS FILE AS DRIVE:NAME.EXT ');
- SETLENGTH(FILNAME,0);
- READLN(FILNAME);
- END; {OF IF POST..}
- WRITELN;
- WRITELN;
- PROMPT(1,8,30,'ENTER NAME OF ACCOUNT ',FALSE);
- ACCOUNT_NAME:=INPUT_DATA(23,8,30,TRUE,0,0);
- FOR I:= 1 TO 30 DO ACCTNAME[I]:=ACCOUNT_NAME[I];
-
- WRITELN;
- WRITELN;
-
- REPEAT
- MOVE_CURSOR (1,10);
- WRITE('IS THIS A NEW ACCOUNT? Y/N ');
- READ(ANSWER);
- UNTIL (ANSWER = 'Y') OR (ANSWER = 'N');
- IF ANSWER = 'Y' THEN NEWACCOUNT:= TRUE ELSE NEWACCOUNT:= FALSE;
- IF NEWACCOUNT = TRUE THEN
- BEGIN
- CLEAR_SCREEN;
- PROMPT(10,12,0,'EXIT THIS PROGRAM AND ENTER ACCOUNT TO NAD FILE',FALSE);
- END; {OF IF NEWACCOUNT = TRUE}
-
- WRITELN;
- WRITELN;
- IF STATEMENT = FALSE THEN
- BEGIN
- REPEAT
- MOVE_CURSOR(1,12);
- WRITE('IS THIS THE FIRST INVOICE EVER POSTED TO THIS ACCOUNT? Y/N ');
- READ(ANSWER);
- UNTIL (ANSWER = 'Y') OR (ANSWER = 'N');
- IF ANSWER = 'Y' THEN NEWFILE:= TRUE ELSE NEWFILE := FALSE;
- END; {IF STATEMENT = FALSE}
-
-
-
- IF NEWACCOUNT = FALSE THEN
- BEGIN
- RESET(FILNAME,NAD);
- WITH NAME_AND_ADDRESS DO
- BEGIN
- COUNTER:=2;
- REPEAT
- READ(NAD:COUNTER,NAME_AND_ADDRESS);
- COUNTER:=COUNTER +1;
- UNTIL (EOF(NAD)) OR (ACCTNAME = NAME);
- SETLENGTH(ACN,0);
- FOR I:= 1 TO 4 DO APPEND(ACN,ACCT_NUMBER[I]);
-
- IF EOF(NAD) = FALSE THEN
- BEGIN
- SETLENGTH(FILENAM,0);
- APPEND(FILENAM,DRIVE);
- APPEND(FILENAM,ACN);
- APPEND(FILENAM,EXTENSION);
-
- END; {OF IF}
- END; {OF WITH NAME..}
-
- IF EOF(NAD)=TRUE THEN
- BEGIN
- RECURSIVE := TRUE;
- ENTER_FILE_NAME;
- END;
-
- END; {OF BEGIN FOR IF NEWFILE = FALSE}
-
-
-
- END; {PROCEDURE}
-
- {************** CALCULATE NUMBER OF RECORDS FOR FIRST RECORD***}
-
- PROCEDURE CALC_FIRST_RECORD(CURRENT_NUMBER_OF_RECORDS:INTEGER);
- VAR
- ONES,TENS,HUNDREDS:CHAR;
- O,T,H: INTEGER;
-
- BEGIN
- O:=0;
- T:=0;
- H:=0;
-
- WITH INFORMATION DO
- BEGIN
-
- IF CURRENT_NUMBER_OF_RECORDS < 10 THEN
- BEGIN
- ONES:=CHR(CURRENT_NUMBER_OF_RECORDS + 48);
- PURCHASE_ORDER_NUMBER[1]:='0';
- PURCHASE_ORDER_NUMBER[2]:='0';
- PURCHASE_ORDER_NUMBER[3]:='0';
- PURCHASE_ORDER_NUMBER[4]:=ONES;
- FOR I:= 5 TO 10 DO PURCHASE_ORDER_NUMBER[I]:=' ';
- END; {IF}
-
- IF CURRENT_NUMBER_OF_RECORDS = 10 THEN PURCHASE_ORDER_NUMBER:='0010 ';
- IF CURRENT_NUMBER_OF_RECORDS = 100 THEN PURCHASE_ORDER_NUMBER:= '0100 ';
-
- IF (CURRENT_NUMBER_OF_RECORDS < 100) AND
- (CURRENT_NUMBER_OF_RECORDS > 10) THEN
- BEGIN
-
- WHILE (CURRENT_NUMBER_OF_RECORDS < 100 ) AND
- (CURRENT_NUMBER_OF_RECORDS > 10 ) DO {VALUES 1-99}
- BEGIN
-
- CURRENT_NUMBER_OF_RECORDS:=CURRENT_NUMBER_OF_RECORDS - 10;
- T:=T+1;
- IF CURRENT_NUMBER_OF_RECORDS < 10 THEN
- BEGIN
- ONES:=CHR(CURRENT_NUMBER_OF_RECORDS + 48);
- TENS:=CHR(T + 48);
- PURCHASE_ORDER_NUMBER[1]:='0';
- PURCHASE_ORDER_NUMBER[2]:='0';
- PURCHASE_ORDER_NUMBER[3]:=TENS;
- PURCHASE_ORDER_NUMBER[4]:=ONES;
- FOR I:= 5 TO 10 DO PURCHASE_ORDER_NUMBER[I]:=' ';
- END; {IF}
-
- END; {WHILE}
- END; {IF}
- END; {OF WITH}
-
- END; {OF PROCEDURE}
-
- {*********** WRITE THE FIRST RECORD ********************}
-
- PROCEDURE CREATE_FIRST_RECORD (ACTNO: TR);
- BEGIN
- IF NEWFILE = TRUE THEN REWRITE(FILENAM,FIN);
-
- WITH INFORMATION DO
- BEGIN
- MONTH:=' ';
- DAY:=' ';
- YEAR:=' ';
- INVOICE_NUMBER:='FIRST ';
- AMOUNT:=0.0;
-
- PURCHASE_ORDER_NUMBER:=ACTNO;
-
- WRITE(FIN:1,INFORMATION);
- END; {WITH LOOP}
- END; {OF PROCEDURE}
-
-
- {********************** PROCEDURE TO CORRECT INCORRECT ENTRY ***}
-
- PROCEDURE MISTAKE;
- VAR
- WRONG:CHAR;
-
- BEGIN
- WITH INFORMATION DO
- BEGIN
- ERASE_LINES(10,12);
- PROMPT(1,12,0,'ENTER NUMBER OF INCORRECT INFORMATION',FALSE);
- PROMPT(1,14,0,'1-MONTH',FALSE);
- PROMPT(1,15,0,'2-DAY',FALSE);
- PROMPT(1,16,0,'3-YEAR',FALSE);
- PROMPT(1,17,0,'4-INVOICE NUMBER',FALSE);
- PROMPT(1,18,0,'5-PURCHASE ORDER NUMBER',FALSE);
- PROMPT(1,19,0,'6-AMOUNT',FALSE);
- PROMPT(1,21,0,'7-ALL INFORMATION IS CORRECT AS DISPLAYED',FALSE);
-
- REPEAT
- MOVE_CURSOR(50,16);
- READ(WRONG);
-
- CASE WRONG OF
- '1': BEGIN
- PROMPT(1,N,0,' ',FALSE);
- MO:=INPUT_DATA(1,N,2,TRUE,0,0);
- END;
-
- '2': BEGIN
- PROMPT(4,N,0,' ',FALSE);
- DA:=INPUT_DATA(4,N,2,TRUE,0,0);
- END;
-
- '3': BEGIN
- PROMPT(7,N,0,' ',FALSE);
- YR:=INPUT_DATA(7,N,2,TRUE,0,0);
- END;
- '4': BEGIN
- PROMPT(12,N,0,' ',FALSE);
- INO:=INPUT_DATA(12,N,10,TRUE,0,0);
- END;
-
- '5': BEGIN
- PROMPT(25,N,0,' ',FALSE);
- PNO:=INPUT_DATA(25,N,10,TRUE,0,0);
- END;
-
- '6': BEGIN
- PROMPT(40,N,0,' ',FALSE);
- REPEAT
- MOVE_CURSOR(40,N);
- READ(AMOUNT);
- UNTIL (AMOUNT < 99999.99) AND (AMOUNT > -99999.99);
- END;
-
-
-
- END; {OF CASE}
-
- UNTIL WRONG = '7';
- END; {OF WITH INFORMATION}
- ERASE_LINES(10,12);
- END; { OF PROCEDURE}
-
- {********* PROCEDURE TO POST TO ACCOUNT RECEIVABLE **************}
- PROCEDURE POST;
- BEGIN
-
-
- POST_TO_ANOTHER_ACCOUNT:=FALSE;
-
- REPEAT
- RECURSIVE:=FALSE;
-
- ENTER_FILE_NAME;
- N:=5;
-
-
- IF NEWFILE = TRUE THEN
- BEGIN
- CREATE_FIRST_RECORD('0001 ');
- COUNTER:=2;
- END;
-
-
- IF NEWFILE = FALSE THEN
- BEGIN
- NUMBER_RECORDS(FILENAM);
- RESET(FILENAM,FIN);
- COUNTER:=NUMBER_OF_RECORDS + 1;
- END;
-
- CLEAR_SCREEN;
- PROMPT(1,3,0,'MO/DY/YR',FALSE);
- PROMPT(12,3,0,'INV #',FALSE);
- PROMPT(25,3,0,'P.O.#',FALSE);
- PROMPT(40,3,0,'AMOUNT',FALSE);
- PROMPT(70,3,0,'CORRECT',FALSE);
-
-
-
- WITH INFORMATION DO
- BEGIN
- REPEAT
- MO:=INPUT_DATA(1,N,2,TRUE,0,0);
- PROMPT(3,N,0,'/',FALSE);
- DA:=INPUT_DATA(4,N,2,TRUE,0,0);
- PROMPT(6,N,0,'/',FALSE);
- YR:=INPUT_DATA(7,N,2,TRUE,0,0);
- INO:=INPUT_DATA(12,N,10,TRUE,0,0);
- PNO:=INPUT_DATA(25,N,10,TRUE,0,0);
- REPEAT
- MOVE_CURSOR(40,N);
- READ(AMOUNT);
- UNTIL (AMOUNT < 99999.99) AND (AMOUNT > -99999.99);
-
- REPEAT
- MOVE_CURSOR(70,N);
- READ(COR);
- UNTIL (COR = 'Y') OR (COR = 'N');
-
-
- IF COR = 'N' THEN MISTAKE;
-
-
- FOR I:= 1 TO 2 DO MONTH[I]:=MO[I];
- FOR I:= 1 TO 2 DO DAY[I]:=DA[I];
- FOR I:= 1 TO 2 DO YEAR[I]:=YR[I];
- FOR I:= 1 TO 6 DO INVOICE_NUMBER[I]:=INO[I];
- FOR I:= 1 TO 10 DO PURCHASE_ORDER_NUMBER[I]:=PNO[I];
-
-
- IF MONTH <> '00' THEN
- BEGIN
-
-
- WRITE (FIN:COUNTER,INFORMATION);
- COUNTER:=COUNTER + 1;
- N:=N + 1;
-
- IF N > 12 THEN
- BEGIN
- ERASE_LINES(5,20);
- N:= 5;
- END;
-
- END; {OF IF MONTH NOT 00}
-
-
- UNTIL (MONTH = '00') OR ((COUNTER = 5) AND (NEWFILE = TRUE));
- CALC_FIRST_RECORD(COUNTER-1);
- CREATE_FIRST_RECORD(PURCHASE_ORDER_NUMBER);
-
-
- END;
-
-
- ERASE_LINES(20,1);
- PROMPT(1,20,1,'DO YOU WANT A LISTING OF THE FILE? Y/N',FALSE);
- REPEAT
- MOVE_CURSOR(50,20);
- READ(ANSWER);
- UNTIL (ANSWER = 'Y') OR (ANSWER = 'N');
- IF ANSWER = 'Y' THEN PRINT_FILE(FILENAM);
-
- PROMPT(1,23,1,'DO YOU WISH TO POST TO ANOTHER ACCOUNT? Y/N',FALSE);
- REPEAT
- MOVE_CURSOR(60,23);
- READ(ANSWER);
- UNTIL (ANSWER = 'Y') OR (ANSWER = 'N');
-
- IF ANSWER = 'Y' THEN POST_TO_ANOTHER_ACCOUNT := TRUE;
- IF ANSWER = 'N' THEN POST_TO_ANOTHER_ACCOUNT:=FALSE;
-
- UNTIL POST_TO_ANOTHER_ACCOUNT = FALSE;
-
- END; {OF PROCEDURE POST}
-
-
- {************ GENERATE A MONTHLY STATEMENT ******************}
- PROCEDURE STATMENT;
- TYPE
- $STR4 = STRING 4;
- $STR2 = STRING 2;
-
- VAR
- COP:FI;
- MONTH_OF_STATEMENT:$STR4;
- MS:INTEGER;
- MO,DA,YR:$STR2;
- MONTHFIL:$STRING14;
-
- BEGIN
- REPEAT
- RECURSIVE:=FALSE;
- ENTER_FILE_NAME;
-
- PROMPT(1,19,0,'ENTER,NUMERICALLY, THE DATE OF THIS STATMENT',FALSE);
- PROMPT(1,20,0,'ENTER A CARRIAGE RETURN AFTER MONTH,DAY AND YEAR',FALSE);
- READ(MO);
- READ(DA);
- READ(YR);
- MS:=((ORD(MO[1]) - 48)*10)+(ORD(MO[2])-48);
- CASE MS OF
- 1:MONTH_OF_STATEMENT:='.JAN';
- 2:MONTH_OF_STATEMENT:='.FEB';
- 3:MONTH_OF_STATEMENT:='.MAR';
- 4:MONTH_OF_STATEMENT:='.APR';
- 5:MONTH_OF_STATEMENT:='.MAY';
- 6:MONTH_OF_STATEMENT:='.JUN';
- 7:MONTH_OF_STATEMENT:='.JUL';
- 8:MONTH_OF_STATEMENT:='.AUG';
- 9:MONTH_OF_STATEMENT:='.SEP';
- 10:MONTH_OF_STATEMENT:='.OCT';
- 11:MONTH_OF_STATEMENT:='.NOV';
- 12:MONTH_OF_STATEMENT:='.DEC';
-
- END; {OF CASE}
- PRINT_FILE(FILENAM);
-
- SETLENGTH(MONTHFIL,0);
- APPEND(MONTHFIL,DRIVE);
- APPEND(MONTHFIL,ACN);
- APPEND(MONTHFIL,MONTH_OF_STATEMENT);
-
- WITH INFORMATION DO
- BEGIN
- REWRITE(MONTHFIL,COP);
- RESET(FILENAM,FIN);
- FOR I:= 1 TO NUMBER_OF_RECORDS DO
- BEGIN
- READ(FIN:I,INFORMATION);
- WRITE(COP:I,INFORMATION);
- END;
-
- REWRITE(FILENAM,FIN);
- CREATE_FIRST_RECORD('0002 ');
-
-
- FOR I:= 1 TO 2 DO MONTH[I]:=MO[I];
- FOR I:= 1 TO 2 DO DAY[I]:=DA[I];
- FOR I:= 1 TO 2 DO YEAR[I]:=YR[I];
- INVOICE_NUMBER:='PRIOR ';
- PURCHASE_ORDER_NUMBER:='BALANCE ';
- AMOUNT:=BALANCE;
- WRITE(FIN:2,INFORMATION);
- END; {OF WITH INFORMATION DO}
-
- PROMPT(1,23,1,'DO YOU WISH TO GENERATE ANOTHER STATEMENT? Y/N',FALSE);
- REPEAT
- MOVE_CURSOR(60,23);
- READ(ANSWER);
- UNTIL (ANSWER = 'Y') OR (ANSWER = 'N');
- IF ANSWER = 'Y' THEN STATEMENT:= TRUE ELSE STATEMENT:=FALSE;
-
- UNTIL STATEMENT = FALSE;
- END; {OF PROCEDURE STATMENT}
-
-
- {******************** BEGIN THE MAIN PROGRAM HERE ****************}
-
- BEGIN
- CLEAR_SCREEN;
- PROMPT(10,5,0,'ACCOUNTS RECEIVABLE PROGRAM PACKAGE',FALSE);
- PROMPT(10,9,0,'CHOOSE FROM EITHER:',FALSE);
- PROMPT(10,11,0,'1- POST TO AN ACCOUNT',FALSE);
- PROMPT(10,12,0,'2- GENERATE A STATEMENT',FALSE);
- PROMPT(10,14,0,'ENTER THE NUMBER OF YOUR CHOICE ',FALSE);
- REPEAT
- READ(I);
- UNTIL (I=1) OR (I=2);
-
- IF I=2 THEN STATEMENT:=TRUE ELSE STATEMENT:=FALSE;
- POST_TO_ANOTHER_ACCOUNT:=TRUE;
-
- WHILE (STATEMENT = FALSE) AND (POST_TO_ANOTHER_ACCOUNT = TRUE) DO POST;
-
-
-
- WHILE STATEMENT = TRUE DO STATMENT;
-
-
-
-
- END.
-