00000000: 28 2A 20 4B 4D 4D 4D 20 50 41 53 43 41 4C 20 46 |(* KMMM PASCAL F|
00000010: 49 4C 45 20 49 2F 4F 20 54 45 53 54 20 20 22 50 |ILE I/O TEST "P|
00000020: 46 49 4F 54 22 20 20 36 2F 31 39 2F 38 31 20 2A |FIOT" 6/19/81 *|
00000030: 29 0D 0A 43 4F 4E 53 54 20 43 4F 4E 53 54 46 49 |)..CONST CONSTFI|
00000040: 4C 45 4E 41 4D 45 3D 27 31 3A 50 41 53 43 54 45 |LENAME='1:PASCTE|
00000050: 53 54 27 3B 0D 0A 56 41 52 20 46 49 4C 45 31 2C |ST';..VAR FILE1,|
00000060: 20 46 49 4C 45 32 3A 20 54 45 58 54 3B 0D 0A 20 | FILE2: TEXT;.. |
00000070: 20 20 20 43 48 3A 20 43 48 41 52 3B 0D 0A 20 20 | CH: CHAR;.. |
00000080: 20 20 4C 49 4E 45 31 2C 20 4C 49 4E 45 32 3A 20 | LINE1, LINE2: |
00000090: 41 52 52 41 59 5B 31 2E 2E 34 30 5D 20 4F 46 20 |ARRAY[1..40] OF |
000000A0: 43 48 41 52 3B 0D 0A 20 20 20 20 49 2C 20 4A 2C |CHAR;.. I, J,|
000000B0: 20 4E 41 4D 45 53 49 5A 45 3A 20 49 4E 54 45 47 | NAMESIZE: INTEG|
000000C0: 45 52 3B 0D 0A 20 20 20 20 56 41 52 46 49 4C 45 |ER;.. VARFILE|
000000D0: 4E 41 4D 45 3A 20 41 52 52 41 59 5B 30 2E 2E 31 |NAME: ARRAY[0..1|
000000E0: 36 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 50 52 4F |6] OF CHAR;..PRO|
000000F0: 43 45 44 55 52 45 20 41 52 52 43 4F 4D 50 28 4C |CEDURE ARRCOMP(L|
00000100: 49 4D 49 54 3A 49 4E 54 45 47 45 52 3B 0D 0A 20 |IMIT:INTEGER;.. |
00000110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00000120: 20 46 49 4C 45 4E 4F 3A 43 48 41 52 29 3B 0D 0A | FILENO:CHAR);..|
00000130: 20 20 56 41 52 20 4A 3A 49 4E 54 45 47 45 52 3B | VAR J:INTEGER;|
00000140: 0D 0A 20 20 20 20 20 20 4E 4F 4D 41 54 43 48 3A |.. NOMATCH:|
00000150: 42 4F 4F 4C 45 41 4E 3B 0D 0A 20 20 42 45 47 49 |BOOLEAN;.. BEGI|
00000160: 4E 0D 0A 20 20 20 20 4E 4F 4D 41 54 43 48 3A 3D |N.. NOMATCH:=|
00000170: 46 41 4C 53 45 3B 0D 0A 20 20 20 20 46 4F 52 20 |FALSE;.. FOR |
00000180: 4A 20 3A 3D 20 31 20 54 4F 20 4C 49 4D 49 54 2D |J := 1 TO LIMIT-|
00000190: 32 0D 0A 20 20 20 20 20 20 44 4F 20 49 46 20 4C |2.. DO IF L|
000001A0: 49 4E 45 31 5B 4A 5D 3C 3E 4C 49 4E 45 32 5B 4A |INE1[J]<>LINE2[J|
000001B0: 5D 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 |].. |
000001C0: 54 48 45 4E 20 4E 4F 4D 41 54 43 48 20 3A 3D 20 |THEN NOMATCH := |
000001D0: 54 52 55 45 3B 0D 0A 20 20 20 20 49 46 20 4E 4F |TRUE;.. IF NO|
000001E0: 4D 41 54 43 48 0D 0A 20 20 20 20 20 20 20 20 54 |MATCH.. T|
000001F0: 48 45 4E 20 57 52 49 54 45 4C 4E 28 27 4D 49 53 |HEN WRITELN('MIS|
00000200: 4D 41 54 43 48 20 4F 4E 20 46 49 4C 45 20 27 2C |MATCH ON FILE ',|
00000210: 46 49 4C 45 4E 4F 29 0D 0A 20 20 45 4E 44 3B 0D |FILENO).. END;.|
00000220: 0A 42 45 47 49 4E 0D 0A 20 20 28 2A 20 50 52 49 |.BEGIN.. (* PRI|
00000230: 4E 54 20 50 52 4F 4D 50 54 20 4D 45 53 53 41 47 |NT PROMPT MESSAG|
00000240: 45 20 2A 29 0D 0A 20 20 57 52 49 54 45 28 27 45 |E *).. WRITE('E|
00000250: 4E 54 45 52 20 53 54 52 49 4E 47 20 54 4F 20 43 |NTER STRING TO C|
00000260: 4F 50 59 20 2D 20 27 29 3B 0D 0A 20 20 28 2A 20 |OPY - ');.. (* |
00000270: 52 45 41 44 20 41 52 52 41 59 20 46 52 4F 4D 20 |READ ARRAY FROM |
00000280: 53 43 52 45 45 4E 20 2A 29 0D 0A 20 20 49 20 3A |SCREEN *).. I :|
00000290: 3D 20 31 3B 0D 0A 20 20 52 45 50 45 41 54 0D 0A |= 1;.. REPEAT..|
000002A0: 20 20 20 20 52 45 41 44 28 43 48 29 3B 0D 0A 20 | READ(CH);.. |
000002B0: 20 20 20 4C 49 4E 45 31 5B 49 5D 20 3A 3D 20 43 | LINE1[I] := C|
000002C0: 48 3B 0D 0A 20 20 20 20 49 20 3A 3D 20 49 20 2B |H;.. I := I +|
000002D0: 20 31 0D 0A 20 20 55 4E 54 49 4C 20 43 48 3D 43 | 1.. UNTIL CH=C|
000002E0: 48 52 28 31 33 29 3B 0D 0A 20 20 57 52 49 54 45 |HR(13);.. WRITE|
000002F0: 4C 4E 3B 0D 0A 20 20 49 20 3A 3D 20 49 20 2D 20 |LN;.. I := I - |
00000300: 32 3B 0D 0A 20 20 28 2A 20 57 52 49 54 45 20 41 |2;.. (* WRITE A|
00000310: 52 52 41 59 20 54 4F 20 46 49 4C 45 20 57 49 54 |RRAY TO FILE WIT|
00000320: 48 20 43 4F 4E 53 54 41 4E 54 20 4E 41 4D 45 20 |H CONSTANT NAME |
00000330: 2A 29 0D 0A 20 20 52 45 57 52 49 54 45 28 46 49 |*).. REWRITE(FI|
00000340: 4C 45 31 2C 27 31 3A 50 41 53 43 54 45 53 54 27 |LE1,'1:PASCTEST'|
00000350: 29 3B 0D 0A 20 20 46 4F 52 20 4A 20 3A 3D 20 31 |);.. FOR J := 1|
00000360: 20 54 4F 20 49 0D 0A 20 20 20 20 44 4F 20 57 52 | TO I.. DO WR|
00000370: 49 54 45 28 46 49 4C 45 31 2C 4C 49 4E 45 31 5B |ITE(FILE1,LINE1[|
00000380: 4A 5D 29 3B 0D 0A 20 20 57 52 49 54 45 4C 4E 28 |J]);.. WRITELN(|
00000390: 46 49 4C 45 31 29 3B 0D 0A 20 20 28 2A 20 47 45 |FILE1);.. (* GE|
000003A0: 54 20 46 49 4C 45 20 4E 41 4D 45 20 46 52 4F 4D |T FILE NAME FROM|
000003B0: 20 4F 50 45 52 41 54 4F 52 20 2A 29 0D 0A 20 20 | OPERATOR *).. |
000003C0: 4E 41 4D 45 53 49 5A 45 20 3A 3D 20 30 3B 0D 0A |NAMESIZE := 0;..|
000003D0: 20 20 57 52 49 54 45 28 27 45 4E 54 45 52 20 46 | WRITE('ENTER F|
000003E0: 49 4C 45 20 4E 41 4D 45 3A 20 27 29 3B 0D 0A 20 |ILE NAME: ');.. |
000003F0: 20 52 45 50 45 41 54 0D 0A 20 20 20 20 4E 41 4D | REPEAT.. NAM|
00000400: 45 53 49 5A 45 20 3A 3D 20 4E 41 4D 45 53 49 5A |ESIZE := NAMESIZ|
00000410: 45 20 2B 20 31 3B 0D 0A 20 20 20 20 52 45 41 44 |E + 1;.. READ|
00000420: 28 43 48 29 3B 0D 0A 20 20 20 20 56 41 52 46 49 |(CH);.. VARFI|
00000430: 4C 45 4E 41 4D 45 5B 4E 41 4D 45 53 49 5A 45 5D |LENAME[NAMESIZE]|
00000440: 20 3A 3D 20 43 48 0D 0A 20 20 55 4E 54 49 4C 20 | := CH.. UNTIL |
00000450: 43 48 20 3D 20 43 48 52 28 31 33 29 3B 0D 0A 20 |CH = CHR(13);.. |
00000460: 20 57 52 49 54 45 4C 4E 3B 0D 0A 20 20 56 41 52 | WRITELN;.. VAR|
00000470: 46 49 4C 45 4E 41 4D 45 5B 30 5D 20 3A 3D 20 43 |FILENAME[0] := C|
00000480: 48 52 28 4E 41 4D 45 53 49 5A 45 20 2D 20 31 29 |HR(NAMESIZE - 1)|
00000490: 3B 0D 0A 20 20 28 2A 20 57 52 49 54 45 20 41 52 |;.. (* WRITE AR|
000004A0: 52 41 59 20 54 4F 20 46 49 4C 45 20 57 49 54 48 |RAY TO FILE WITH|
000004B0: 20 56 41 52 49 41 42 4C 45 20 4E 41 4D 45 20 2A | VARIABLE NAME *|
000004C0: 29 0D 0A 20 20 52 45 57 52 49 54 45 28 46 49 4C |).. REWRITE(FIL|
000004D0: 45 32 2C 56 41 52 46 49 4C 45 4E 41 4D 45 29 3B |E2,VARFILENAME);|
000004E0: 0D 0A 20 20 46 4F 52 20 4A 20 3A 3D 20 31 20 54 |.. FOR J := 1 T|
000004F0: 4F 20 49 0D 0A 20 20 20 20 44 4F 20 57 52 49 54 |O I.. DO WRIT|
00000500: 45 28 46 49 4C 45 32 2C 4C 49 4E 45 31 5B 4A 5D |E(FILE2,LINE1[J]|
00000510: 29 3B 0D 0A 20 20 57 52 49 54 45 4C 4E 28 46 49 |);.. WRITELN(FI|
00000520: 4C 45 32 29 3B 0D 0A 20 20 52 45 53 45 54 28 46 |LE2);.. RESET(F|
00000530: 49 4C 45 31 2C 43 4F 4E 53 54 46 49 4C 45 4E 41 |ILE1,CONSTFILENA|
00000540: 4D 45 29 3B 0D 0A 20 20 4A 20 3A 3D 20 31 3B 0D |ME);.. J := 1;.|
00000550: 0A 20 20 52 45 50 45 41 54 0D 0A 20 20 20 20 52 |. REPEAT.. R|
00000560: 45 41 44 28 46 49 4C 45 31 2C 43 48 29 3B 0D 0A |EAD(FILE1,CH);..|
00000570: 20 20 20 20 4C 49 4E 45 32 5B 4A 5D 20 3A 3D 20 | LINE2[J] := |
00000580: 43 48 3B 0D 0A 20 20 20 20 4A 20 3A 3D 20 4A 20 |CH;.. J := J |
00000590: 2B 20 31 0D 0A 20 20 55 4E 54 49 4C 20 43 48 3D |+ 1.. UNTIL CH=|
000005A0: 43 48 52 28 31 33 29 3B 0D 0A 20 20 41 52 52 43 |CHR(13);.. ARRC|
000005B0: 4F 4D 50 28 4A 2C 27 31 27 29 3B 0D 0A 20 20 52 |OMP(J,'1');.. R|
000005C0: 45 53 45 54 28 46 49 4C 45 32 2C 56 41 52 46 49 |ESET(FILE2,VARFI|
000005D0: 4C 45 4E 41 4D 45 29 3B 0D 0A 20 20 4A 20 3A 3D |LENAME);.. J :=|
000005E0: 20 31 3B 0D 0A 20 20 52 45 50 45 41 54 0D 0A 20 | 1;.. REPEAT.. |
000005F0: 20 20 20 52 45 41 44 28 46 49 4C 45 32 2C 43 48 | READ(FILE2,CH|
00000600: 29 3B 0D 0A 20 20 20 20 4C 49 4E 45 32 5B 4A 5D |);.. LINE2[J]|
00000610: 20 3A 3D 20 43 48 3B 0D 0A 20 20 20 20 4A 20 3A | := CH;.. J :|
00000620: 3D 20 4A 20 2B 20 31 0D 0A 20 20 55 4E 54 49 4C |= J + 1.. UNTIL|
00000630: 20 43 48 3D 43 48 52 28 31 33 29 3B 0D 0A 20 20 | CH=CHR(13);.. |
00000640: 41 52 52 43 4F 4D 50 28 4A 2C 27 32 27 29 3B 0D |ARRCOMP(J,'2');.|
00000650: 0A 20 20 28 2A 20 57 52 49 54 45 20 41 52 52 41 |. (* WRITE ARRA|
00000660: 59 20 54 4F 20 53 43 52 45 45 4E 20 2A 29 0D 0A |Y TO SCREEN *)..|
00000670: 20 20 46 4F 52 20 4A 20 3A 3D 20 31 20 54 4F 20 | FOR J := 1 TO |
00000680: 49 0D 0A 20 20 20 20 44 4F 20 57 52 49 54 45 28 |I.. DO WRITE(|
00000690: 4C 49 4E 45 31 5B 4A 5D 29 3B 0D 0A 20 20 57 52 |LINE1[J]);.. WR|
000006A0: 49 54 45 4C 4E 28 27 20 45 4E 44 27 29 0D 0A 45 |ITELN(' END')..E|
000006B0: 4E 44 2E 0D 0A 03 0D 0A |ND...... |
(* KMMM PASCAL FILE I/O TEST "PFIOT" 6
/19/81 *)..CONST CONSTFILENAME='1:PASCTE
ST';..VAR FILE1, FILE2: TEXT;.. CH: C
HAR;.. LINE1, LINE2: ARRAY[1..40] OF
CHAR;.. I, J, NAMESIZE: INTEGER;..
VARFILENAME: ARRAY[0..16] OF CHAR;..PRO
CEDURE ARRCOMP(LIMIT:INTEGER;..
FILENO:CHAR);.. VAR J:INTEGER;
.. NOMATCH:BOOLEAN;.. BEGIN.. N
OMATCH:=FALSE;.. FOR J := 1 TO LIMIT-
2.. DO IF LINE1[J]<>LINE2[J]..
THEN NOMATCH := TRUE;.. IF NO
MATCH.. THEN WRITELN('MISMATCH ON
FILE ',FILENO).. END;..BEGIN.. (* PRI
NT PROMPT MESSAGE *).. WRITE('ENTER STR
ING TO COPY - ');.. (* READ ARRAY FROM
SCREEN *).. I := 1;.. REPEAT.. READ
(CH);.. LINE1[I] := CH;.. I := I +
1.. UNTIL CH=CHR(13);.. WRITELN;.. I
:= I - 2;.. (* WRITE ARRAY TO FILE WIT
H CONSTANT NAME *).. REWRITE(FILE1,'1:P
ASCTEST');.. FOR J := 1 TO I.. DO WR
ITE(FILE1,LINE1[J]);.. WRITELN(FILE1);.
. (* GET FILE NAME FROM OPERATOR *)..
NAMESIZE := 0;.. WRITE('ENTER FILE NAME
: ');.. REPEAT.. NAMESIZE := NAMESIZ
E + 1;.. READ(CH);.. VARFILENAME[N
AMESIZE] := CH.. UNTIL CH = CHR(13);..
WRITELN;.. VARFILENAME[0] := CHR(NAMES
IZE - 1);.. (* WRITE ARRAY TO FILE WITH
VARIABLE NAME *).. REWRITE(FILE2,VARFI
LENAME);.. FOR J := 1 TO I.. DO WRIT
E(FILE2,LINE1[J]);.. WRITELN(FILE2);..
RESET(FILE1,CONSTFILENAME);.. J := 1;.
. REPEAT.. READ(FILE1,CH);.. LINE
2[J] := CH;.. J := J + 1.. UNTIL CH=
CHR(13);.. ARRCOMP(J,'1');.. RESET(FIL
E2,VARFILENAME);.. J := 1;.. REPEAT..
READ(FILE2,CH);.. LINE2[J] := CH;.
. J := J + 1.. UNTIL CH=CHR(13);..
ARRCOMP(J,'2');.. (* WRITE ARRAY TO SCR
EEN *).. FOR J := 1 TO I.. DO WRITE(
LINE1[J]);.. WRITELN(' END')..END......
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL