FCS-11 is a collection of record management macros and subroutines used to maintain and manipulate data files. FCS, in contrast to RMS supports only sequential and fixed record length file organizations. This HELP file contains only brief summaries of the MACRO-11 assembly language interface to FCS-11. For more detailed information see the RSX-11M/M-PLUS I/O Operations Manual. The following HELP commands will display additonal information: HELP FCS ERRORS will display FCS I/O error information HELP FCS MACROS will display the MACRO-11 interface macro call formats. HELP FCS BIGBUFFER will display information on how to use the FCS bigbuffering feature 2 ERRORS @FCSERROR.HLP 2 MACROS BDOFF$ ARG CBYTE$ VAR,OFFSET CLOSE$ FDB,ERR CMOV$2 VAR,OFFSET CMOV$B VAR,OFFSET CMOV$W VAR,OFFSET CWORD$ VAR,OFFSET DEF$G VAR,SIZ ;DEFINE GLOBAL OFFSET DEF$I IVAL ;INITIALIZE DEFINITION DEF$L SYM,SIZ DEF$N VAR,SIZ ;DEFINE NO OFFSET-CALCULATE THE SIZE DEFIN$ SYM,VAL DELET$ FDB,ERR FCSBT$ GLOBL FCSBT$ ARG FCSMC$ FDAT$A RTYP,RATT,RSIZ,CNTG,ALOC FDAT$R FDB,RTYP,RATT,RSIZ,CNTG,ALOC FDBDF$ FDBF$A EFN,OVBS,MBCT,MBFG FDBF$R FDB,EFN,OVBS,MBCT,MBFG FDBK$A BKDA,BKDS,BKVB,BKEF,BKST,BKDN FDBK$R FDB,BKDA,BKDS,BKVB,BKEF,BKST,BKDN FDBSZ$ ;DEFINE S.FDB AS SIZE OF FDB FDOF$L FDOFF$ ARG FDOP$A LUN,DSPT,DFNB,FACC,ACTL FDOP$R FDB,LUN,DSPT,DFNB,FACC,ACTL FDRC$A RACC,URBA,URBS FDRC$R FDB,RACC,URBA,URBS FDSOF$ ARG FHDOF$ ARG FINIT$ FSROF$ ARG FSRSZ$ FBUFS,BUFSIZ,PSECT GET$ FDB,URBA,URBS,ERR GET$R FDB,URBA,URBS,LRCNM,HRCNM,ERR GET$S FDB,URBA,URBS,ERR HMBOF$ ARG LDFDB$ FDB NBOF$L NBOFF$ ARG NMBLK$ FNAM,FTYP,FVER,DVNM,UNIT OFID$ FDB,FACC,LUN,DSPT,DFNB,RACC,URBA,URBS,ERR OFID$A FDB,LUN,DSPT,RACC,URBA,URBS,ERR OFID$M FDB,LUN,DSPT,RACC,URBA,URBS,ERR OFID$R FDB,LUN,DSPT,RACC,URBA,URBS,ERR OFID$U FDB,LUN,DSPT,RACC,URBA,URBS,ERR OFID$W FDB,LUN,DSPT,RACC,URBA,URBS,ERR OFNB$ FDB,FACC,LUN,DSPT,DFNB,RACC,URBA,URBS,ERR OFNB$A FDB,LUN,DSPT,RACC,URBA,URBS,ERR OFNB$M FDB,LUN,DSPT,RACC,URBA,URBS,ERR OFNB$R FDB,LUN,DSPT,RACC,URBA,URBS,ERR OFNB$U FDB,LUN,DSPT,RACC,URBA,URBS,ERR OFNB$W FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPEN$ FDB,FACC,LUN,DSPT,DFNB,RACC,URBA,URBS,ERR OPEN$A FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPEN$M FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPEN$R FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPEN$U FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPEN$W FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPNS$A FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPNS$M FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPNS$R FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPNS$U FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPNS$W FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPNT$D FDB,LUN,DSPT,RACC,URBA,URBS,ERR OPNT$W FDB,LUN,DSPT,RACC,URBA,URBS,ERR PRINT$ FDB,ERR,,DEV,UNIT,PRI,FORMS,COPIES,PRESRV PUT$ FDB,NRBA,NRBS,ERR PUT$R FDB,NRBA,NRBS,LRCNM,HRCNM,ERR PUT$S FDB,NRBA,NRBS,ERR RAD50$ STRING,MAXWRD READ$ FDB,BKDA,BKDS,BKVB,BKEF,BKST,BKDN,ERR TRUNC$ FDB,ERR WAIT$ FDB,BKEF,BKST,ERR WRITE$ FDB,BKDA,BKDS,BKVB,BKEF,BKST,BKDN,ERR 2 BIGBUFFERS Big buffering is a new FCS functionality for record I/O which reduces the number of disk accesses by allowing multi- block input and output. Normally, GET$s or PUT$s cause disk operations one sector at a time. Use of big buffers allows a specified number of sectors to be read or written in a single operation, reducing the number of head seeks, which is often a bottleneck on RSX-11 systems. Using big buffers is simple. You need to pick a reasonable buffer size, alter the parameters for each occurance of two macros in your program, and link to the proper library. 1. The buffer size you choose should be a multiple of 512. bytes, the size of one disk block. 5 blocks is a good choice, because it is the default amount allocated by a file extend. Disks tend to contain many 5 block chunks. Larger amounts may increase performance, but note that you are trading large amounts of memory for speed. 2. In your program, you must reserve adequite buffer space and make the buffer size known to the FDB. The FSRSZ$ macro allows you to specify the total buffer space needed by entering a number as its second parameter. This should be 512. bytes for each normal disk file, plus the chosen buffer size for each big buffered file. For example, assume a program with 3 files: one normal (512. byte buffer), one with 3 blocks as a big buffer, and one with 5 blocks as a big buffer. This would reserve the space properly: FSRSZ$ 3,<<1+3+5>*512.> In the FDB of each file with a big buffer, you must specify an override buffer size with the FDBF$A or FDBF$R macro. For a file with 5 blocks as a big buffer, this would be the assembly time macro call: FDBF$A <5*512.> 3. For RSX-11M the default SYSLIB does not contain support for big-buffering, but SYSGEN will, on request, build a version of ANSLIB which does.