*DECK NEWIN 
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMACBX 
USETEXT COMAFET 
    PROC NEWIN; 
# TITLE NEWIN - CREATE NEW INPUT EXTENT.  # 
  
      BEGIN  # NEWIN #
  
# 
**    NEWIN - CREATE NEW INPUT EXTENT.
* 
*     NEWIN CREATES A NEW INPUT EXTENT. 
* 
*     PROC NEWIN
* 
*     ENTRY 
* 
* 
*     EXIT
* 
* 
* 
* 
* 
*     PROCESS    IF INPUT CONTROL WORDS SUPPLIED
*                THEN 
*                  CALCULATE CHARACTER LENGTH OF INPUT EXTENT 
*                ELSE 
*                  CALCULATE CHARACTER LENGTH OF INPUT EXTENT 
*                CALCULATE BITS INPUT 
*                IF INPUT EXTENT IN ONE PART (ALLOW FOR POSSIBLE
*                  CONTROL WORD AS LAST WORD OF BUFFER) 
*                THEN 
*                  SET UP CVT FOR ONE PART EXTENT 
*                ELSE 
*                  SET WRAP AROUND FLAG 
*                  CALCULATE PART 2 CHARACTER SIZE
*                  SET UP CVT FOR PART 1. 
*                RETURN.
* 
****  PROC NEWIN - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        FUNC MODIN I;                # MODULO INPUT BUFFER POINTER #
        END 
  
# 
****  PROC NOWIN - XREF LIST END. 
# 
  
  
      ITEM BITS I;                   # NUMBER OF BITS IN INPUT EXTENT # 
      ITEM P1BLKBYT I;               # NUMBER OF CHARS IN PART 1 #
  
CONTROL EJECT;
  
      IF INCWS
      THEN
        BEGIN 
        P<CW> = GFETOUT;
        BITS = (12 * CWBYTC) - CWUBC; 
        END 
  
      ELSE
        BEGIN 
        BITS = INWDSIZE * 60; 
        END 
  
      IF CVTTYPE EQ C6TOCNTYPE
      THEN
        BEGIN 
        INBLKBYT = BITS/6;
        END 
  
      ELSE
        BEGIN 
        IF CVTTYPE EQ WORDTYPE
        THEN
          BEGIN 
          INBLKBYT = BITS/60; 
          END 
  
        ELSE
          BEGIN 
          BITS = BITS/12 * 8; 
          INBLKBYT = BITS/8;
          END 
        END 
  
      INTOTBITS = INTOTBITS + BITS; 
      IF INCWS
      THEN
        BEGIN 
        INPTR = MODIN(1) - 1; 
        IF MODIN(1) GT MODIN(INWDSIZE-INNUMCWS) 
        THEN
          BEGIN 
          P1BLKBYT = (GFETLIM - GFETOUT - 1) * INCHARPWD; 
          IF INBLKBYT GT P1BLKBYT 
          THEN
            BEGIN 
            INPART2 = INBLKBYT - P1BLKBYT;
            INBLKBYT = P1BLKBYT;
            INWRAP = TRUE;
            END 
          END 
        END 
  
      ELSE
        BEGIN 
        INPTR = GFETOUT-1;
        IF GFETOUT GT MODIN(INWDSIZE) 
        THEN
          BEGIN 
          P1BLKBYT = (GFETLIM - GFETOUT) * INCHARPWD; 
          INPART2 = INBLKBYT - P1BLKBYT;
          INBLKBYT = P1BLKBYT;
          INWRAP = TRUE;
          END 
        END 
  
      RETURN; 
  
      END  # NEWIN #
  
    TERM
