*DECK EXTENTS 
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMACBX 
USETEXT COMAFET 
    PROC EXTENTS; 
# TITLE EXTENTS - PROCESS INPUT AND OUTPUT EXTENTS.  #
  
      BEGIN  # EXTENTS #
  
# 
**    EXTENTS - PROCESS INPUT AND OUTPUT EXTENTS. 
* 
*     EXTENTS PROCESSES THE CREATION AND TERMINATION OF INPUT 
*     AND OUTPUT CONVERSION EXTENTS.
* 
*     PROC EXTENTS
* 
*     ENTRY 
* 
* 
*     EXIT
* 
* 
* 
* 
* 
*     PROCESS    IF OUTPUT EXTENT EXISTS
*                  AND CVT OUTPUT BLOCK IS FULL 
*                THEN 
*                  IF OUTPUT WRAP AROUND
*                  THEN 
*                    SET UP CVT FOR SECOND PART OF EXTENT.
*                  ELSE 
*                    TERMINATE FULL OUTPUT EXTENT.
*                IF INPUT EXTENT EXISTS 
*                  AND CVT INPUT BLOCK IS EMPTY 
*                THEN 
*                  IF INPUT WRAP AROUND 
*                  THEN 
*                    SET UP CVT FOR SECOND PART OF EXTENT.
*                  ELSE 
*                    IF FULL INPUT EXTENT 
*                    THEN 
*                      TERMINATE FULL INPUT EXTENT. 
*                    ELSE 
*                      IF OUTPUT EXTENT EXISTS
*                        AND CVT STATE IS NORMAL
*                      THEN 
*                        TERMINATE OUTPUT EXTENT WITH EOR OR EOI. 
*                        TERMINATE INPUT EXTENT WITH EOR OR EOI.
*                IF OUTPUT EXTENT DOES NOT EXIST
*                  AND ENOUGH SPACE EXISTS FOR A NEW OUTPUT EXTENT
*                THEN 
*                  CREATE NEW OUTPUT EXTENT.
*                IF INPUT EXTENT DOES NOT EXIST 
*                  AND ENOUGH DATA EXISTS FOR A NEW INPUT EXTENT
*                THEN 
*                  CREATE NEW INPUT EXTENT. 
*                RETURN.
* 
****  PROC EXTENTS - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC FULLIN;                 # TERMINATE FULL INPUT EXTENT #
        PROC FULLOUT;                # TERMINATE FULL OUTPUT EXTENT # 
        FUNC MOREIN B;               # AVAILABILITY OF INPUT EXTENT # 
        FUNC MOREOUT B;              # AVAILABILITY OF OUTPUT EXTENT #
        PROC NEWIN;                  # CREATE NEW INPUT EXTENT #
        PROC NEWOUT;                 # CREATE NEW OUTPUT EXTENT # 
        PROC SHRTIN;                 # TERMINATE SHORT INPUT EXTENT # 
        PROC SHRTOUT;                # TERMINATE SHORT OUTPUT EXTENT #
        END 
  
# 
****  PROC EXTENTS - XREF LIST END. 
# 
  
CONTROL EJECT;
  
      IF OTDATSTATE NE DSNULL 
        AND OUTBLKBYT EQ 0
      THEN
        BEGIN 
        IF OTWRAP 
        THEN
          BEGIN 
          OUTPTR = PFETFIR - 1; 
          OUTBLKBYT = OTPART2;
          OTEXTBYT = OTEXTBYT + OTPART2;
          OTWRAP = FALSE; 
          END 
  
        ELSE
          BEGIN 
          FULLOUT;
          END 
        END 
  
      IF INDATSTATE NE DSNULL 
        AND INBLKBYT EQ 0 
      THEN
        BEGIN 
        IF INWRAP 
        THEN
          BEGIN 
          INPTR = GFETFIR - 1;
          INBLKBYT = INPART2; 
          INWRAP = FALSE; 
          END 
  
        ELSE
          BEGIN 
          IF INDATSTATE EQ DSFULL 
          THEN
            BEGIN 
            FULLIN; 
            END 
  
          ELSE
            BEGIN 
            IF OTDATSTATE NE DSNULL 
              AND CVTSTATE EQ 0 
            THEN
              BEGIN 
              SHRTOUT;
              SHRTIN; 
              END 
            END 
          END 
        END 
  
      IF OTDATSTATE EQ DSNULL 
        AND MOREOUT 
      THEN
        BEGIN 
        NEWOUT; 
        END 
  
      IF INDATSTATE EQ DSNULL 
        AND MOREIN
      THEN
        BEGIN 
        NEWIN;
        END 
  
      RETURN; 
  
      END  # EXTENTS #
  
    TERM
