Vous êtes sur la page 1sur 6

UNIT {$%+} PFUTIL;

{$UFTNLIB1.OBJ}
INTERFACE
USES {$UFTNLIB2.OBJ} system_library,
{$UUTILS.LIB} DEFNS,
{$UUTILS.LIB} PASCAL;
{$SPASCAL }{$I-}{$M-}{$P-}{$Q+}{$R-}{$D+}
FUNCTION IOSTAT: LONGINT;
FUNCTION LUNOF(VAR AFILE:DPOINTER): LONGINT;
FUNCTION BUSY(VAR LUN:I4): I4;
FUNCTION BUSYL(VAR LUN:I2): I4;
FUNCTION BUSYF(VAR AFILE:DPOINTER): I4;
{ PROCEDURE CLEARU(VAR LUN:I4);
PROCEDURE CLEARL(VAR LUN:I2);
PROCEDURE CLEARF(VAR AFILE:DPOINTER); }
PROCEDURE SET_ACL(ALUN,AACL:I2);
PROCEDURE PROTECT(ALUN:I2);
PROCEDURE UNPROTECT(ALUN:I2);
PROCEDURE WIND_(ALUN:I2);
PROCEDURE REWIND_(ALUN:I2);
{FUNCTION ZREAD2(VAR AFILE:P2FILE;VAR IT:MEMORYI2;VAR LENGTH_:I4): I4;
FUNCTION ZWRIT2(VAR AFILE:P2FILE;VAR IT:MEMORYI2;VAR LENGTH_:I4): I4; }
FUNCTION REABUF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMORYB;VAR LENGTH_:I4):I4;
FUNCTION WRIBUF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMORYB;VAR LENGTH_:I4):I4;
FUNCTION APPBUF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMORYB;VAR LENGTH_:I4):I4;
FUNCTION REAIBF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMB;VAR LENGTH_:I4):I4;
FUNCTION WRIIBF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMB;VAR LENGTH_:I4):I4;
FUNCTION APPIBF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMB;VAR LENGTH_:I4):I4;
IMPLEMENTATION
{$SPFUTIL }{$I-}{$M-}{$R-}{$D+}
CONST OPEN_MAX_COUNT = 1;
VAR OPEN_TRY_COUNT : INTEGER;
IK : LONGINT;
AI4 : I4;
AI2, ERROR: I2;
ABYTE:BYTE;
IJ, IJK, JK, LUN, I4LUN : I4;
I2LUN : I2;
NAME : FNAME;
D_PTR : DPOINTER;
{$SPASCAL }{$I-}{$M-}{$R-}{$D-}
FUNCTION IOSTAT;
BEGIN IOSTAT := IORESULT; END;
FUNCTION LUNOF;
BEGIN
LUNOF := ORD4(GETLUN(AFILE));
END;
FUNCTION BUSY;
VAR LUN2: I2;
BEGIN
{ LUN2 := ORD(LUN); }
IF (UNITBUSY(LUN)) THEN
BUSY := 1
ELSE
BUSY := 0;
END;
FUNCTION BUSYL;
BEGIN
IF (UNITBUSY(LUN)) THEN
BUSYL := 1
ELSE
BUSYL := 0;
END;
FUNCTION BUSYF;
VAR LUN: I2;
BEGIN
LUN := GETLUN(AFILE);
IF (UNITBUSY(LUN)) THEN
BUSYF := 1
ELSE
BUSYF := 0;
END;
(* PROCEDURE CLEARU;
BEGIN
UNITCLEAR(LUN);
END;
PROCEDURE CLEAR2;
BEGIN
UNITCLEAR(LUN);
END;
PROCEDURE CLEARF;
VAR LUN: I2;
BEGIN
LUN := GETLUN(AFILE);
UNITCLEAR(LUN);
END; *)
PROCEDURE SET_ACL;
BEGIN
LUN := ALUN;
IJ := AACL;
ACLSET(LUN,IJ);
END;
PROCEDURE PROTECT;
BEGIN
SET_ACL(LUN,7);
END;
PROCEDURE UNPROTECT;
BEGIN
SET_ACL(LUN,0);
END;
PROCEDURE WIND_;
BEGIN
LUN := ALUN;
WIND(LUN);
END;
PROCEDURE REWIND_;
BEGIN
LUN := ALUN;
REWIND(LUN);
END;
(* FUNCTION ZREAD2;
BEGIN
ERROR := 0;
AI4 := 0;
REPEAT
IF (EOF(AFILE^)) THEN
ERROR := -1
ELSE BEGIN
READ(AFILE^,IT[AI4]);
ERROR := IORESULT;
END;
INCR(AI4);
UNTIL ((ERROR<>0) OR (AI4>=LENGTH_));
LENGTH_ := AI4;
ZREAD2 := ERROR;
END;
FUNCTION ZWRIT2;
BEGIN
ERROR := 0;
AI4 := 0;
REPEAT
WRITE(AFILE^,IT[AI4]);
ERROR := ORD4(IORESULT);
INCR(AI4);
UNTIL ((ERROR<>0) OR (AI4>=LENGTH_));
LENGTH_ := AI4;
ZWRIT2 := ERROR;
END; *)
FUNCTION REABUF;
{FUNCTION REABUF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMORYB;VAR LEN:I4):I4;}
LABEL 1;
BEGIN
1: RESET(AFILE^,NAME);
AI2 := IORESULT;
IF (AI2=-31488) THEN GOTO 1;
REABUF := AI2;
LENGTH_ := -1;
IF (AI2=132) THEN EXIT(REABUF);
IF (AI2=130) THEN EXIT(REABUF);
ERROR := 0;
AI4 := 0;
REPEAT
IF (EOF(AFILE^)) THEN
ERROR := -1
ELSE BEGIN
READ(AFILE^,IT[AI4]);
ERROR := IORESULT;
END;
INCR(AI4);
UNTIL ((ERROR<>0) OR (AI4>=LENGTH_));
LENGTH_ := AI4;
REABUF := ERROR;
CLOSE(AFILE^,LOCK)
END;
FUNCTION WRIBUF;
{FUNCTION WRIBUF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMORYB;VAR LEN:I4):I4;}
LABEL 1, 2;
VAR LUN:I2;
BEGIN
2: UNPROT_(NAME);
1: RESET(AFILE^,NAME);
ERROR := IORESULT;
IF ((ERROR=-31488) OR (ERROR=34048)) THEN GOTO 1;
WRIBUF := ERROR;
LENGTH_ := -1;
IF (ERROR=132) THEN EXIT(WRIBUF);
IF (ERROR=130) THEN BEGIN
REWRITE(AFILE^,NAME);
WRITE(AFILE^,IT[0]);
CLOSE(AFILE^,LOCK);
GOTO 1;
END;
D_PTR := POINTER(ORD4(AFILE));
LUN := GETLUN(D_PTR);
{ UNPROTECT(LUN); }
ERROR := 0;
AI4 := 0;
REPEAT
WRITE(AFILE^,IT[AI4]);
ERROR := ORD4(IORESULT);
INCR(AI4);
UNTIL ((ERROR<>0) OR (AI4>=LENGTH_));
LENGTH_ := AI4;
WRIBUF := ERROR;
CLOSE(AFILE^,LOCK)
END;
FUNCTION APPBUF;
{FUNCTION APPBUF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMORYB;VAR LEN:I4):I4;}
LABEL 1, 2;
VAR LUN:I2; I4_ONE:I4;
BEGIN
2: UNPROT_(NAME);
1: RESET(AFILE^,NAME);
ERROR := IORESULT;
IF ((ERROR=-31488) OR (ERROR=34048)) THEN GOTO 1;
APPBUF := ERROR;
LENGTH_ := -1;
IF (ERROR=132) THEN EXIT(APPBUF);
IF (ERROR=130) THEN BEGIN
REWRITE(AFILE^,NAME);
CLOSE(AFILE^,LOCK);
GOTO 1;
END;
D_PTR := POINTER(ORD4(AFILE));
LUN := GETLUN(D_PTR);
WIND_(LUN);
AI4 := LENG_FI(NAME);
{ I4_ONE := 1;
AI4 := A4__44(AI4,I4_ONE); }
SEEK(AFILE^,AI4);
ERROR := 0;
AI4 := 0;
REPEAT
WRITE(AFILE^,IT[AI4]);
ERROR := ORD4(IORESULT);
INCR(AI4);
UNTIL ((ERROR<>0) OR (AI4>=LENGTH_));
LENGTH_ := AI4;
APPBUF := ERROR;
CLOSE(AFILE^,LOCK)
END;
FUNCTION REAIBF;
{FUNCTION REAIBF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMORYB;VAR LEN:I4):I4;}
LABEL 1;
BEGIN
1: RESET(AFILE^,NAME);
AI2 := IORESULT;
IF (AI2=-31488) THEN GOTO 1;
REAIBF := AI2;
LENGTH_ := -1;
IF (AI2=132) THEN EXIT(REAIBF);
IF (AI2=130) THEN EXIT(REAIBF);
ERROR := 0;
AI4 := 0;
REPEAT
IF (EOF(AFILE^)) THEN
ERROR := -1
ELSE BEGIN
READ(AFILE^,IT^[AI4]);
ERROR := IORESULT;
END;
INCR(AI4);
UNTIL ((ERROR<>0) OR (AI4>=LENGTH_));
LENGTH_ := AI4;
REAIBF := ERROR;
CLOSE(AFILE^,LOCK)
END;
FUNCTION WRIIBF;
{FUNCTION WRIIBF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMORYB;VAR LEN:I4):I4;}
LABEL 1, 2;
VAR LUN:I2;
BEGIN
2: UNPROT_(NAME);
1: RESET(AFILE^,NAME);
ERROR := IORESULT;
IF ((ERROR=-31488) OR (ERROR=34048)) THEN GOTO 1;
WRIIBF := ERROR;
LENGTH_ := -1;
IF (ERROR=132) THEN EXIT(WRIIBF);
IF (ERROR=130) THEN BEGIN
REWRITE(AFILE^,NAME);
WRITE(AFILE^,IT^[0]);
CLOSE(AFILE^,LOCK);
GOTO 1;
END;
D_PTR := POINTER(ORD4(AFILE));
LUN := GETLUN(D_PTR);
{ UNPROTECT(LUN); }
ERROR := 0;
AI4 := 0;
REPEAT
WRITE(AFILE^,IT^[AI4]);
ERROR := ORD4(IORESULT);
INCR(AI4);
UNTIL ((ERROR<>0) OR (AI4>=LENGTH_));
LENGTH_ := AI4;
WRIIBF := ERROR;
CLOSE(AFILE^,LOCK)
END;
FUNCTION APPIBF;
{FUNCTION APPIBF(VAR NAME:FNAME;VAR AFILE:PBFILE;VAR IT:MEMORYB;VAR LEN:I4):I4;}
LABEL 1, 2;
VAR LUN:I2; I4_ONE:I4;
BEGIN
2: UNPROT_(NAME);
1: RESET(AFILE^,NAME);
ERROR := IORESULT;
IF ((ERROR=-31488) OR (ERROR=34048)) THEN GOTO 1;
APPIBF := ERROR;
LENGTH_ := -1;
IF (ERROR=132) THEN EXIT(APPIBF);
IF (ERROR=130) THEN BEGIN
REWRITE(AFILE^,NAME);
CLOSE(AFILE^,LOCK);
GOTO 1;
END;
D_PTR := POINTER(ORD4(AFILE));
LUN := GETLUN(D_PTR);
WIND_(LUN);
AI4 := LENG_FI(NAME);
{ I4_ONE := 1;
AI4 := A4__44(AI4,I4_ONE); }
SEEK(AFILE^,AI4);
ERROR := 0;
AI4 := 0;
REPEAT
WRITE(AFILE^,IT^[AI4]);
ERROR := ORD4(IORESULT);
INCR(AI4);
UNTIL ((ERROR<>0) OR (AI4>=LENGTH_));
LENGTH_ := AI4;
APPIBF := ERROR;
CLOSE(AFILE^,LOCK)
END;
END.

Vous aimerez peut-être aussi