*DECK S$PSPEC 
          PROC S$PSPEC(SPEC$,OWNF$,OWNNA$); 
#**       S$PSPEC -  PUTS SPEC$ ITEMS IN CHAR LINE TO BE PUT IN FILE   #
#                                                                      #
#     CALLING SEQUENCE-                                                #
#         S$PSPEC(SPEC$):                                              #
#     GIVEN-                                                           #
#         SPEC$ = ARRAY CONTAINING COMPLETE SPECIFICATION OF SORT      #
#     DOES-                                                            #
#         WRITES MNEMONIC LISTING OF SPEC$ ON FILE "CODE"              #
  
  
          BEGIN 
  
*CALL A 
  
*CALL OWNF$ 
  
*CALL OWNNA$
  
  
*CALL SPEC$ 
  
          FUNC  OCT(VALUE) C(20); 
              ITEM  VALUE        U;    # VALUE TO BE CONVERTED         #
              ITEM  C20          C(20); 
              ITEM  I            I; 
              BEGIN 
              FOR I = 0 STEP 1 UNTIL 19 DO
                  C<I,1>C20 = B<3*I,3>VALUE + O"33";
              OCT = C20;
              END  # OCT #
  
          FUNC  DEC(VALUE) C(10); 
              ITEM  VALUE       I;     # VALUE TO BE CONVERTED         #
              ITEM  C10PLUS     C(20);
              ITEM  I            I; 
              ITEM  N            I; 
              BEGIN 
              C10PLUS = "         0          "; 
              N = VALUE;
              IF N LS 0  THEN 
                  N = -N; 
              IF N GR 999999999 THEN
                  BEGIN 
                  C10PLUS = " *********          "; 
                  I = 0;
                  END 
              ELSE
                  BEGIN 
                  FOR I = 9 WHILE N NQ 0  DO
                      BEGIN 
                      C<I,1>C10PLUS = N - (N/10)*10 + 27; 
                      N = N/10; 
                      I = I - 1;
                      END 
                  END 
              IF VALUE LS 0 THEN
                  C<I,1>C10PLUS = "-";
              DEC = C<I,10>C10PLUS; 
              END  # DEC #
  
          FUNC  BOOL(B) C(5); 
              ITEM  B            B;    # VALUE TO BE CONVERTED         #
              BEGIN 
              IF B THEN 
                  BOOL = "TRUE "; 
              ELSE
                  BOOL = "FALSE"; 
              END  # BOOL # 
  
          XREF
              PROC S$PRTCD; 
           ITEM  I            I;
          ITEM  LINE         C(60); 
          ITEM  C20          C(20); 
           ITEM  C10          C(10);
  
  
CONTROL DISJOINT; 
  
CONTROL INERT;
  
