/******************************************************************************/
/* ENVCB.H: Control blocks used by text processor environment.
            (Ideas for non-DOS environments.)
*/
/******************************************************************************/
/* Define I/O types for document files (message files are always stream I/O). */
/******************************************************************************/
#ifdef IBMC                   /* Stream I/O for IBMC (mainframe) only. */
  #define STREAMIO
#else
  #define LOWLEVIO
#endif /* def IBMC */
#ifdef STREAMIO
  typedef FILE * HANDLE;      /* Stream I/O: handle is control block ptr. */
#else                         /* If low-level I/O: */
  typedef int HANDLE;         /* Low-level I/O: handle is integer. */
#endif
/******************************************************************************/
struct iofcb {                /* I/O file control block. */
     HANDLE fcbfd;            /* DOS file handle. */
     long fcboff;             /* Offset in file of current read block. */
     char *fcbxid;            /* External ID string. */
     char *fcbnext;           /* Next file in fcbxid (NULL if no more). */
     char fcbfile[FILESPEC+2];/* Full system fileid (length + EOS). */
     int fcbcatsw;            /* 1=catenate next file on next read; 0=no. */
     int fcbRS;               /* 1=prefix RS to first file of entity; 0=no. */
     int fcbRE;               /* 1=strip RE from last file of entity; 0=no. */
     int fcbfirst;            /* 1=next read will be the first; 0=no. */
};
#define IPBFCB ((struct iofcb *)io->ipbn)      /* IPBFILE: Ptr to SGMLIO fcb. */
#define FLID (((struct iofcb *)SCBFCB)->fcbfile)/* Actual fileid of file. */
/******************************************************************************/
