*DECK MOREOUT 
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMACBX 
USETEXT COMAFET 
    FUNC MOREOUT B; 
# TITLE MOREOUT - DETERMINE AVAILABILITY OF NEW OUTPUT EXTENT.  # 
  
      BEGIN  # MOREOUT #
  
# 
**    MOREOUT - DETERMINE AVAILABILITY OF NEW OUTPUT EXTENT.
* 
*     MOREOUT DETERMINES THE AVAILABILITY OF A NEW OUTPUT EXTENT
*     AND ESTABLISHES THE OUTPUT EXTENT STATE.
* 
*     FUNC MOREOUT B
* 
*     ENTRY 
* 
* 
*     EXIT
* 
* 
* 
* 
*     PROCESS    PRESET OUTPUT NOT AVAILABLE FLAG.
*                IF OUTPUT CONTROL WORDS REQUIRED 
*                THEN 
*                  IF FULL OUTPUT EXTENT AVAILABLE
*                  THEN 
*                    SET FULL OUTPUT EXTENT.
*                    RETURN OUTPUT EXTENT AVAILABLE FLAG. 
*                ELSE 
*                  IF AT LEAST ONE FREE WORD AVAILABLE
*                    AND I/O STATE IS NOT REQUEST WRITER
*                    AND (OUTPUT I/O IS COMPLETE IN FET 
*                    OR I/O STATE IS NOT WRITER IN PROGRESS)
*                  THEN 
*                    SET FULL OUTPUT EXTENT.
*                    SET OUTPUT EXTENT WORD SIZE, BLOCK BIT SIZE, 
*                    AND CHARACTERS (WORDS) IN BLOCK. 
*                    RETURN OUTPUT EXTENT AVAILABLE FLAG. 
*                RETURN.
* 
****  PROC MOREOUT - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        FUNC FREEWDS U;              # OUTPUT FREE WORDS IN BUFFER #
        END 
  
# 
****  PROC MOREOUT - XREF LIST END. 
# 
  
  
CONTROL EJECT;
  
      MOREOUT = FALSE;
      IF OTCWS
      THEN
        BEGIN 
      CONTROL IFEQ OS$NOS;
        IF FREEWDS GE OTWDSIZE + 2
        THEN
      CONTROL ENDIF;
      CONTROL IFEQ OS$NOSBE;
        IF FREEWDS GE OTWDSIZE * 2
        THEN
      CONTROL ENDIF;
          BEGIN 
          OTDATSTATE = DSFULL;
          MOREOUT = TRUE; 
          END 
        END 
  
      ELSE
        BEGIN 
        IF FREEWDS GE 1 
          AND OTIOSTATE NE IOREQWRTR
          AND (PFETCOMPL
                OR OTIOSTATE NE IOINPGWRTR) 
        THEN
          BEGIN 
          OTWDSIZE = FREEWDS - 1; 
          OTBLKBITS = OTWDSIZE * 60;
          OTFULLBYT = OTWDSIZE; 
          OTDATSTATE = DSFULL;
          MOREOUT = TRUE; 
          END 
        END 
  
      RETURN; 
  
      END  # MOREOUT #
  
    TERM
