00000000: 50 52 4F 47 52 41 4D 20 50 46 49 4F 54 28 4B 4D |PROGRAM PFIOT(KM|
00000010: 4D 4D 20 50 41 53 43 41 4C 20 46 49 4C 45 20 49 |MM PASCAL FILE I|
00000020: 2F 4F 20 54 45 53 54 2C 31 2F 35 2F 38 33 29 3B |/O TEST,1/5/83);|
00000030: 0D 0D 43 4F 4E 53 54 20 43 4F 4E 53 54 46 49 4C |..CONST CONSTFIL|
00000040: 45 4E 41 4D 45 3D 27 30 3A 50 41 53 43 54 45 53 |ENAME='0:PASCTES|
00000050: 54 27 3B 0D 0D 56 41 52 20 46 49 4C 45 31 2C 20 |T';..VAR FILE1, |
00000060: 46 49 4C 45 32 3A 20 54 45 58 54 3B 0D 20 20 20 |FILE2: TEXT;. |
00000070: 20 43 48 3A 20 43 48 41 52 3B 0D 20 20 20 20 4C | CH: CHAR;. L|
00000080: 49 4E 45 31 2C 20 4C 49 4E 45 32 3A 20 41 52 52 |INE1, LINE2: ARR|
00000090: 41 59 5B 31 2E 2E 34 30 5D 20 4F 46 20 43 48 41 |AY[1..40] OF CHA|
000000A0: 52 3B 0D 20 20 20 20 49 2C 20 4A 2C 20 53 49 5A |R;. I, J, SIZ|
000000B0: 45 3A 20 49 4E 54 45 47 45 52 3B 0D 20 20 20 20 |E: INTEGER;. |
000000C0: 56 41 52 46 49 4C 45 4E 41 4D 45 3A 20 53 54 52 |VARFILENAME: STR|
000000D0: 49 4E 47 3B 0D 0D 50 52 4F 43 45 44 55 52 45 20 |ING;..PROCEDURE |
000000E0: 41 52 52 43 4F 4D 50 28 4C 49 4D 49 54 3A 49 4E |ARRCOMP(LIMIT:IN|
000000F0: 54 45 47 45 52 3B 0D 20 20 20 20 20 20 20 20 20 |TEGER;. |
00000100: 20 20 20 20 20 20 20 20 20 46 49 4C 45 4E 4F 3A | FILENO:|
00000110: 43 48 41 52 29 3B 0D 20 20 56 41 52 20 4A 3A 49 |CHAR);. VAR J:I|
00000120: 4E 54 45 47 45 52 3B 0D 20 20 20 20 20 20 4E 4F |NTEGER;. NO|
00000130: 4D 41 54 43 48 3A 42 4F 4F 4C 45 41 4E 3B 0D 20 |MATCH:BOOLEAN;. |
00000140: 20 42 45 47 49 4E 0D 20 20 20 20 4E 4F 4D 41 54 | BEGIN. NOMAT|
00000150: 43 48 3A 3D 46 41 4C 53 45 3B 0D 20 20 20 20 46 |CH:=FALSE;. F|
00000160: 4F 52 20 4A 20 3A 3D 20 31 20 54 4F 20 4C 49 4D |OR J := 1 TO LIM|
00000170: 49 54 2D 32 0D 20 20 20 20 20 20 44 4F 20 49 46 |IT-2. DO IF|
00000180: 20 4C 49 4E 45 31 5B 4A 5D 3C 3E 4C 49 4E 45 32 | LINE1[J]<>LINE2|
00000190: 5B 4A 5D 0D 20 20 20 20 20 20 20 20 20 20 20 20 |[J]. |
000001A0: 20 54 48 45 4E 20 4E 4F 4D 41 54 43 48 20 3A 3D | THEN NOMATCH :=|
000001B0: 20 54 52 55 45 3B 0D 20 20 20 20 49 46 20 4E 4F | TRUE;. IF NO|
000001C0: 4D 41 54 43 48 0D 20 20 20 20 20 20 20 20 54 48 |MATCH. TH|
000001D0: 45 4E 20 57 52 49 54 45 4C 4E 28 27 4D 49 53 4D |EN WRITELN('MISM|
000001E0: 41 54 43 48 20 4F 4E 20 46 49 4C 45 20 27 2C 46 |ATCH ON FILE ',F|
000001F0: 49 4C 45 4E 4F 29 0D 20 20 45 4E 44 3B 0D 0D 42 |ILENO). END;..B|
00000200: 45 47 49 4E 0D 20 20 28 2A 20 50 52 49 4E 54 20 |EGIN. (* PRINT |
00000210: 50 52 4F 4D 50 54 20 4D 45 53 53 41 47 45 20 2A |PROMPT MESSAGE *|
00000220: 29 0D 20 20 57 52 49 54 45 28 27 45 4E 54 45 52 |). WRITE('ENTER|
00000230: 20 53 54 52 49 4E 47 20 54 4F 20 43 4F 50 59 20 | STRING TO COPY |
00000240: 2D 20 27 29 3B 0D 20 20 28 2A 20 52 45 41 44 20 |- ');. (* READ |
00000250: 41 52 52 41 59 20 46 52 4F 4D 20 53 43 52 45 45 |ARRAY FROM SCREE|
00000260: 4E 20 2A 29 0D 20 20 49 20 3A 3D 20 31 3B 0D 20 |N *). I := 1;. |
00000270: 20 52 45 50 45 41 54 0D 20 20 20 20 52 45 41 44 | REPEAT. READ|
00000280: 28 43 48 29 3B 0D 20 20 20 20 4C 49 4E 45 31 5B |(CH);. LINE1[|
00000290: 49 5D 20 3A 3D 20 43 48 3B 0D 20 20 20 20 49 20 |I] := CH;. I |
000002A0: 3A 3D 20 49 20 2B 20 31 0D 20 20 55 4E 54 49 4C |:= I + 1. UNTIL|
000002B0: 20 43 48 3D 43 48 52 28 31 33 29 3B 0D 20 20 57 | CH=CHR(13);. W|
000002C0: 52 49 54 45 4C 4E 3B 0D 20 20 49 20 3A 3D 20 49 |RITELN;. I := I|
000002D0: 20 2D 20 32 3B 0D 20 20 28 2A 20 57 52 49 54 45 | - 2;. (* WRITE|
000002E0: 20 41 52 52 41 59 20 54 4F 20 46 49 4C 45 20 57 | ARRAY TO FILE W|
000002F0: 49 54 48 20 43 4F 4E 53 54 41 4E 54 20 4E 41 4D |ITH CONSTANT NAM|
00000300: 45 20 2A 29 0D 20 20 52 45 57 52 49 54 45 28 46 |E *). REWRITE(F|
00000310: 49 4C 45 31 2C 27 30 3A 50 41 53 43 54 45 53 54 |ILE1,'0:PASCTEST|
00000320: 27 29 3B 0D 20 20 46 4F 52 20 4A 20 3A 3D 20 31 |');. FOR J := 1|
00000330: 20 54 4F 20 49 0D 20 20 20 20 44 4F 20 57 52 49 | TO I. DO WRI|
00000340: 54 45 28 46 49 4C 45 31 2C 4C 49 4E 45 31 5B 4A |TE(FILE1,LINE1[J|
00000350: 5D 29 3B 0D 20 20 57 52 49 54 45 4C 4E 28 46 49 |]);. WRITELN(FI|
00000360: 4C 45 31 29 3B 0D 20 20 28 2A 20 47 45 54 20 46 |LE1);. (* GET F|
00000370: 49 4C 45 20 4E 41 4D 45 20 46 52 4F 4D 20 4F 50 |ILE NAME FROM OP|
00000380: 45 52 41 54 4F 52 20 2A 29 0D 20 20 52 45 50 45 |ERATOR *). REPE|
00000390: 41 54 0D 20 20 20 20 57 52 49 54 45 28 27 45 4E |AT. WRITE('EN|
000003A0: 54 45 52 20 46 49 4C 45 20 4E 41 4D 45 3A 20 27 |TER FILE NAME: '|
000003B0: 29 3B 0D 20 20 20 20 52 45 41 44 4C 4E 28 56 41 |);. READLN(VA|
000003C0: 52 46 49 4C 45 4E 41 4D 45 29 3B 0D 20 20 20 20 |RFILENAME);. |
000003D0: 53 49 5A 45 3A 3D 4C 45 4E 47 54 48 28 56 41 52 |SIZE:=LENGTH(VAR|
000003E0: 46 49 4C 45 4E 41 4D 45 29 0D 20 20 55 4E 54 49 |FILENAME). UNTI|
000003F0: 4C 20 53 49 5A 45 3E 32 3B 0D 20 20 28 2A 20 47 |L SIZE>2;. (* G|
00000400: 45 54 20 44 52 49 56 45 20 50 52 45 46 49 58 20 |ET DRIVE PREFIX |
00000410: 49 46 20 4E 4F 54 20 50 52 45 53 45 4E 54 20 2A |IF NOT PRESENT *|
00000420: 29 0D 20 20 49 46 20 56 41 52 46 49 4C 45 4E 41 |). IF VARFILENA|
00000430: 4D 45 5B 32 5D 3C 3E 27 3A 27 0D 20 20 20 20 20 |ME[2]<>':'. |
00000440: 20 54 48 45 4E 20 42 45 47 49 4E 0D 20 20 20 20 | THEN BEGIN. |
00000450: 20 20 20 20 20 20 20 20 20 57 52 49 54 45 28 27 | WRITE('|
00000460: 44 52 49 56 45 3F 20 27 29 3B 0D 20 20 20 20 20 |DRIVE? ');. |
00000470: 20 20 20 20 20 20 20 20 52 45 41 44 4C 4E 28 43 | READLN(C|
00000480: 48 29 3B 0D 20 20 20 20 20 20 20 20 20 20 20 20 |H);. |
00000490: 20 56 41 52 46 49 4C 45 4E 41 4D 45 3A 3D 43 4F | VARFILENAME:=CO|
000004A0: 4E 43 41 54 28 43 48 2C 27 3A 27 2C 56 41 52 46 |NCAT(CH,':',VARF|
000004B0: 49 4C 45 4E 41 4D 45 29 0D 20 20 20 20 20 20 20 |ILENAME). |
000004C0: 20 20 20 20 45 4E 44 3B 0D 20 20 28 2A 20 57 52 | END;. (* WR|
000004D0: 49 54 45 20 41 52 52 41 59 20 54 4F 20 46 49 4C |ITE ARRAY TO FIL|
000004E0: 45 20 57 49 54 48 20 56 41 52 49 41 42 4C 45 20 |E WITH VARIABLE |
000004F0: 4E 41 4D 45 20 2A 29 0D 20 20 52 45 57 52 49 54 |NAME *). REWRIT|
00000500: 45 28 46 49 4C 45 32 2C 56 41 52 46 49 4C 45 4E |E(FILE2,VARFILEN|
00000510: 41 4D 45 29 3B 0D 20 20 46 4F 52 20 4A 20 3A 3D |AME);. FOR J :=|
00000520: 20 31 20 54 4F 20 49 0D 20 20 20 20 44 4F 20 57 | 1 TO I. DO W|
00000530: 52 49 54 45 28 46 49 4C 45 32 2C 4C 49 4E 45 31 |RITE(FILE2,LINE1|
00000540: 5B 4A 5D 29 3B 0D 20 20 57 52 49 54 45 4C 4E 28 |[J]);. WRITELN(|
00000550: 46 49 4C 45 32 29 3B 0D 20 20 52 45 53 45 54 28 |FILE2);. RESET(|
00000560: 46 49 4C 45 31 2C 43 4F 4E 53 54 46 49 4C 45 4E |FILE1,CONSTFILEN|
00000570: 41 4D 45 29 3B 0D 20 20 4A 20 3A 3D 20 31 3B 0D |AME);. J := 1;.|
00000580: 20 20 52 45 50 45 41 54 0D 20 20 20 20 52 45 41 | REPEAT. REA|
00000590: 44 28 46 49 4C 45 31 2C 43 48 29 3B 0D 20 20 20 |D(FILE1,CH);. |
000005A0: 20 4C 49 4E 45 32 5B 4A 5D 20 3A 3D 20 43 48 3B | LINE2[J] := CH;|
000005B0: 0D 20 20 20 20 4A 20 3A 3D 20 4A 20 2B 20 31 0D |. J := J + 1.|
000005C0: 20 20 55 4E 54 49 4C 20 43 48 3D 43 48 52 28 31 | UNTIL CH=CHR(1|
000005D0: 33 29 3B 0D 20 20 41 52 52 43 4F 4D 50 28 4A 2C |3);. ARRCOMP(J,|
000005E0: 27 31 27 29 3B 0D 20 20 52 45 53 45 54 28 46 49 |'1');. RESET(FI|
000005F0: 4C 45 32 2C 56 41 52 46 49 4C 45 4E 41 4D 45 29 |LE2,VARFILENAME)|
00000600: 3B 0D 20 20 4A 20 3A 3D 20 31 3B 0D 20 20 52 45 |;. J := 1;. RE|
00000610: 50 45 41 54 0D 20 20 20 20 52 45 41 44 28 46 49 |PEAT. READ(FI|
00000620: 4C 45 32 2C 43 48 29 3B 0D 20 20 20 20 4C 49 4E |LE2,CH);. LIN|
00000630: 45 32 5B 4A 5D 20 3A 3D 20 43 48 3B 0D 20 20 20 |E2[J] := CH;. |
00000640: 20 4A 20 3A 3D 20 4A 20 2B 20 31 0D 20 20 55 4E | J := J + 1. UN|
00000650: 54 49 4C 20 43 48 3D 43 48 52 28 31 33 29 3B 0D |TIL CH=CHR(13);.|
00000660: 20 20 41 52 52 43 4F 4D 50 28 4A 2C 27 32 27 29 | ARRCOMP(J,'2')|
00000670: 3B 0D 20 20 28 2A 20 57 52 49 54 45 20 41 52 52 |;. (* WRITE ARR|
00000680: 41 59 20 54 4F 20 53 43 52 45 45 4E 20 2A 29 0D |AY TO SCREEN *).|
00000690: 20 20 46 4F 52 20 4A 20 3A 3D 20 31 20 54 4F 20 | FOR J := 1 TO |
000006A0: 49 0D 20 20 20 20 44 4F 20 57 52 49 54 45 28 4C |I. DO WRITE(L|
000006B0: 49 4E 45 31 5B 4A 5D 29 3B 0D 20 20 57 52 49 54 |INE1[J]);. WRIT|
000006C0: 45 4C 4E 28 27 20 45 4E 44 27 29 0D 45 4E 44 2E |ELN(' END').END.|
000006D0: 0D 03 54 |..T |
PROGRAM PFIOT(KMMM PASCAL FILE I/O TEST,
1/5/83);..CONST CONSTFILENAME='0:PASCTES
T';..VAR FILE1, FILE2: TEXT;. CH: CHA
R;. LINE1, LINE2: ARRAY[1..40] OF CHA
R;. I, J, SIZE: INTEGER;. VARFILEN
AME: STRING;..PROCEDURE ARRCOMP(LIMIT:IN
TEGER;. FILENO:CHAR);.
VAR J:INTEGER;. NOMATCH:BOOLEAN;.
BEGIN. NOMATCH:=FALSE;. FOR J :=
1 TO LIMIT-2. DO IF LINE1[J]<>LINE2
[J]. THEN NOMATCH := TRUE;.
IF NOMATCH. THEN WRITELN('MISM
ATCH ON FILE ',FILENO). END;..BEGIN. (
* PRINT PROMPT MESSAGE *). WRITE('ENTER
STRING TO COPY - ');. (* READ ARRAY FR
OM SCREEN *). I := 1;. REPEAT. READ
(CH);. LINE1[I] := CH;. I := I + 1
. UNTIL CH=CHR(13);. WRITELN;. I := I
- 2;. (* WRITE ARRAY TO FILE WITH CONS
TANT NAME *). REWRITE(FILE1,'0:PASCTEST
');. FOR J := 1 TO I. DO WRITE(FILE1
,LINE1[J]);. WRITELN(FILE1);. (* GET F
ILE NAME FROM OPERATOR *). REPEAT. W
RITE('ENTER FILE NAME: ');. READLN(VA
RFILENAME);. SIZE:=LENGTH(VARFILENAME
). UNTIL SIZE>2;. (* GET DRIVE PREFIX
IF NOT PRESENT *). IF VARFILENAME[2]<>'
:'. THEN BEGIN. WRITE('
DRIVE? ');. READLN(CH);.
VARFILENAME:=CONCAT(CH,':',VARF
ILENAME). END;. (* WRITE ARRA
Y TO FILE WITH VARIABLE NAME *). REWRIT
E(FILE2,VARFILENAME);. FOR J := 1 TO I.
DO WRITE(FILE2,LINE1[J]);. WRITELN(
FILE2);. RESET(FILE1,CONSTFILENAME);.
J := 1;. REPEAT. READ(FILE1,CH);.
LINE2[J] := CH;. J := J + 1. UNTIL
CH=CHR(13);. ARRCOMP(J,'1');. RESET(FI
LE2,VARFILENAME);. J := 1;. REPEAT.
READ(FILE2,CH);. LINE2[J] := CH;.
J := J + 1. UNTIL CH=CHR(13);. ARRCOM
P(J,'2');. (* WRITE ARRAY TO SCREEN *).
FOR J := 1 TO I. DO WRITE(LINE1[J])
;. WRITELN(' END').END...T
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL