.PROC,LINNOS*I,
*IF ($string($name(wev$target_operating_system))='NOSBE')
M "- Module name (or ALL or *)"        = (*N=*,ALL=*,*,DSMDST,DSMRUN,DSMTRM,
                                          DSMDSTG,DSMNBCS,IIAPAS,RHMPFP,RHAQEP,
                                          FMSLAVE),
B "- Binary input file name"           = (*N=NVERELB,*F),
*ELSE
M "- Module name (or ALL or *)"        = (*N=*,ALL=*,*,DSMDST,DSMRUN,DSMTRM,
                                          DSMDSTG,IIAPAS,RHMPFP,RHAQEP,
                                          FMSLAVE),
B "- Binary input file name"           = (*N=NVERELS,*F),
*IFEND
L "- Library name for linked output"   = (*N=,*F),
MAP "- MAP file name"                  = (*N=LINKMAP,*F),
UN "- NOS/BE perm file ID"             = (*N=,*F),
.
.HELP
 The LINNOS procedure LINks the NVE subsystem, the NOS/VE deadstart tape
 builder, the Interactive Facility, the Remote Host Facility, and the
 File Management Utility modules which execute on behalf of NOS/VE.
 This procedure calls LINDST, LINFMU, LINIAF, LINDSMR and/or LINRHF as appropriate.

 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
*ELSE
  [b]        nverels   Binary input file containing the relocatable binaries
*IFEND
  [l]                  Library name to which the linked module is written
  [map]      linkmap   File name to which the linkmap is written

.HELP,M
 The M parameter selects the module name to be linked. Either DSMDST, DSMRUN,
 DSMTRM, DSMDSTG, DSMNBCS, IIAPAS, RHMPFP, RHAQEP, FMSLAVE, or ALL may
 be selected.  The default value is ALL 170 NOS/VE 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
 is written. The default value is module dependent.
.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.
.IFE,FILE(CYBCLIB,.NOT.AS),GETCYBCLIB.
  GETFILE,CYBCLIB,CYBCLIB,UN.
.ENDIF,GETCYBCLIB.
.IFE,(($M$.EQ.$DSMDST$).OR.($M$.EQ.$DSMDSTG$)
  .OR.($M$.EQ.$DSMTRM$)
  .OR.($M$.EQ.$DSMNBCS$).OR.($M$.EQ.$*$)),LINKDST.
  LINDST,M,B,L,MAP,UN.
.ENDIF,LINKDST.
.IFE,(($M$.EQ.$DSMRUN$).OR.($M$.EQ.$*$)),LINKDSM.
  LINDSMR,M,B,L,MAP,UN.
.ENDIF,LINKDSM.
.IFE,(($M$.EQ.$IIAPAS$).OR.($M$.EQ.$*$)),LINKIAF.
  LINIAF,M,B,L,MAP,UN.
.ENDIF,LINKIAF.
.IFE,(($M$.EQ.$RHMPFP$).OR.($M$.EQ.$RHAQEP$)
  .OR.($M$.EQ.$*$)),LINKRHF.
  LINRHF,M,B,L,MAP,UN.
.ENDIF,LINKRHF.
.IFE,(($M$.EQ.$FMSLAVE$).OR.($M$.EQ.$*$)),LINKFMU.
  LINFMU,M,B,L,MAP,UN.
.ENDIF,LINKFMU.
SKIP,NOERROR.
  EXIT.
  .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. LINNOS PROCEDURE *TERMINATED*
  .ENDIF,TERMINATED.
  REVERT,ABORT. LINNOS 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. ALL MODULES LINKED
.ELSE,LINKALL.
  REVERT. MODULE M LINKED
.ENDIF,LINKALL.
/EOR
