*DECK S$GNXLN 
          IDENT  S$GNXLN
          TITLE  S$GNXLN -  GENERATE- EXTRACT LENGTH
          COMMENT  GENERATE- EXTRACT LENGTH 
  
*CALL LBLPTR
  
          SPACE  4
**        S$GNXLN -  GENERATE- EXTRACT LENGTH 
* 
*     CALLING SEQUENCE- 
*         S$GNXLN(REC$LL1+REC$LL2,SPEC$MNR);#(S$IRRL,S$LK,S$ORSA)#
* 
*     GIVEN-
*         REC$LL1+REC$LL2 = LENGTH OF LENGTH FIELD IN INTERNAL RECORD.
*         SPEC$MNR = NUMBER OF CHARACTERS IN THE FIXED-LENGTH PORTION.
*         S$IRRL = NUMBER OF WORDS PER SLOT IN THE RECORD STORAGE AREA. 
*          (USED BY S$GNRNX)
*         S$LK = NUMBER OF BITS OF INFORMATION THAT HAVE BEEN PREVIOUSLY
*          REVERTED.   (USED BY S$GNRNX)
*         S$LR = NUMBER OF BITS RESERVED FOR RECORD ORDINAL.
*          (USED BY S$GNRNX)
*         S$ORSA = WORD OFFSET WITHIN WSA$ OF RECORD STORAGE AREA.
*          (USED BY S$GNRNX)
* 
*     DOES- 
*         GENERATES CODE. 
*         INCREMENTS S$LK BY THE LENGTH OF THIS INTERNAL FIELD. 
* 
*     GENERATED CODE EXPECTS- 
*         (IF 1+1+S$LR+S$LK IS LESS THAN 60,) 
*             THE INTERNAL RECORD DESCRIPTOR IS IN *X6
*         (ELSE)
*             *A4 IS THE ADDRESS OF THE WORD CONTAINING BIT 2+S$LR+S$LK.
* 
*     GENERATED CODE DOES-
*         EXTRACTS THE VALUE IN THE LENGTH FIELD. 
*         SETS "ORECLEN" TO THIS VALUE PLUS SPEC$MNR. 
  
  
          ENTRY  S$GNXLN
 S$GNXLN  SUBR
          SB1    1           CONSTANT 1 
          SA2    X1          VALUE OF REC$LL1+REC$LL2 
          SB2    X2          B2 = REC$LL1 + REC$LL2 
          SA2    A1+B1       ADDRESS OF SPEC$MNR
          SA2    X2          VALUE OF SPEC$MNR
          SB3    X2          B3 = SPEC$MNR
  
          SB5    B2          WIDTH OF FIELD TO EXTRACT
                             S$IRRL, S$LK, S$LR, S$ORSA 
          CALL   S$GNRNX               *X4 := EXTERNAL FIELD
         *USES   B4,B6,B7,X0,AX1-3,AX6
                             X5 = OFFSET WITHIN *X4 OF INTERNAL FIELD 
                             S$LK INCREMENTED BY B5 
  
*         RIGHT-JUSTIFY THE LENGTH FIELD
  
          SB7    X5          X5 = OFFSET WITHIN *X4 
          IFTHEN B7"0        IF FIELD IS NOT LEFT-JUSTIFIED 
            GEN    (LX4 0),B7  LEFT-JUSTIFY IT
            ENDIF.
  
          GEN    (LX4 0),B2  RIGHT-JUSTIFY IT 
  
          SB6    60 
          SB7    B6-B2
          GEN    (MX3 0),B7 
          GEN    (BX4 -X3*X4)          *CONTENTS OF LENGTH FIELD
          GEN    (SX7 X4+0),B3         *LENGTH + SPEC$MNR 
          GEN    (SA7 "ORECLEN")       *"ORECLEN" := TOTAL LENGTH 
  
          EXIT
  
  
          END 
