Guardian Programmer's Guide

Table Of Contents
Using the Sequential Input/Output Procedures
Guardian Programmer’s Guide 421922-014
15 - 82
Using the SIO Procedures: An Example
! Assign a logical file name to each SIO file:
SBUF ':=' [5,"INPUT"];
CALL SET^FILE(INFILE,ASSIGN^LOGICALFILENAME,@BUF);
SBUF ':=' [6,"OUTPUT"];
CALL SET^FILE(OUTFILE,ASSIGN^LOGICALFILENAME,@BUF);
! Initialize the FCBs:
CALL INITIALIZER(RUCB);
! Get the physical file names for the input and output
! files:
@INFNAME := CHECK^FILE(INFILE,FILE^FILENAME^ADDR);
@OUTFNAME := CHECK^FILE(OUTFILE,FILE^FILENAME^ADDR);
! Make sure that the input file is a terminal:
CALL DEVICEINFO(INFNAME,DEVICE^TYPE,PHYS^REC^LEN);
IF (DEVICE^TYPE.<4:9> <> TERMINAL)
THEN CALL PROCESS_STOP_(!process^handle!,
!specifier!,
ABEND);
! Open the input file for reading and writing:
CALL SET^FILE(INFILE,ASSIGN^OPENACCESS,READWRITE^ACCESS);
CALL OPEN^FILE(COMMON^FCB,INFILE);
! Make sure that the output file is a disk file:
CALL DEVICEINFO(OUTFNAME,DEVICE^TYPE,PHYS^REC^LEN);
IF (DEVICE^TYPE.<4:9> <> DISK) THEN
BEGIN
PRINT^STR ("Illegal Output File Name ");
CALL PROCESS_STOP_(!process^handle!,
!specifier!,
ABEND);
END;
! Open the output file with write-only access to create it
! if it does not exist. Also get the file type to know
! whether to use a block buffer when we reopen the file:
CALL SET^FILE(OUTFILE,ASSIGN^OPENACCESS,WRITE^ACCESS);
CALL OPEN^FILE(COMMON^FCB,OUTFILE,OUTBLKBUF,OUTBLKLEN);
FILE^TYPE := CHECK^FILE(OUTFILE,FILE^FILEINFO);
CALL CLOSE^FILE(OUTFILE);
END;