*DECK S$UMDSN 
          PROC S$UMDSN(SPEC$, SMT$);
  
  
#**       S$UMDSN - USER MERGE DESIGN                                  #
#                                                                      #
#         GIVEN -                                                      #
#                                                                      #
#            SPEC$                                                     #
#            SMT$                                                      #
#                                                                      #
#         DOES -                                                       #
#                                                                      #
#         PASSES RELEVANT INFORMATION FROM SPEC$ INTO SMT$             #
#         FOR THE USE OF S$GNOPM.                                      #
#                                                                      #
          BEGIN 
  
*CALL A 
*CALL SPEC$ 
*CALL SMT$
  
          ITEM I            I;
          ITEM X            I;
  
          XREF
              BEGIN 
              PROC S$ABORT; 
              END 
  
          CONTROL INERT;
  
          CONTROL DISJOINT; 
  
          CONTROL EJECT;
  
          # COUNT UP NUMBER OF INPUT FILES FOR MERGE #
  
          SPEC$MAXMO = 13;
          SMT$NFILES = 0; 
          I = SPEC$1STINF;
          FOR I = I WHILE I NQ 0 DO 
              BEGIN 
              SMT$NFILES = SMT$NFILES + 1;
              I = SPEC$NEXTIN[I]; 
              END 
  
          # DOING IT BACKWARDS MAKES THE RETAIN OPTION                 #
          # FUNCTION CORRECTLY                                         #
  
          X = SMT$NFILES; 
          I = SPEC$1STINF;
          FOR X = X WHILE I NQ 0 DO 
              BEGIN 
              SMT$INNAME[X] = SPEC$INNAME[I]; 
              SMT$INFIT[X] = SPEC$INFIT[I]; 
              I = SPEC$NEXTIN[I]; 
              X = X - 1;
              END 
  
          SPEC$MAXMO = SMT$NFILES;
          IF SPEC$MAXMO GR 100 THEN 
              S$ABORT("S$UMDSN-1"); 
          END 
          TERM
