home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol028
/
receivab.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1984-04-29
|
17KB
|
838 lines
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.