GDSX Manual

Service Routines
Extended General Device Support (GDSX) Manual134303
8-59
Q^CP[X]
INT flags,t;
INT DISK^NAME [0:11];
INT readcnt := 20,
cnt := 0;
INT GOTSEM := 0;
DISC^NAME ':=' ["$DISK1 SUBVOLA FILEA "];
flags := 1;
GOTSEM := PSEM(SEM); ! PREVIOUSLY INITIALIZED
! IN USER^INITIALIZE
CALL ^FILE_OPEN ( DISK^NAME, FILE^NUM, flags);
IF <> THEN
BEGIN
.
.
Call DEBUG; ! DO ERROR HANDLING
END;
CALL ^READ (FILE^NUM, area, readcnt);
IF <> THEN
BEGIN
CALL VSEM(SEM);
Call DEBUG; ! DO ERROR HANDLING
RETURN;
END;
CALL ^Awaitio(FILE^NUM,@area,cnt);
IF <> THEN
BEGIN
CALL VSEM(SEM);
Call DEBUG; ! DO ERROR HANDLING
END;
! We can only checkpoint user global variables with Q^CP
t := 0;
CALL GET^CPSEM;
t := Q^CP (area,10,FILE^NUM,1); !We checkpoint
!data read from the disk file and
!file number so the backup process
!user globals are in sync with the
!primary
IF t THEN
CALL DO^CP; ! A DO^CP is done to copy data to the
! the backup process.
CALL GIVE^CPSEM;
IF GOTSEM THEN CALL VSEM(SEM);
.
END;