.PROC,LINDST*I,
*IF ($string($name(wev$target_operating_system))='NOSBE')
M "- Module name (or ALL or *)"        = (*N=*,ALL=*,*,DSMDST,DSMTRM,
                                          DSMDSTG,DSMNBCS),
B "- Binary input file name"           = (*N=NVERELB,*F),
L "- Library name for linked output"   = (*N=NVELIBB,*F),
*ELSE
M "- Module name (or ALL or *)"        = (*N=*,ALL=*,*,DSMDST,DSMTRM,
                                          DSMDSTG),
B "- Binary input file name"           = (*N=NVERELS,*F),
L "- Library name for linked output"   = (*N=NVELIB,*F),
*IFEND
MAP "- MAP file name"                  = (*N=LINKMAP,*F),
UN "- NOS/BE perm file ID"             = (*F,*N=),
.
.HELP
 The LINDST procedure LINks the NVE subsystem and NOS/VE deadstart tape
 builder. Requires library CYBCLIB.

 Parameter   Default   Description
   Name       Value

  [m]          all     Module name being linked (or ALL or *)
*IF ($string($name(wev$target_operating_system))='NOSBE')
  [b]        nverelb   Binary input file containing the relocatable binaries
  [l]        nvelibb   Library name to which the linked module is written
*ELSE
  [b]        nverels   Binary input file containing the relocatable binaries
  [l]        nvelib    Library name to which the linked module is written
*IFEND
  [map]      linkmap   File name to which the linkmap is written
  [un]                 User name

.HELP,M
 The M parameter selects the module name to be linked. Either DSMDST,
 DSMTRM, DSMDSTG, or ALL may be selected. The default value is ALL NOS/VE
 deadstart modules.
.HELP,B
 The B parameter names the binary file containing the relocatable binaries.
*IF ($string($name(wev$target_operating_system))='NOSBE')
 The default value is NVERELB.
*ELSE
 The default value is NVERELS.
*IFEND
.HELP,L
 The L parameter specifies the library file to which the linked module
*IF ($string($name(wev$target_operating_system))='NOSBE')
 is written. The default value is NVELIBB.
*ELSE
 is written. The default value is NVELIB.
*IFEND
.HELP,MAP
 The MAP parameter names the file to which the linkmap is written.
 The default value is LINKMAP.
.HELP,UN
 The UN parameter specifies a permanent file ID on NOS/BE systems. This
 parameter must not be specified on NOS.
.ENDHELP
.IF,SYS.EQ.NOSB,CHECKUN.
  .IF,$UN$.EQ.$$,BADUN.
    NOTE(OUTPUT); THE #UN PARAMETER MUST BE SPECIFIED.
    REVERT,ABORT.
  .ENDIF,BADUN.
.ELSE,CHECKUN.
  .IF,$UN$.NE.$$,BADUN2.
    REVERT,ABORT. THE #UN PARAMETER MUST NOT BE SPECIFIED
  .ENDIF,BADUN2.
.ENDIF,CHECKUN.
.IFE,FILE(B,.NOT.AS),GET_B.
  GETFILE,B,B,UN,READ,A=YES.
