*DECK S$GNGRU 
          PROC  S$GNGRU(SPEC$, WSAS$, REC$);
  
#**       S$GNGRU -  GENERATE- GET INTERNAL RECORD FROM USER           #
#                                                                      #
#     CALLING SEQUENCE-                                                #
#         S$GNGRU(SPEC$, WSAS$, REC$):                                 #
#                                                                      #
#     GIVEN-                                                           #
#         SPEC$ = USER SPECIFICATION.                                  #
#         WSAS$ = DESCRIPTION OF THE WORKING STORAGE AREA FOR SORT.    #
#         REC$ = FORMAT OF AN INTERNAL RECORD.                         #
#                                                                      #
#     DOES-                                                            #
#         GENERATES CODE THAT-                                         #
#             TRIES TO GET A RECORD FROM THE USER.                     #
#             IF SUCCESSFUL,                                           #
#                 PUTS THE INVERTED RECORD INTO THE RECORD STORAGE AREA#
#                  ACCORDING TO THE DESCRIPTOR IN "RECDESC".           #
#                 SETS A REGISTER INDICATING NOT END-OF-DATA.          #
#             ELSE                                                     #
#                 SETS A REGISTER INDICATING END-OF-DATA.              #
  
  
          BEGIN 
  
*CALL A 
  
*CALL REC$
  
*CALL SPEC$ 
  
  
          XREF
              BEGIN 
              PROC  S$GNGR;            # GEN- GET RECORD               #
              PROC  S$GNINV;           # GEN- INVERT RECORD            #
              END 
  
          CONTROL DISJOINT; 
  
          CONTROL INERT;
  
CONTROL EJECT;
  
#     GENERATE-   "GETREC":  TRY TO GET A RECORD FROM USER.            #
#                            IF CANNOT,                                #
#                                SET REGISTER = END-OF-DATA            #
#                                JUMP TO "GOTREC".                     #
#                            PUT THE USER RECORD AT WSAS$OREC.         #
  
          S$GNGR(SPEC$, WSAS$); 
  
#     GENERATE-              INVERT RECORD FROM WSAS$OREC TO SLOT IN   #
#                             WSAS$OREC SPECIFIED IN "RECDESC",        #
#                            IF ERRORS IN KEYS                         #
#                                WRITE RECORD TO EXCEPTION FILE        #
#                                JUMP TO "GETREC"  ,IF EXCEPTION FILE) #
#                 "GOTREC":                                            #
  
          S$GNINV(SPEC$, REC$); 
  
          END  # S$GNGRU #
          TERM
