*DECK S$GNLEN 
          IDENT  S$GNLEN
          TITLE  S$GNLEN -  GENERATE- APPEND LENGTH FIELD TO INTERNAL 
          COMMENT  APPEND LENGTH FIELD TO INTERNAL
  
*CALL LBLPTR
  
          SPACE  4
**        S$GNLEN -  GENERATE- APPEND LENGTH FIELD TO INTERNAL
* 
*     CALLING SEQUENCE- 
*         S$GNLEN(REC$LL1+REC$LL2,SPEC$MNR);#(S$IRRL,S$LK,S$ORSA)#
* 
*     GIVEN-
*         REC$LL1+REC$LL2 = NUMBER OF BITS RESERVED FOR LENGTH FIELD IN 
*          THE INTERNAL RECORD. 
*         SPEC$MNR = NUMBER OF BYTES IN THE FIXED PORTION OF AN 
*          EXTERNAL RECORD. 
*         S$IRRL = WORD LENGTH OF SLOT IN RECORD STORAGE AREA.
*         S$LK = NUMBER OF BITS OF INFORMATION THAT HAVE BEEN 
*          PREVIOUSLY APPENDED. 
*         S$ORSA = WORD OFFSET WITHIN WSA$ OF RECORD STORAGE AREA.
* 
*     DOES- 
*         GENERATES CODE. 
* 
*     GENERATED CODE EXPECTS- 
*         *ORECLEN* = LENGTH OF RECORD (CHARACTERS) 
* 
*     GENERATED CODE DOES-
*         APPENDS A FIELD CONTAINING THE NUMBER OF BYTES THAT WILL
*          FOLLOW THIS FIELD IN THE INTERNAL RECORD.
*     GENERATED CODE USES-
  
  
          ENTRY  S$GNLEN
 S$GNLEN  SUBR
          SB1    1           CONSTANT 1 
          SA2    X1          VALUE OF REC$LL1+REC$LL2 
          SB2    X2          B2 = WIDTH OF LENGTH FIELD 
          SA2    A1+B1       ADDRESS OF SPEC$MNR
          SA2    X2          VALUE OF SPEC$MNR
  
          GEN    (SX2 0),X2            *CHARACTERS ALREADY COPIED 
          GEN    (SA1 "ORECLEN")       *NO. CHARS IN RECORD 
         *USES   B6,B6,X0,AX1-3,AX6 
          GEN    (IX4 X1-X2) REMAINING CHARACTERS 
  
*          WE NEED TO CHECK FOR A USER ERROR HERE. IF THE 
*          DEFINITION OF KEYS AND FILES ETC. HAS SPECIFIED
*          AN MNR WHICH THE USER DIDN'T MEAN, THEN A
*          NEGATIVE RESULT WILL COME FROM ORECLEN-MNR.
*          THIS SHOULD PROBABLY BE AN ABORT 
* 
  
          NEWLBL NEXT 
          GEN    (PL X4,"NEXT") CHECK FOR USER ERROR
          GEN    (SX4 B0)    IFF ORECLEN-MNR IS NEGATIVE
          GEN    (SA1 "ERROR4") 
          GEN    (CALL S$ERROR) 
          GEN    (SA1 "ERRORZ")         ERROR ZERO
          GEN    (CALL S$ERROR) 
          GEN    (CALL S$ABT) 
          GENLBL NEXT 
  
          SB6    60 
          SB7    B6-B2
          GNAPN  B7,B2                 *APPEND B2 BITS FROM *X4 WITH
                                         B7 UNUSED BITS ON LEFT 
  
          EXIT
  
          END 
