Guardian Programmer's Guide

Table Of Contents
Using the Sequential Input/Output Procedures
Guardian Programmer’s Guide 421922-014
15 - 21
Sample Initialization
!------------------------------------------------------------
!Procedure for initializing all SIO files used by this
!application.
!------------------------------------------------------------
PROC INITIALIZE^FILES;
BEGIN
INT .INFNAME; !Input file name
INT .OUTFNAME; !Output file name
INT ERR;
INT .BUF[0:39]; !Contains logical file
!name
STRING .SBUF := @BUF '<<' 1; !String pointer to BUF
! Assign a logical file name to each SIO file:
SBUF ':=' [5, "INPUT"];
CALL_SET^FILE_ADDRESS_(ERR,INFILE,ASSIGN^LOGICALFILENAME,
@BUF);
SBUF ':=' [6,"OUTPUT"];
CALL_SET^FILE_ADDRESS_(ERR,OUTFILE,ASSIGN^LOGICALFILENAME,
@BUF);
SBUF ':=' [4,"DATA"];
CALL_SET^FILE_ADDRESS_(ERR,DFILE,ASSIGN^LOGICALFILENAME,
@BUF);
! Initialize the FCBs:
FCB^ARRAY[0] := @IN^FCB;
FCB^ARRAY[1] := @OUT^FCB;
CALL INITIALIZER(RUCB,,,,,,,NUM^FCBS,FCB^ARRAY);
! Get the physical file names for the input and output
! files:
CALL_CHECK^FILE_ADDRESS(ERR,INFILE,FILE^FILENAME^ADDR,
@INFNAME);
CALL_CHECK^FILE_ADDRESS(ERR,OUTFILE,FILE^FILENAME^ADDR,
@OUTFNAME);
! Find out whether the input and output files are the same
! and therefore used interactively. This may apply to a
! terminal or a process:
CALL DEVICEINFO(INFNAME,DEVICE^TYPE,PHYS^REC^LEN);
INTERACTIVE :=
IF (DEVICE^TYPE.<4:9> = TERMINAL OR
DEVICE^TYPE.<4:9> = PROCESS)
AND NOT FNAMECOMPARE(INFNAME,OUTFNAME)
THEN -1 ELSE 0;