CONTROL EJECT;
  
  
          $BEGIN
          LINE = " SPEC$ENRHIGH=";
          C<14,10>LINE = DEC(SPEC$ENRHIGH); 
          S$PRTCD(LINE);
  
          LINE = " SPEC$LOFIT=******B"; 
          C20 = OCT(SPEC$LOFIT);
          C<12,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$ERRLVL="; 
          C<14,10>LINE = DEC(SPEC$ERRLVL);
          S$PRTCD(LINE);
  
          LINE = " SPEC$FASTIO="; 
          C<13,5>LINE = BOOL(SPEC$FASTIO);
          S$PRTCD(LINE);
  
          LINE = " SPEC$FASTIN=*********B"; 
          C20 = OCT(SPEC$FASTIN); 
          C<13,9>LINE = C<11,9>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$FASTOUT=*********B)"; 
          C20 = OCT(SPEC$FASTOUT);
          C<14,9>LINE = C<11,9>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$FIXED=";
          C<13,5>LINE = BOOL(SPEC$FIXED); 
          S$PRTCD(LINE);
  
          LINE = " SPEC$FIXEDOW=";
          C<15,5>LINE = DEC(SPEC$FIXEDOW);
          S$PRTCD(LINE);
  
          LINE = " SPEC$FIXLEN="; 
          C<14,10>LINE = DEC(SPEC$FIXLEN);
          S$PRTCD(LINE);
  
          LINE = " SPEC$LIBUF=******B"; 
          C20 = OCT(SPEC$LIBUF);
          C<12,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$LSTOPTM=";
          C<14,5>LINE = BOOL(SPEC$LSTOPTM); 
          S$PRTCD(LINE);
  
          LINE = " SPEC$LSTOPTS=";
          C<14,5>LINE = BOOL(SPEC$LSTOPTS); 
          S$PRTCD(LINE);
  
          # SKIP SPEC$LWSA - NOT COMPUTED UNTIL S$STREC IN S$MAIN      #
          LINE = " SPEC$MNR=";
          C<10,10>LINE = DEC(SPEC$MNR); 
          S$PRTCD(LINE);
  
          LINE = " SPEC$MRL=";
          C<11,10>LINE = DEC(SPEC$MRL); 
          S$PRTCD(LINE);
  
          LINE = " SPEC$MSLIM=";
          C<13,10>LINE = DEC(SPEC$MSLIM); 
          S$PRTCD(LINE);
  
          LINE = " SPEC$OWN1=******B";
          C20 = OCT(SPEC$OWN1); 
          C<11,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$OWN2=******B";
          C20 = OCT(SPEC$OWN2); 
          C<11,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$OWN3=******B";
          C20 = OCT(SPEC$OWN3); 
          C<11,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$OWN4=******B";
          C20 = OCT(SPEC$OWN4); 
          C<11,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$OWN5=******B";
          C20 = OCT(SPEC$OWN5); 
          C<11,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$OWNT="; 
          C<12,5>LINE = BOOL(SPEC$OWNT);
          S$PRTCD(LINE);
  
          LINE = " SPEC$RETAIN="; 
          C<14,5>LINE = BOOL(SPEC$RETAIN);
          S$PRTCD(LINE);
  
          LINE = " SPEC$SORT="; 
          C<12,5>LINE = BOOL(SPEC$SORT);
          S$PRTCD(LINE);
  
          LINE = " SPEC$STATAR=******B";
          C20 = OCT(SPEC$STATARY);
          C<13,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$1STKEY="; 
          C<14,6>LINE = DEC(SPEC$1STKEY); 
          S$PRTCD(LINE);
  
          LINE = " SPEC$1STSUM="; 
          C<14,6>LINE = DEC(SPEC$1STSUM); 
          S$PRTCD(LINE);
  
  
          LINE = " SPEC$DIRFIT=******B";
          C20 = OCT(SPEC$DIRFIT); 
          C<13,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$DIRNAME=********************B OR "; 
          C<14,20>LINE = OCT(SPEC$DIRNAME); 
          C<39,10>LINE = SPEC$DIRNAME;
          S$PRTCD(LINE);
  
          LINE = " SPEC$ERRNAME=********************B OR "; 
          C<14,20>LINE = OCT(SPEC$ERRNAME); 
          C<39,10>LINE = SPEC$ERRNAME;
          S$PRTCD(LINE);
  
          LINE = " SPEC$EXCFIT=******B";
          C20 = OCT(SPEC$EXCFIT); 
          C<13,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$EXCNAM="; 
          C<13,6>LINE = SPEC$EXCNAME; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$LSTFIT=******B";
          C20 = OCT(SPEC$LSTFIT); 
          C<13,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$LSTNAME=********************B OR "; 
          C<14,20>LINE = OCT(SPEC$LSTNAME); 
          C<39,10>LINE = SPEC$LSTNAME;
          S$PRTCD(LINE);
  
          LINE = " SPEC$OUTFIT=******B";
          C20 = OCT(SPEC$OUTFIT); 
          C<13,6>LINE = C<14,6>C20; 
          S$PRTCD(LINE);
  
          LINE = " SPEC$OUTNAME=********************B OR "; 
          C<14,20>LINE = OCT(SPEC$OUTNAME); 
          C<39,10>LINE = SPEC$OUTNAME;
          S$PRTCD(LINE);
  
          LINE = " SPEC$1STINF="; 
          C<13,10>LINE = DEC(SPEC$1STINF);
          CONTROL INERT;
          S$PRTCD(LINE);
          IF SPEC$VERIFY THEN 
              LINE = " SPEC$VERIFY = TRUE TRUE TRUE"; 
          ELSE
              LINE = " SPEC$VERIFY = FALSE FALSE FALSE";
          S$PRTCD(LINE);
  
          FOR I = SPEC$1STKEY WHILE I NQ 0  DO
              BEGIN 
              LINE = " SPEC$KEYTYPE[***]=**********"; 
              C10 = DEC(I); 
              C<14,3>LINE = C<0,3>C10;
              C<19,10>LINE = DEC(SPEC$KEYTYPE[I]);
              S$PRTCD(LINE);
              LINE = " SPEC$KEYBYTE[***]=**********"; 
              C<14,3>LINE = C<0,3>C10;
              C<19,10>LINE = DEC(SPEC$KEYBYTE[I]);
              S$PRTCD(LINE);
              LINE = " SPEC$KEYBIT[***]=**********";
              C<13,3>LINE = C<0,3>C10;
              C<18,10>LINE = DEC(SPEC$KEYBIT[I]); 
              S$PRTCD(LINE);
              LINE = " SPEC$KEYNBYT[***]=**********"; 
              C<14,3>LINE = C<0,3>C10;
              C<19,10>LINE = DEC(SPEC$KEYNBYT[I]);
              S$PRTCD(LINE);
              LINE = " SPEC$KEYNBIT[***]=**********"; 
              C<14,3>LINE = C<0,3>C10;
              C<19,10>LINE = DEC(SPEC$KEYNBIT[I]);
              S$PRTCD(LINE);
              LINE = " SPEC$KEYASC[***]=*****"; 
              C<13,3>LINE = C<0,3>C10;
              C<18,5>LINE = BOOL(SPEC$KEYASC[I]); 
              S$PRTCD(LINE);
              LINE = " SPEC$KEYCS[***]=**********"; 
              C<12,3>LINE = C<0,3>C10;
              C20 = OCT(SPEC$KEYCS[I]); 
              C<17,10>LINE = C<10,10>C20; 
              S$PRTCD(LINE);
              LINE = " SPEC$NEXTKEY[***]=**********"; 
              C<14,3>LINE = C<0,3>C10;
              C<19,10>LINE = DEC(SPEC$NEXTKEY[I]);
              S$PRTCD(LINE);
              LINE = " SPEC$KEYALT[***] = **********";
              C<13,3>LINE = C<0,3>C10;
              C<19,10>LINE = BOOL(SPEC$KEYALT[I]);
              S$PRTCD(LINE);
              I = SPEC$NEXTKEY[I];
              END#FOR#
  
  
          FOR I = SPEC$1STINF WHILE I NQ 0 DO 
              BEGIN 
              C10 = DEC(I); 
              LINE = " SPEC$INNAME[***]=********************B OR "; 
              C<13,3>LINE = C<0,3>C10;
              C<18,20>LINE = OCT(SPEC$INNAME[I]); 
              C<43,10>LINE = SPEC$INNAME[I];
              S$PRTCD(LINE);
              LINE = " SPEC$INFIT[***]=******B";
              C<12,3>LINE = C<0,3>C10;
              C20 = OCT(SPEC$INFIT[I]); 
              C<17,6>LINE = C<14,6>C20; 
              S$PRTCD(LINE);
              LINE = " SPEC$NEXTIN[***]=**********";
              C<13,3>LINE = C<0,3>C10;
              C<18,10>LINE = DEC(SPEC$NEXTIN[I]); 
              C10 = DEC(SPEC$NEXTIN[I]);
              C<18,10>LINE = C10; 
              S$PRTCD(LINE);
              I = SPEC$NEXTIN[I]; 
              END 
          LINE = " OWNF$=********************B OR ";
          C<7,20>LINE = OCT(OWNF$); 
          C<32,7>LINE = OWNF$;
          S$PRTCD(LINE);
          LINE = " OWNNA$OWN1=";
          C<12,7>LINE = OWNNA$OWN1; 
          S$PRTCD(LINE);
          LINE = " OWNNA$OWN2=";
          C<12,7>LINE = OWNNA$OWN2; 
          S$PRTCD(LINE);
          LINE = " OWNNA$OWN3=";
          C<12,7>LINE = OWNNA$OWN3; 
          S$PRTCD(LINE);
          LINE = " OWNNA$OWN4=";
          C<12,7>LINE = OWNNA$OWN4; 
          S$PRTCD(LINE);
          LINE = " OWNNA$OWN5=";
          C<12,7>LINE = OWNNA$OWN5; 
          S$PRTCD(LINE);
  
          S$PRTCD(0);                  # FLUSH THE "CODE" BUFFER       #
  
          $END
          END #S$PSPEC# 
          TERM