.ENDIF,GET_B.
.IF,SYS.EQ.NOS,NOSSYS.
  $GTR(B,YYYYREL)REL/*
  $UNLOAD,B.
  $LIBEDIT,P=0,N=B,I=0,#B=YYYYREL,#L=0,U=B,NX=1.
  $UNLOAD,YYYYREL.
.ENDIF,NOSSYS.
.IFE,FILE(CYBCLIB,.NOT.AS),GETCYBCLIB.
  GETFILE,CYBCLIB,CYBCLIB,UN.
.ENDIF,GETCYBCLIB.
.IFE,(($M$.EQ.$DSMDST$).OR.($M$.EQ.$*$)),GETDSMDST.
  NOTE(OUTPUT,NR)+ LINKING DSMDST
  .IFE,SYS.EQ.NOS,NOSDST.
    $LDSET(#MAP=SBEX/MAP,LIB=B/CYBCLIB,PRESET=ZERO)
  .ELSE,NOSDST.
    LDSET(#MAP=SBEX/MAP,LIB=CYBCLIB,PRESET=ZERO)
  .ENDIF,NOSDST.
  SLOAD(B,DSMDST)
  SLOAD(B,DSADCAL)  (MUST BE BELOW 10000B)
  SLOAD(B,DSMDNV,DSMORFV)
  SLOAD(B,DSACYIF)
  .IFE,SYS.EQ.NOSB.SLOAD(B,MLMASM)
  NOGO,YYYYABS.
  REPLIB,YYYYABS,L,,UN.
  NOTE(OUTPUT,NR)+ MODULE DSMDST --> L
.ENDIF,GETDSMDST.
.IFE,(($M$.EQ.$DSMTRM$).OR.($M$.EQ.$*$)),GETDSMTRM.
  NOTE(OUTPUT,NR)+ LINKING DSMTRM
  .IFE,SYS.EQ.NOS,NOSTRM.
    $LDSET(#MAP=SBEX/MAP,LIB=B/CYBCLIB,PRESET=ZERO)
  .ELSE,NOSTRM.
    LDSET(#MAP=SBEX/MAP,LIB=CYBCLIB,PRESET=ZERO)
  .ENDIF,NOSTRM.
  SLOAD(B,DSMTRM)
  SLOAD(B,DSADCAL)  (MUST BE BELOW 10000B)
  SLOAD(B,DSMTNVE)
  SLOAD(B,DSACYIF)
  .IFE,SYS.EQ.NOSB.SLOAD(B,MLMASM)
  NOGO,YYYYABS.
  REPLIB,YYYYABS,L,,UN.
  NOTE(OUTPUT,NR)+ MODULE DSMTRM --> L
.ENDIF,GETDSMTRM.
*IF ($string($name(wev$target_operating_system))='NOSBE')
.IFE,(($M$.EQ.$DSMNBCS$).OR.($M$.EQ.$*$)),GETDSMNBCS.
  NOTE(OUTPUT,NR)+ LINKING DSMNBCS
  .IFE,SYS.EQ.NOS,NOSNBCS.
    $LDSET(#MAP=SBEX/MAP,LIB=B,PRESET=ZERO)
  .ELSE,NOSNBCS.
    LDSET(#MAP=SBEX/MAP,PRESET=ZERO)
  .ENDIF,NOSNBCS.
  SLOAD(B,DSMNBCS)
  SLOAD(B,COPYS)
  NOGO,YYYYABS.
  REPLIB,YYYYABS,L,,UN.
  NOTE(OUTPUT,NR)+ MODULE DSMNBCS --> L
  UNLOAD,YYYYREL.
.ENDIF,GETDSMNBCS.
*IFEND
SKIP,NOERROR.
  EXIT.
  UNLOAD,YYYYREL,YYYYABS.
  .IFE,FILE(B,.NOT.AS),RET_B.
    UNLOAD,B.
  .ENDIF,RET_B.
  .IFE,FILE(CYBCLIB,.NOT.AS),RETCYBCLIB.
    UNLOAD,CYBCLIB.
  .ENDIF,RETCYBCLIB.
  .IFE,(EF.EQ.TIE).OR.(EF.EQ.TAE),TERMINATED.
    EXIT. LINDST PROCEDURE *TERMINATED*
  .ENDIF,TERMINATED.
  REVERT,ABORT. LINDST PROCEDURE FAILED
ENDIF,NOERROR.
  .IFE,FILE(B,.NOT.AS),RET_B.
    UNLOAD,B.
  .ENDIF,RET_B.
  .IFE,FILE(CYBCLIB,.NOT.AS),RETCYBCLIB.
    UNLOAD,CYBCLIB.
  .ENDIF,RETCYBCLIB.
.IFE,$M$.EQ.$*$,LINKALL.
  REVERT. LINKED 170 DST --> L
.ELSE,LINKALL.
  REVERT. LINKED M --> L
.ENDIF,LINKALL.
/EOR
