









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.
