From: CSBVAX::MRGATE!SUTTON%BRANDEIS.BITNET@CUNYVM.CUNY.EDU@SMTP 15-APR-1988 12:00 To: ARISIA::EVERHART Subj: Making shareable images Received: from MITVMA.MIT.EDU by KL.SRI.COM with TCP; Wed 13 Apr 88 07:21:13-PDT Received: from BRANDEIS.BITNET by MITVMA.MIT.EDU ; Wed, 13 Apr 88 10:20:34 EDT Date: Wed, 13 Apr 88 10:20 EST From: Subject: Making shareable images To: info-vax@kl.sri.com X-Original-To: com%"info-vax@kl.sri.com", SUTTON I have managed to do exactly what I think you might be trying to do. I don't think that you are supposed to put the IMAGES into the library. Below is a subroutine from a command procedure which I use to create shareables for a graphics package I wrote. After the two files POLYPLOT_SHR.OLB and POLYPLOT_SHR.EXE are created by this routine, a logical name must be defined to point to the .EXE file (in this case it's POLYPLOT_SHR, see the "NAME =" clause of the linker options file). It is assumed that the "normal" object library, POLYPLOT.OLB, is present. When you link your program with the shareables you say something like: $ LINK PROGRAM,SYS$UTIL:POLYPLOT_SHR/LIBRARY When your program is run, it will use the .EXE file pointed to by the logical you set (POLYPLOT_SHR in this case). This means that the logical either needs to be defined for each login or put someplace like the system or group logical name table. SUTTON@BRANDEIS.BITNET $ POLYPLOT_SHR_BLD: SUBROUTINE $ !******************************************************************** $ ! The process of creating POLYPLOT_SHR.OLB was done under the guidance $ ! of the volume, Guide to Creating Modular Procedures on VAX/VMS, $ ! and John Lavagnino. --- Mark Sutton, October 23, 1986 --- $ !******************************************************************** $ ! $ WRITE SYS$OUTPUT ">>>>>>>>>>>>>>>>>POLYPLOT_SHR_BLD<<<<<<<<<<<<<<<<<" $ IF F$SEARCH("POLYPLOT.OLB",).NES."" THEN GOTO ELSE6 $ WRITE SYS$OUTPUT "POLYPLOT.OLB is not present in this directory. It" $ WRITE SYS$OUTPUT "must be present in order for me to make a" $ WRITE SYS$OUTPUT "shareable image and shareable image library." $ WRITE SYS$OUTPUT "--------------------------------------------------" $ GOTO END_IF6 $ ELSE6: $ WRITE SYS$OUTPUT "Compiling transfer vector..." $ MACRO/OBJECT=POLYPLOT_VECTOR.OBJ SYS$INPUT ; .TITLE POLYPLOT_VECTOR .IDENT /1-001/ ; ; --- Mark Sutton, October 23, 1986 --- ; This MACRO program was lifted verbatim from pages 5-9 and 5-10 of: ; Guide to Creating Modular Procedures on VAX/VMS ; .MACRO ROUTINE NAME .EXTRN NAME .ALIGN QUAD .TRANSFER NAME .MASK NAME JMP NAME+2 .ENDM ; .PSECT $$$$POLYPLOT_VECTOR PIC, USR, CON, REL, LCL, SHR, - EXE, RD, NOWRT, QUAD ; ; Add new routines only to the bottom of the list!!! ; ROUTINE ALIN ROUTINE AUTHOR ROUTINE AXIS ROUTINE BASELINE ROUTINE CARC ROUTINE CIRCLE ROUTINE CIRC_VECLIP ROUTINE CLEAR ROUTINE CLRMAP ROUTINE COLLAPSE ROUTINE COMPACT ROUTINE CONVEX ROUTINE COPIES ROUTINE COVER_CIRC_VECLIP ROUTINE COVER_VECLIP ROUTINE CURSOR ROUTINE CURVE ROUTINE CWINDOW ROUTINE C_COVER ROUTINE DASHLN ROUTINE DEFCLR ROUTINE DEFPAT ROUTINE DEFPEN ROUTINE DEVICE ROUTINE DEVTYPE ROUTINE DRIVER ROUTINE DRIVER1 ROUTINE DRIVER2 ROUTINE DRIVER3 ROUTINE DRIVER4 ROUTINE DRIVER5 ROUTINE DRIVER6 ROUTINE DRIVER7 ROUTINE DRIVER8 ROUTINE DRWPEN ROUTINE ELLIPS ROUTINE EXPAND_SPEC ROUTINE FACTOR ROUTINE GET_AP ROUTINE GRID ROUTINE INSERT ROUTINE IRAM ROUTINE LINE ROUTINE LNMASK ROUTINE MULTI_VEC ROUTINE NEWPEN ROUTINE NORMAL ROUTINE NUMBER ROUTINE NXTVU ROUTINE OFFSET ROUTINE OUTP ROUTINE PAPER ROUTINE PENCLR ROUTINE PLOT ROUTINE PLOTS ROUTINE PLT3D ROUTINE RECT ROUTINE RESETPEN ROUTINE ROTATE ROUTINE R_COVER ROUTINE SCALE ROUTINE SETFNT ROUTINE SETFONT ROUTINE SETLENGTH ROUTINE SETMSG ROUTINE SETPAT ROUTINE SHIFT ROUTINE SING_VEC ROUTINE SYMBCLR ROUTINE SYMBOL ROUTINE TONCLR ROUTINE TONE ROUTINE TONFLG ROUTINE TRANS_PT ROUTINE UP2CAS ROUTINE UPDATE ROUTINE VECLIP ROUTINE VPINIT ROUTINE VPOPT ROUTINE VPORT ROUTINE VTEC ROUTINE WHERE ROUTINE WINDOW ROUTINE XSYMBL ; .END ; $ $ WRITE SYS$OUTPUT "LINKing shareable image..." $ LINK/SHAREABLE=POLYPLOT_SHR.EXE SYS$INPUT/OPTIONS ! NAME = POLYPLOT_SHR IDENTIFICATION = "Version 1.0" ! ! Increase the second number by one for each new routine added GSMATCH = LEQUAL,1,1 ! PSECT_ATTR = $PDATA,PIC,EXE PSECT_ATTR = $MACRO,PIC,EXE PSECT_ATTR = $TOKEN,PIC,EXE ! ! If new routines add any more common blocks, give them PSECT_ATTR's of LCL ! and NOSHR PSECT_ATTR = MSPLOT,LCL,NOSHR PSECT_ATTR = DEVICE,LCL,NOSHR PSECT_ATTR = FONTS,LCL,NOSHR PSECT_ATTR = NXTV1,LCL,NOSHR PSECT_ATTR = PLT3B,LCL,NOSHR PSECT_ATTR = STUFF,LCL,NOSHR ! ! New common block names should be added to CLUSTER3 COLLECT = CLUSTER1,$$$$POLYPLOT_VECTOR,$CODE,$PDATA COLLECT = CLUSTER2,$LOCAL,$BLANK COLLECT = CLUSTER3,MSPLOT,DEVICE,FONTS,NXTV1,PLT3B,STUFF,XSYMBL ! POLYPLOT_VECTOR.OBJ POLYPLOT.OLB/LIBRARY ! $ $ WRITE SYS$OUTPUT "Creating shareable image library..." $ LIBRARY/CREATE/SHAREABLE POLYPLOT_SHR.OLB POLYPLOT_SHR.EXE $ PURGE POLYPLOT_SHR.OLB,POLYPLOT_SHR.EXE $ DELETE POLYPLOT_VECTOR.OBJ;* $ WRITE SYS$OUTPUT "Whew!!! Finished." $ WRITE SYS$OUTPUT "--------------------------------------------------" $ END_IF6: $ ENDSUBROUTINE