̥$ PRODUSE010.A` PRODUSE010.ABACKUP/NOASSIST/NODISMOUNT/COMMENT=VAX/VMS SPKITBLD Procedure/INTER/LOG/VERIFY $1$DIA2:[PRODUCT_USE.A]*.*; $1$DIA2:[PRODUCT_USE]PRODUSE010.A/LABEL=(PRODUSE)/SAVE/BLOCK=9000/GROUP=25VAX/VMS SPKITBLD Procedure BUCKLEY <<^V6.1 _DEWEY::  _$1$DIA2: V6.1 $I(*[PRODUCT_USE.A]BUILD_VMS_DECW_SKIP.COM;7+,I./ 4O-x0123KPWO5&6cwGb671;<^89GHJ$!BUILD_VMS_DECW_SKIP.COM$!M$!This command procedure is used to build a list of vms and decwindows imagesO$!that will be skipped by the program Product_use.for. These images are skippedL$!because they are a basic part of vms and including them will just add more=$!images with a blank product name to the product_use report.$!5$!A new file should be created after VMS is upgraded.$!$IMAGE_COUNT = 0$!OPEN OUTPUT FILE)$OPEN/WRITE OUT PRODUCT_SKIP_VMS_DECW.DAT$!OPEN THE VMS IMAGES FILE1$OPEN/ERROR=VMSERR IMAGE SYS$UPDATE:VMSKITBLD.DAT$GOSUB ADD_IMAGE $CLOSE IMAGE$VMSERR:!$!OPEN THE DECWINDOWS IMAGES FILE4$OPEN/ERROR=DECWERR IMAGE SYS$UPDATE:DECW$KITBLD.DAT$GOSUB ADD_IMAGE $CLOSE IMAGE $DECWERR: $CLOSE OUTN$WRITE SYS$OUTPUT "''IMAGE_COUNT' IMAGES WRITTEN TO PRODUCT_SKIP_VMS_DECW.DAT"D$SORT/KEY=(POSITION:1,SIZE:39,CHARACTER) PRODUCT_SKIP_VMS_DECW.DAT - PRODUCT_SKIP_VMS_DECW.DAT$EXIT $ADD_IMAGE:>$!SKIP RECORDS UNTIL "Data for actual files starts below" LINE$SKIP1:$READ/END=DONE_IMAGE IMAGE IREC$LENGTH = F$LENGTH(IREC)L$IF (F$LOCATE("Data for actual files starts below",IREC) .EQ. LENGTH) THEN - GOTO SKIP1$SKIP2:$READ/END=DONE_IMAGE IMAGE IREC3$IF (F$EXTRACT(0,1,IREC) .EQS. "!") THEN GOTO SKIP2$LENGTH = F$LENGTH(IREC)$BRACKET = F$LOCATE("]",IREC)$IF (BRACKET .EQ. LENGTH)$THEN)$!WRITE SYS$OUTPUT "BAD RECORD = ''IREC'" $GOTO SKIP2$ENDIF$EXTLOC = F$LOCATE(".",IREC)$IF (EXTLOC .EQ. LENGTH)$THEN)$!WRITE SYS$OUTPUT "BAD RECORD = ''IREC'" $GOTO SKIP2$ENDIF>$IF (F$EXTRACT(EXTLOC + 1,3,IREC) .NES. "EXE") THEN GOTO SKIP2$IMAGE_COUNT = IMAGE_COUNT + 1%$IMAGELENGTH = (EXTLOC - BRACKET) - 14$IMAGENAME = F$EXTRACT(BRACKET + 1,IMAGELENGTH,IREC)/$IF (IMAGENAME .EQS. "FORTRAN") THEN GOTO SKIP2O$IMAGEW = F$EXTRACT(0,39,"''IMAGENAME' ")$WRITE OUT "''IMAGEW'" $GOTO SKIP2 $DONE_IMAGE:$RETURN%*[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;6+,\ xq./ 43-x0123KPWO5 6MJz7t;<^89GHJ3300KER ELN 34NNKER ELN 36CCKER ELN 3800KER ELN 38NNKER ELN 38SSKER ELN 39AQKER ELN 39MMKER ELN 39RRKER ELN 3A1ENCODE A1 3A1R$MAIN A1R 3AAF01$BIG AAF01 3AAF01$DIAG AAF01 3AAF01$DOBL AAF01 3AAF01$DOU AAF01 3AAF01$SNGL AAF01 3AAF01$T24 AAF01 3AAF01$T25 AAF01 3AAF01$T3 AAF01 3AAG$MSG AAG 3AAG_ADD_REPOSITORY AAG 3AAG_ADMIN AAG 3ACMADUSHR ACMS 3ACMCDUSHR ACMS 3ACMCMUSHR ACMS 3ACMIWPSHR ACMS 3ACMRRSHR ACMS 3ACMS$RI_AGENT ACMS 3ACMSAAU ACMS 3ACMSACC ACMS 3ACMSADU ACMS 3ACMSATLOG ACMS 3ACMSATR ACMS 3ACMSBOOT ACMS 3ACMSBOOTC ACMS 3ACMSCP ACMS 3ACMSDBG ACMSDEV 3ACMSDDU ACMS 3ACMSEXC ACMS 3ACMSGEN ACMS 3ACMSHR ACMS 3ACMSINS ACMS 3ACMSIWP ACMS 3ACMSMSG ACMS 3ACMSOPR ACMS 3ACMSQTI ACMS 3ACMSQUEMGR ACMS 3ACMSTSC ACMS 3ACMSTUMSG ACMS 3ACMSUDU ACMS 3ACMS_MENU ACMS 3ACMTDUSHR ACMS 3ACMTWPSHR ACMS 3ACMUTLMSG ACMS 3ACMVFSHR ACMS 3ACS ADA 3ACS$DWCI ADA 3ADA ADA 3ADA$FROM_CDD ADA 3ADA$DMATH VAXELN_ADA 3ADA$DWCI ADA 3ADA$ELNRTL VAXELN_ADA 3ADA$ELNVMS VAXELN_ADA 3ADA$FMATH VAXELN_ADA 3ADA$GMATH VAXELN_ADA 3ADA$HMATH VAXELN_ADA .ADAMSG ADA .ADARTL ADA 3ADE ADE 3ADESHR ADE 3ADF01$BIG ADF01 3ADF01$DIAG ADF01 3ADF01$DOU ADF01 3ADF01$SIN ADF01 3ADF01$TEST17 ADF01 3ADF01$TEST20 ADF01 3ADF01$TEST21 ADF01 3ADF01$TEST22 ADF01 3ADQ32_UTILITY ELN 3AGENPARAMS VWS 3ALL_COLORS UISX 3AMDS$COMM AMDS 3AMDS$CONSOLE AMDS 3APLTAP APL 3AST UISX 3AUTHORIZE ELN 3AUTOSYNCH DTM 3AUXCSHR ELN 3AWDRIVER RTI 3AXDRIVER RTI 3AYDRIVER RTI 3AZDRIVER RTI 3BACKTRANS RSX 3BANNER UISX 3BASIC$DWCI BASIC 3BASIC$MSG BASIC 3BASIC BASIC 3BCC$BRI_IC_SERVER BCC 3BCC$BRI_SF_SERVER BCC 3BCC$CFG_COLORS BCC 3BCC$CFG_DIRECTORY BCC 3BCC$CFG_EXTERNAL_MAP BCC 3BCC$CFG_FILE BCC 3BCC$CFG_GENERATION BCC 3BCC$CFG_GROUP @+p$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63" BCC 3BCC$CFG_KEYS BCC 3BCC$CFG_LIBRARY BCC 3BCC$CFG_POINT BCC 3BCC$CFG_STRUCTURE BCC 3BCC$CFG_USER BCC 3BCC$CLI BCC 3BCC$COMPARE_DEVICE BCC 3BCC$COMPARE_FILE BCC 3BCC$COPY BCC 3BCC$DELETE BCC 3BCC$DIRECTORY BCC 3BCC$DISPATCHER BCC 3BCC$DMGTSUP BCC 3BCC$DOWNLOAD BCC 3BCC$EDIT BCC 3BCC$EVALUATOR BCC 3BCC$EXPORT BCC 3BCC$EXTDATSRV BCC 3BCC$GBLSERVER BCC 3BCC$GET_TEXT_FILE BCC 3BCC$GROUP_COMPARE_DEVICE BCC 3BCC$GROUP_DOWNLOAD BCC 3BCC$GROUP_INSERT BCC 3BCC$GROUP_REMOVE BCC 3BCC$GROUP_UPLOAD BCC 3BCC$IMPORT BCC 3BCC$LOGGER BCC 3BCC$MONITOR BCC 3BCC$MONITOR_BASESTAR BCC 3BCC$MONITOR_PORT BCC 3BCC$MSG BCC 3BCC$NOTIFY BCC 3BCC$PURGE BCC 3BCC$PUT_TEXT_FILE BCC 3BCC$RENAME BCC 3BCC$RPCR BCC 3BCC$SERVER BCC 3BCC$SET_DEF BCC 3BCC$SHOW_EXTERNAL_MAP BCC 3BCC$SHOW_GROUP BCC 3BCC$SHOW_HISTORY BCC 3BCC$SHOW_POINT BCC 3BCC$SHOW_STRUCTURE BCC 3BCC$SHOW_SYSTEM BCC 3BCC$SHOW_USER BCC 3BCC$SHR BCC 3BCC$UI BCC 3BCC$UPLOAD BCC 3BCK RSX 3BDA ELN 3BDDRIVER ELN 3BGDRIVER UCX 3BGDRIVER_SEC UCX 3BLISS32 BLS32 3BOUNCE UISX 3BOXES UISX 3BQDRIVER IBQ 3BQDRIVER_V5 IBQ 3BRI$SF_SQL BCC 3BRU RSX 3BSCPTPDET BSCPTP 3BSCPTPGBL BSCPTP 3BUDRIVER ELN 3BUTTONAST UISX 3BVPSSP ELN 3CALC$CONVERT_GRIDS CALC 3CALC$MAIN CALC 3CALC$SET_UIC CALC 3CALC$SHARE CALC 3CALCULATE_DATASEC_SIZE BCC 3CALL_GRANT A1 3CC$DWCI VAXC 3CDA$ACCESS A1 3CDA$ACCESS_FIX SQLA 3CDD$ADMINISTRATOR CDDT 3CDD$CALLBACK_VALIDATION CDD 3CDD$REMOTE5 CDD 3CDDEXC CDD 3CDDL CDD 3CDDLEXC CDD 3CDDLIBSHR CDD 3CDDSHR CDD 3CDDT$EXTENSION CDDT 3CDDV CDD 3CDDVEXC CDD 3CDDX$MESSAGES CDD 3CDDX043 CDD 3CDDX050 CDD 3CDDX051 CDD 3CDO$MESSAGES CDD 3CDO CDD 3CDOINTSHR CDD 3CDOODLE UISX 3CDROM INFOSERV 3CD_DISMNTSHR INFOSERV 3CD_DISMOUNT INFOSERV 3CD_MOUNT INFOSERV 3CD_MOUNTSHR INFOSERV 3CEM$EMULATOR RSX 3CFFBDF UISX 3CFFBDF_MESSAGE UISX 3CGI$GKS DECVIEW3D 3CGI$HPGLDDO DECVIEW3D 3CGI$INTERLEAFDDO DECVIEW3D 3CGI$NULLDDO DECVIEW3D 3CGI$REGISDDO DECVIEW3D 3CGI$SHR DECVIEW3D 3CGI$SIXELDDO DECVIEW3D 3CGI$TEKDDO DECVIEW3D 3CHROMA_TRIANGLE UISX 3CIMI$CTSHR DECVIEW3D 3CIMI$GSRVSHR DECVIEW3D 3CIMI$SLIBSHR DECVIEW3D 3CIMI$TRANSPORT_COMMON DECVIEW3D 3CIO300 ELN 3CIO4NN ELN 3CIO6CC ELN 3CIO800 ELN 3CIO8800 ELN 3CIO9MM ELN 3CIO9RR ELN 3CIOVAX ELN 3CIOVCB02 ELN 3CIOVS40 ELN 3CIOWS01 ELN 3CIOWS4NN ELN 3CIT$CLIENT_SHR CIT 3CIT$IVP CIT 3CIT$TEST CIT 3CITMD CITMD 3CITSR$ASAI CITSR 3CITSR$CSTA CITSR 3CITSR$DR CITSR 3CITSR$FOR CITSR 3CITSR$FOREIGN_SHR CITSR 3CITSR$HCI CITSR 3CITSR$HICOM CITSR 3CITSR$IAP CITSR 3CITSR$ISDN_DRIV CITSR 3CITSR$ISDN_L2 CITSR 3CITSR$L2 CITSR 3CITSR$L2DM CITSR 3CITSR$L2E CITSR 3CITSR$L3 CITSR 3CITSR$VOICE CITSR 3CLINOSHARE BCC 3CLOCK UISX 3CM$CART$SCAN A1 3CM$PARSE A1 3CMA$LIB_SHR MCCBMS 3CMA$OPEN_LIB_SHR MCCBMS 3CMA$OPEN_RTL MCCBMS 3CMA$RTL MCCBMS 3CMDRIVER FTSSB 3CMS$DW CMS 3CMSC ELN 3CMSMSG CMS 3CNV RSX 3COBOL COBOL 3COBOLMSG COBOL 3COBRTL 0 $ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63X" COBOL 3COLLEGES RDBVMS 3COMM$DTE VAXPAC 3COMM$KERMIT VAXPAC 3COMMSERVER$FIP COMMSERVER 3COMMSERVER$PROC COMMSERVER 3COMMSERVER$SHR COMMSERVER 3COMSERVER COMMSERVER 3CONSOLE ELN 3CONSOLE9RR ELN 3CONVERT_PARAMETER BCC 3CONVERT_POINT_FILE BCC 3COPYSYS_UTILITY ELN 3CPETAL UISX 3CPS$MSG CPS 3CPS$SMB CPS 3CPUZZLE UISX 3CPYTSK DECINTACT 3CRF RSX 3CSDRIVER ELN 3CTF$CONFIG ISDN 3CTF$IEEE8022_ANALYZE X25GWY 3CTF$IEEE8023_ANALYZE X25GWY 3CTF$ISDNCC_ANALYZE ISDN 3CTF$ISDNCC_LEFT_ANALYZE ISDN 3CTF$ISDNL2_ANALYZE ISDN 3CTF$ISDNL3_ANALYZE ISDN 3CTF$LAPB_ANALYZE X25GWY 3CTF$LLC2_ANALYZE X25GWY 3CTF$MODEM_CONNECT_ANALYZE X25GWY 3CTF$NSP_ANALYZE X25GWY 3CTF$ROUTING_ANALYZE X25GWY 3CTF$X25GAP_ANALYZE X25GWY 3CTF$X25L3_ANALYZE X25GWY 3CUBE UISX 3CVE$MAIN CVE 3CVTKB DEEX 3CXDRIVER ELN 3DAP ELN 3DATATOBJ ELN 3DATETIME UISX 3DBLIVPDET DIBOL 3DBLIVPDET DIBOL 3DBLMNUGEN DIBOL 3DBLMSGMGR DIBOL 3DBLRTL DIBOL 3DBLRTLMSG DIBOL 3DBMDBRRTO DBMRTO 3DBMMONRTO DBMRTO 3DBMMSGRTO DBMRTO 3DBMPRVRTO DBMRTO 3DBMSERVERRTO DBMRTO 3DBMSHRRTO DBMRTO 3DBORTO DBMRTO 3DBOMSGRTO DBMRTO 3DBQRTO DBMRTO 3DBQMSGRTO DBMRTO 3DBMDBRDEV DBMDEV 3DBMMONDEV DBMDEV Y3DBMMSGDEV DBMDEV 3DBMPRVDEV DBMDEV 3DBMSERVERDEV DBMDEV 3DBMSHRDEV DBMDEV 3DBODEV DBMDEV 3DBOMSGDEV DBMDEV 3DBQDEV DBMDEV 3DBQMSGDEV DBMDEV 3DB_UTILITY SCHEDULER 3DCDRIVER ELN 3DCIO ELN 3DCLTABLES NOTES 3DCMATH ELN 3DCSC$CARTRIDGE DCSC 3DCSC$FILE_CONVERT DCSC 3DCSC$MSG_SHARE DCSC 3DCSC$RTL_DISMOUNT DCSC 3DCSC$RTL_MOUNT DCSC 3DCSC$RTL_SHARE DCSC 3DCSC$SVR_ORH DCSC 3DCSC$SVR_RMSG_DECNET DCSC 3DCSC$SVR_RMSG_TCPIP DCSC 3DCSC$SVR_SCFE DCSC 3DCSC$SVR_SPVSR DCSC 3DCSC$SVR_TMSG_DECNET DCSC 3DCSC$SVR_TMSG_TCPIP DCSC 3DCSC$SVR_UXCHAN_RCV DCSC 3DCSC$SVR_UXCHAN_XMT DCSC 3DCSC$SVR_VMCHAN_PROC DCSC 3DCSC$SVR_WP_ACSPOLL DCSC 3DCSC$SVR_WP_CHANRCVR DCSC 3DCSC$SVR_WP_ENTEJCT DCSC 3DCSC$SVR_WP_FILERCVR DCSC 3DCSC$SVR_WP_LLQRYS DCSC 3DCSC$SVR_WP_MNTDMNT DCSC 3DCSC$SVR_WP_NONMGMNT DCSC 3DCSC$SVR_WP_QRYLUAT DCSC 3DCSC$SVR_WP_QRYRQST DCSC 3DCSC$SVR_WP_RESREL DCSC 3DCSC$SVR_WP_SETLOG DCSC 3DCSC$SVR_WP_SETVOL DCSC 3DDA ELN 3DDAL$CONVERT_TR_DB DDAL 3DDAL$CONVERT_TR_DB_DATA_DEFNS DDAL 3DDAL$COPY_PROCESS DDAL 3DDAL$MESSAGE DDAL 3DDAL$SHR DDAL 3DDAL$TR_MON DDAL 3DDCMP ELN 3DDCMP_V2 ELN 3DDDRIVER ELN 3DDIF$READ_AFS CDACVTLIB 3DDIF$READ_CGM CDACVTLIB 3DDIF$READ_CGM_MESSAGES CDACVTLIB 3DDIF$READ_DCA CDACVTLIB 3DDIF$READ_DX CDACVTLIB 3DDIF$READ_MACPAINT CDACVTLIB 3DDIF$READ_ODA ODA 3DDIF$READ_ODA_CGM ODA 3DDIF$READ_ODA_CGM_MESSAGES ODA 3DDIF$READ_ODA_MESSAGES ODA 3DDIF$READ_SGML CDACVTLIB 3DDIF$READ_TIFF CDACVTLIB 3DDIF$READ_UIS UISX 3DDIF$READ_WPL A1 3DDIF$VIEWSHR ASENGLISH 3DDIF$WRITE_AFS CDACVTLIB 3DDIF$WRITE_DCA CDACVTLIB 3DDIF$WRITE_DX CDACVTLIB 3DDIF$WRITE_GRAPHICS CDACVTLIB 3DDIF$WRITE_MACPAINT CDACVTLIB 3DDIF$WRITE_ODA ODA 3DDIF$WRITE_ODA_CGM ODA 3DDIF$WRITE_ODA_CGM_MESSAGES ODA 3DDIF$WRITE_ODA_MESSAGES ODA 3DDIF$WRITE_PS ASENGLISH 3DDIF$WRITE_SGML CDACVTLIB 3DDIF$WRITE_TIFF CDACVTLIB 3DDIF$WRITE_WPL A1 3DDIS$CMD OSI_TOOLKIT 3DDIS$COMPILE OSI_TOOLKIT 3DDLRTO DBMRTO 3DDLMSGRTO DBMRTO 3DDLDEV DBMDEV 3DDLMSGDEV DBMDEV 3DDX DDX 3DDXF_MAILSHRP_V4 SNADDXF 3DDXF_MAILSHRP_V5 SNADDXF 3DDXF_MAILSHR_V4 SNADDXF 3DDXF_MAILSHR_V5 SNADDXF 3DECCHART$MOTIF DECISION 3DECCHART DECISION 3DECEDI$AFS_MAIN DECEDI 3DECEDI$APPSHR DECEDI 3DECEDI$ARCHIVE_SERVER DECEDI 3DECEDI$BISYNC DECEDI 3DECEDI$BISYNC2 DECEDI 3DECEDI$CC_PSI_INTERFACE DECEDI 3DECEDI$CC_TRAX_RESEND_TIMEOUT DECEDI 3DECEDI$CNV_EDIFACT DECEDI 3DECEDI$CNV_TRADACOMS DECEDI 3DECEDI$CNV_X12 DECEDI 3DECEDI$COMMS_CONTROL DECEDI sA]$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63RT". 3DECEDI$CVP_FETCH DECEDI 3DECEDI$CVP_SEND DECEDI 3DECEDI$DATACHECKSHR DECEDI 3DECEDI$DATA_SERVER DECEDI 3DECEDI$DIAL DECEDI 3DECEDI$DLG DECEDI 3DECEDI$EXTSHR DECEDI 3DECEDI$FS_DECNET DECEDI 3DECEDI$FS_MAIN DECEDI 3DECEDI$IMPEXP DECEDI 3DECEDI$INTERCHANGE DECEDI 3DECEDI$MESSAGE DECEDI 3DECEDI$NUMSHR DECEDI 3DECEDI$OFTP DECEDI 3DECEDI$SEQCHECKSHR DECEDI 3DECEDI$SERVICES DECEDI 3DECEDI$SHUTDOWN DECEDI 3DECEDI$STARTUP DECEDI 3DECEDI$SUB_COPY_FS DECEDI 3DECEDI$SUB_DN_FS DECEDI 3DECEDI$SUB_RIP_FS DECEDI 3DECEDI$TEL DECEDI 3DECEDI$TFB DECEDI 3DECEDI$TFB_X12 DECEDI 3DECEDI$TFS DECEDI 3DECEDI$TRAD_NET DECEDI 3DECEDI$TRNS_EDIFACT DECEDI 3DECEDI$TRNS_TRADACOMS DECEDI 3DECEDI$TRNS_X12 DECEDI 3DECEDI$VAN_TRAX DECEDI 3DECEDI$VPP DECEDI 3DECEDI$X25 DECEDI 3DECEDI$X252 DECEDI 3DECEDI$X400 DECEDI 3DECISION$ACCESS DECISION 3DECISION$ACCESS_LAN_SHR DECISION 3DECISION$BUILDER DECISION 3DECISION$BUILDER_GOBE_SHR DECISION 3DECISION$BUILDER_SHR DECISION 3DECISION$CT DECISION 3DECISION$DTIF_TO_DDIF DECISION 3DECISION$ECALC DECISION 3DECISION$TABLEWGT_SHR DECISION 3DECLANDER UISX 3DECPRESENT PRESENT 3DECRAM$SIZE DECRAM 3DECSLIDE SLIDE 3DECSOUND DECW$MOTIF 3DECVIEW3D DECVIEW3D 3DECW$AUTHENTICATE MOTIF01 3DECW$DWTLIBSHR EDCS 3DECW$MOTIF$DXMSHR IEZ11 3DECW$MOTIF$XMSHR IEZ11 3DECW$MOTIF$XTSHR IEZ11 3DECW$SERVER_DDX_GV VWS 3DECW$SERVER_EXTENSION_XTRAP_V53 DTM 3DECW$SERVER_EXTENSION_XTRAP_V54 DTM 3DECW$XLIBSHR EDCS 3DEC_DEV_SIM BCC 3DEEX$DELIVER_MAIN DEEX 3DEEX$DELIVER_SHR DEEX 3DEEX$DEVELOP_MAIN DEEX 3DEEX$DEVELOP_SHR DEEX 3DEF RSX 3DEGREES RDBVMS 3DELAUNAY UISX 3DEMOMENU UISX 3DEPTS RDBVMS 3DES$CALL_CONTEXT DES 3DES$CVT1_0_1_1 DES 3DES$DEFINE_RELATIONSHIP DES 3DES$DSLSHR DES 3DES$MAIN DES 3DES$MSG DES 3DES$SERVER DES 3DES RSX 3DESIGNS UISX 3DESK UISX 3DEVTK_MESSAGES DEVTK 3DEX$CREATE_USER DADE 3DEX$DSL$SHR DEX 3DEX$ISM_CLIENT_SHR DEX 3DEX$ISM_MSG DEX 3DEX$ISM_PMIGRATE_MAIN DEX 3DEX$ISM_SERVER_MAIN DEX 3DEX$ISM_SERVER_SHUTDOWN DEX 3DEX$SSA_MAIN DEX 3DFG$CREATE_DATABASE DFG 3DFG$DEFRAGMENTSHR DFG 3DFG$ENGINE_MAIN DFG 3DFG$INIT_DATABASE DFG 3DFG$MESSAGE DFG 3DFG$RELATIONSHR DFG 3DFG$SCHEDULER DFG 3DFG$UTILITYSHR DFG .DFGDCL DFG 3DFS$COM_ACP DFS 3DFS$COM_LOGGER DFS 3DFS$CONTROL DFS 3DFS$MNGT_SHR DFS 3DFS$MOUNT_SHR DFS 3DFS$SERVER_ACP DFS 3DFSCDRIVER DFS 3DFSERVER DECINTACT 3DFSRRDRIVER DFS 3DFSSDRIVER DFS 3DGIT$LIBSHR DECVUIT 3DHCFKEY SNADHCF 3DHTDRIVER ELN 3DHVDRIVER ELN 3DIB85MSG DIBOL 3DIBOL85 DIBOL 3DIDRIVER ELN 3DIGICLOCK UISX 3DISK ELN 3DISPFONT UISX 3DISPLAY A1 3DISPLAY_LIST UISX 3DISTORT UISX 3DITHER_DOWN VID 3DLLSHR ELN 3DMATH ELN 3DMBDRIVER ELN 3DMLRTO DBMRTO 3DMLMSGRTO DBMRTO 3DMLDEV DBMDEV 3DMLMSGDEV DBMDEV 3DMP RSX 3DMQ$UCX_TCPIP_LD DMQ 3DMQLU62_CONTROL DMQ 3DMQLU62_EVENT_WATCH DMQ 3DMQLU62_MSG DMQ 3DMQLU62_SERVER DMQ 3DMQLU62_SERVER_STOP DMQ 3DMQLU62_TEST DMQ 3DMU CDD 3DMUEXC CDD 3DNDRIVER RTI 3DNS$CLIENT DNS 3DOC$MOPS DOC 3DOC$MSG DOC 3DOC$MSG_JA DOCJA 3DOC$PARSE DOC 3DOC$RAGS DOC 3DOC$VOYER DOC 3DODRIVER MAP 3DOILOOP UISX 3DOILYDC UISX 3DOODLE UISX 3DOPEXAMPLE UISX 3DOP_FILLED_CIRCLES_C UISX 3DOP_FILLED_CIRCLES_FOR UISX 3DOP_FILLED_CIRCLES_PAS UISX 3DOSTOVMS SOFTPC 3DPASCALIO ELN 3DPEMSG A1 3DPESHR A1 3DPL$AIL_SHR DPL 3DPL$CA DPL 3DPL$CLIENT DPL 3DPL$CMA DPL 3DPL$DECWZީ$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63"?$WSNETEDSHR DPL 3DPL$DSL$SHR DPL 3DPL$DWCCVT DPL 3DPL$LIB_CMA DPL 3DPL$MSGSHR DPL 3DPL$OPEN_CMA DPL 3DPL$OPEN_LIB_CMA DPL 3DPL$PMCVT_VAXPM DPL 3DPL$SERVER DPL 3DPL$VERIFYDATABASE DPL Z3DQDRIVER ELN 3DQS$CLIENT DQS 3DQS$MSG DQS 3DQS$NOTIFIER DQS 3DQS$PRTSMB DQS 3DQS$SERVER DQS 3DQS$SMB DQS 3DRCP150 RT2 3DRCP250 RT2 3DRX11C$DEMF DRX11C 3DRX11C$EXER DRX11C 3DRX11C$LINK DRX11C 3DRX11C$XFER DRX11C 3DRX11C$XFERP DRX11C 3DS5CFG DS5 3DSIDRIVER ELN 3DSL$SHR A1 3DSM$ECALL DSM 3DSM$MESSAGE DSM 3DSM$MT_EBCASC DSM 3DSM$SHARE DSM 3DSM$XWIN_XLIB DSM 3DSM$XWIN_XMOTIF DSM 3DSM$XWIN_XMOTIFRM DSM 3DSM$XWIN_XTOOLKIT DSM 3DSM$XWIN_ZXMUMPS DSM 3DSM DSM 3DSMDDPDRV DSM 3DSP RSX 3DSPACT DECINTACT 3DSPLCL DECINTACT 3DSRF$ABORT_EXECUTOR DSRF 3DSRF$CONVERT_V12_FT_DB DSRF 3DSRF$CONVERT_V20_FT_DB DSRF 3DSRF$COPY_FROM_V11_DB DSRF 3DSRF$EXECUTOR DSRF 3DSRF$GROUP_STATUS_REPORT DSRF 3DSRF$IMPLEMENTATION_REPORT DSRF 3DSRF$MAIN DSRF 3DSRF$MESSAGES DSRF 3DSRF$MISSING_TOKENS_MEMO DSRF 3DSRF$MISSING_TOKENS_REPORT DSRF 3DSRF$PROTECT_NEW_DB DSRF 3DSRF$PURGE_TOKENS DSRF 3DSRF$ROLLUP DSRF 3DSRF$SHARE DSRF 3DSRF$STATUS_MEMO DSRF 3DSRF$SUMMARY_REPORT DSRF 3DSRF$TOKEN_LOOPBACK DSRF 3DSRF$TOKEN_RECEIVER DSRF 3DSSIP ELN 3DSTOBJ VIDAO 3DTE RSX 3DTI$SHARE ACMS 3DTIF$READ_ASCII_FIELD DECISION 3DTIF$READ_ASCII_FIELD_MESSAGES DECISION 3DTIF$READ_ASCII_TABULAR DECISION 3DTIF$READ_ASCII_TABULAR_MESSAGE DECISION 3DTIF$READ_CALCGRD DECISION 3DTIF$READ_CALCGRD_MESSAGES DECISION 3DTIF$READ_DIF DECISION 3DTIF$READ_DIF_MESSAGES DECISION 3DTIF$READ_WK1 DECISION 3DTIF$READ_WK1_MESSAGES DECISION 3DTIF$READ_WK3 DECISION 3DTIF$READ_WK3_MESSAGES DECISION 3DTIF$WRITE_ASCII_TABULAR DECISION 3DTIF$WRITE_ASCII_TABULAR_MESSAG DECISION 3DTIF$WRITE_WK1 DECISION 3DTIF$WRITE_WK1_MESSAGES DECISION 3DTIF$WRITE_WK3 DECISION 3DTIF$WRITE_WK3_MESSAGES DECISION 3DTM$XTRAP DTM _3DTM DTM 3DTMIMGSHR DTM 3DTMSHR DTM 3DTR$CDDTSHR DTR 3DTRMSGS DTR 3DTSS$CONTROL DNVEXT 3DTSS$GRAPH DNVEXT 3DTSS$PROVIDER_ACTS DNVEXT 3DTSS$PROVIDER_HOPF DNVEXT 3DTSS$PROVIDER_SPEC DNVEXT 3DTSS$PROVIDER_TRAC DNVEXT 3DTSS$RUNDOWN DNVEXT 3DTSS$SERVER DNVEXT 3DTSS$SET_TIMEZONE DNVEXT 3DTSS$TEST_TIMEZONE DNVEXT 3DUDRIVER ELN G3DUMP DEEX 3DUMP6CC ELN 3DUMP9MM ELN 3DUMP9RR ELN 3DUMPBDA ELN 3DUMPDRIVR ELN 3DUMPKDM9RR ELN 3DVSDRIVER ELN 3DW4125 DW4125 3DXML$FDS DXML 3DXML$FDV DXML 3DXML$FGS DXML 3DXML$FGV DXML 3DZSDRIVER ELN A3DZVDRIVER ELN 3EBUILD ELN 3EBUILD_V47 ELN 3ECALC$GRID_SHR DECISION 3ECALC$MESSAGES DECISION 3ECALC$MESSAGES_DE_AT DECISIONDE 3ECALC$MESSAGES_DE_CH DECISIONDE 3ECALC$MESSAGES_DE_DE DECISIONDE 3ECALC$MESSAGES_FR_BE DECISIONFR 3ECALC$MESSAGES_FR_CA DECISIONFR 3ECALC$MESSAGES_FR_CH DECISIONFR 3ECALC$MESSAGES_FR_FR DECISIONFR 3ECALC$TABLEWGT_SHR DECISION 3ECALC$TPU_SHR DECISION 3ECL ELN 3EDCS$DSLSHR EDCS 3EDCS$MAKE_PROMPT EDCS 3EDCS$MAKE_TABLE EDCS 3EDEBUG ELN 3EDEBUGLCL ELN 3EDEBUGREM ELN 3EDEBUG_V47 ELN 3EDI RSX 3EDISPLAY ELN 3ELMS$BCP MCC I3ELMS$BCP ELMS 3ELMS$CONVERT MCC 3ELMS$CONVERT ELMS 3ELMS$NIMUX MCC 3ELMS$NIMUX ELMS 3ELN$PSHR ELN 3ELN$TERTIARY_LOADER ELN 3ELN$VMB ELN 3ELNACCESS ELN 3ELNCMSG ELN 3ELNDECW_CONSOLE ELN 3ELNDECW_DWTLIBSHR ELN 3ELNDECW_DWTMSG ELN 3ELNDECW_GAA_SERVER ELN 3ELNDECW_GAB_SERVER ELN 3ELNDECW_GCB_SERVER ELN 3ELNDECW_GEB_SERVER ELN 3ELNDECW_MWM ELN 3ELNDECW_TE ELN 3ELNDECW_WINMGR ELN 3ELNDECW_XLIBMSG ELN 3ELNDECW_XLIBSHR ELN 3ELNDECW_XMLIBSHR ELN 3ELNDECW_XTLIBSHR q$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63k'"P ELN 3ELNLDR ELN 3ELNLDR8 ELN 3ELNMOM ELN 3ELNMSG ELN 3ELSE ELN 3EMPLOYEES RDBVMS 3ENIM$HOST_MAIN MCC 3ENIM$REMOTE_MAIN MCC 3EPAAV_MAIN ELN 3EPAAV_MAIN_V47 ELN 3EPACEMAIN ELN 3EPACEMAIN_V47 ELN 3EPACVMAIN ELN 3EPACVMAIN_V47 ELN 3EPASCAL ELN 3EPASCAL_V47 ELN 3EPC$MSG DECISION 3EPC$SHR DECISION H3ERRFORMAT ELN 3ESDRIVER ELN 3ESS$DADDRIVER INFOSERV 3ESS$LADCDRIVER INFOSERV 3ESS$LADCP INFOSERV 3ESS$LADDRIVER INFOSERV 3ESS$LASTCP INFOSERV 3ESS$LASTDRIVER INFOSERV 3ESS$MADDRIVER INFOSERV 3ESS$TESTDEV ESS 3ETBOOT ELN 3ETBOOT8 ELN 3ETDRIVER ELN 3EWRITEBOOT ELN 3EZDRIVER ELN 3F11CACP INFOSERV 3F11DACP INFOSERV 3FACTOR PLUS T3FALSERVER ELN T3FCSRES RSX 3FDNDEDT1 A1 3FDNDEDT2 A1 3FDNDREORG A1 3FDVMSG VAXFMS 3FDVSHR VAXFMS 3FETCHCHECK A1 3FILE ELN 3FILEUTIL ELN 3FILLPAT UISX 3FLAG UISX 3FLUSHDM A1 3FLUSHUSER A1 3FLUSH_LOG DECINTACT 3FLX RSX 3FMSFAA VAXFMS 3FMSFCV VAXFMS 3FMSFED VAXFMS 3FMSFLG VAXFMS 3FMSFLI VAXFMS 3FMSFTE VAXFMS 3FMSFUU VAXFMS 3FMSMSG VAXFMS 3FMS_MESSAGES ACMSDEV 3FMS_REQUEST_LIBRARY ACMSDEV 3FMS_SERVER ACMSDEV 3FONTS UISX 3FONTS2 UISX 3FORCEX DECINTACT 3FORDMLRTO DBMRTO 3FORDMLDEV DBMDEV 3FORMS$CIOSHR FORMSRT 3FORMS$MANAGER FORMS 3FORMS$MSGMGRSHR FORMSRT 3FORMS$MSGMGRSHR_HEBREW FORMSRT 3FORMS$PORTABLE_API FORMSRT 3FORM_BURGER DECVUIT 3FORTERR1 FORT 3FORTERR2 FORT 3FORTRAN$DWCI FORT 3FORTRAN-HPO FORTHPO 3FORTRAN FORT 3FPEMUL ELN 3FREDIT$MESSAGE UISX 3FREDIT$X11_MESSAGE UISX 3FREDIT UISX 3FREDIT_X11 UISX 3FTPCRSHR ELN 3FTSS$CONTROL FTSSB 3FTSS$CORE FTSSB 3FTSS$DISA_KA FTSSB 3FTSS$FSM$DSFSHR SYNC 3FTSS$FSM FTSSB 3FTSS$INIT FTSSB 3FTSS$MESSAGE FTSSB 3FTSS$SERVER FTSSB 3FTSS$UTIL FTSSB 3GCIO ELN 3GCMATH ELN 3GEN GEN 3GETMSGSHR ELN 3GKS$INQ_LIB DECGKS 3GKS3D$GKSRTLIB DECGKS 3GKS3D$IMM_MODE_XFORM DECGKS3D 3GKS3D$IVP DECGKS 3GKS3D$MI_WS_HANDLER DECGKS 3GKS3D$MO_WS_HANDLER DECGKS 3GKS3D$MSGS DECGKS 3GKS3D$RTLIB DECGKS 3GKS3D$SEGMENT_XFORM DECGKS3D 3GKS3D$WISS_WS_HANDLER DECGKS 3GKS3D$WSM_WS_HANDLER DECGKS 3GKSCRTLIB DECGKS 3GKSIVP DECGKS 3GKSMSG DECGKS 3GKSRTLIB DECGKS 3GMATH ELN 3GOBEFONTDEMO DECVUIT 3GOBETEST DECVUIT 3GPASCALIO ELN 3GPDRIVER ELN 3GRAY UISX 3GVADRIVER VWS 3HAMS$AMSAI_SHR HAMS 3HAMS$AMS_MAIN HAMS 3HAMS$DEMO_MAIN HAMS 3HAMS$EMS_MAIN HAMS 3HAMS$MSG HAMS 3HAMS$OI_MAIN HAMS 3HAMS$TEST_MAIN HAMS 3HAMS$UJTEST_MAIN HAMS 3HCUISMSG UISX 3HCUISSHR UISX 3HX$IVP HX 3HX$TSTQ HX 3HXDRIVER HX 3HYPERFILES DECVUIT 3IARP ELN 3IBQ$ASM44 IBQ 3IBQ$BCS IBQ 3IBQ$IVP IBQ 3IBQ$LD44E IBQ 3IBQ$LD44V IBQ 3ICM RSX 3ICSSHR ELN 3IEZ11$EX IEZ11 3IEZ11$ITADS IEZ11 3IFL RSX 3ILAN$CFG_DEVICE BCC 3ILAN$CFG_PHYPOINT BCC 3ILAN$CFG_POLLSET BCC 3ILAN$CLI BCC 3ILAN$DELETE BCC 3ILAN$DEVSRV BCC 3ILAN$DEV_CONTROL BCC 3ILAN$DEV_DIRECTORY BCC 3ILAN$DEV_READ_DATA BCC 3ILAN$DEV_READ_IPOINT BCC 3ILAN$DEV_STATUS BCC 3ILAN$DEV_WRITE_DATA BCC 3ILAN$DEV_WRITE_IPOINT BCC 3ILAN$DOWNLOAD_FILE BCC 3ILAN$SHOW_CONNECT BCC 3ILAN$SHOW_DEVICE 1$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63"a BCC 3ILAN$SHOW_PHYPOINT BCC 3ILAN$SHOW_POLLSET BCC 3ILAN$UPLOAD_FILE BCC 3IMAGE_INFO PSAC 3IMG$SHRLIB IMG 3IMG$STANDARDIZE_FILE ISA 3INFOSERVER_MONITOR INFOSERV 3INSPECT$PASSTHRU_SERVER INSPECT 3INSTALL RDBVMS 3INSTANTSQL INSTANTSQL 3INTACT$AUDREP DECINTACT 3INTACT$BAKINI DECINTACT 3INTACT$BAKRES DECINTACT 3INTACT$BUF DECINTACT 3INTACT$CALSET DECINTACT 3INTACT$CMU DECINTACT 3INTACT$DF_BLANK_FORM DECINTACT 3INTACT$HELP DECINTACT 3INTACT$HFU DECINTACT 3INTACT$HIBER DECINTACT 3INTACT$IMU DECINTACT 3INTACT$INIGSD DECINTACT 3INTACT$INILOG DECINTACT 3INTACT$MSG DECINTACT 3INTACT$PARSER DECINTACT 3INTACT$PDU DECINTACT 3INTACT$PRVSHR DECINTACT 3INTACT$PSWDVAL DECINTACT 3INTACT$QMU DECINTACT 3INTACT$QUEINI DECINTACT 3INTACT$RESTRT DECINTACT 3INTACT$RPCMSG DECINTACT 3INTACT$RPCSHR DECINTACT 3INTACT$RSPWRT DECINTACT 3INTACT$SECURE DECINTACT 3INTACT$SHR DECINTACT 3INTACT$SWLPROC DECINTACT 3INTACT$SWLUP DECINTACT 3INTACT$TFEVAX DECINTACT 3INTACT$TOC DECINTACT 3INTACT$VFSHR DECINTACT 3INTACT$VIM DECINTACT 3INTERNET ELN 3INTERNETNULL ELN 3IOTK$COMMUNICATION IOTK 3IOTK$DB_COMMS IOTK S3IOTK$FUNCTIONS IOTK 3IOTK$HONEYWELL_MS IOTK G3IOTK$IVP IOTK 3IOTK$LOG IOTK 3IOTK$LOGGER IOTK 3IOTK$MESSAGES IOTK 3IOTK$NET_SERVER IOTK 3IOTK$PHOENIX IOTK 3IOTK$RUNTIME IOTK 3IOTK$SHARE IOTK 3IOTK$TOOLKIT IOTK 3IPCACP ACMS A3IPCSHR ELN 3IPCSHRNULL ELN 3IRS$MAIN DCRS 3IRS$SHRLIB DCRS 3IRS$WIDSHR DCRS 3ISA$MAIN ISA 3ISA$SCANSHR ISA 3ISDN$ACPCODESHR ISDN 3ISDN$ACPDATASHR ISDN 3ISDN$CC ISDN 3ISDN$CMGT_COMMANDS ISDN 3ISDN$CMGT_PROTCTRL ISDN 3ISDN$CMGT_ROUTCTRL ISDN 3ISDN$CMGT_SERVER ISDN 3ISDN$DRIV ISDN 3ISDN$L2 ISDN 3ISDN$L2AT ISDN 3ISDN$L2_DRIV ISDN 3ISDN$L3AT ISDN 3ISDN$L3AU ISDN 3ISDN$L3BT ISDN 3ISDN$L3FF ISDN 3ISDN$L3GG ISDN 3ISDN$L3IT ISDN 3ISDN$L3JP ISDN 3ISDN$L3NT ISDN 3ISDN$MESSAGES ISDN 3ISDN$NCP ISDN 3ISDN$NCP_ACCESS ISDN 3ISDN$NPF_ATT ISDN 3ISDN$NPF_AUST ISDN 3ISDN$NPF_BRITISH ISDN 3ISDN$NPF_FRENCH ISDN 3ISDN$NPF_GERMAN ISDN 3ISDN$NPF_ITALIAN ISDN 3ISDN$NPF_JAPAN ISDN 3ISDN$NPF_NORTHERN ISDN 3ISM$CONVERT_V10_V11 DEX 3ISM$CREATE_SSET DEX 3ISM$GET_VERSION DEX 3ISM$LIST_MAG_RESOURCES DEX 3ISM$MSG ISM 3ISM$SET_VERSION DEX 3ISM$STABILIZE_DB DEX 3ISM$UPDATE_V11_TO_V20 DEX 3ISO8825_EXAMPLE OSI_TOOLKIT 3IVDRIVER RTI 3IVPDEPTS RDBVMS 3IVPEMP RDBVMS 3IVPJOBS RDBVMS 3IVPSUB ACMS 3IXDRIVER RTI 3IXV11$EXEF IXV11 3IXV11$IVPM IXV11 3IXV11$MAIP IXV11 3IXV11$MDOB IXV11 3IXV11$RDIB IXV11 3IXV11$TSTM IXV11 3IXV11$WAOC IXV11 3JCS$SHR SLS 3JOBCNTRL ELN 3JOBHIST RDBVMS 3JOBS RDBVMS 3JTRACE UISX 3KA800_LOADER ELN 3KBDRIVER RTI 3KERMIT DTR 3KEYBOARD UISX 3KMV_ELNTOOL$KMV1A_DUMP KMV_ELNTOOL 3KMV_ELNTOOL$KMV1A_ODTDSM_SERVER KMV_ELNTOOL 3KMV_ELNTOOL$KMV_FILE_LOAD KMV_ELNTOOL 3KMV_ELNTOOL$ODTDSM KMV_ELNTOOL 3KMV_ELNTOOL$REMOTEOI KMV_ELNTOOL 3KRDRIVER KAV 3KZDRIVER RTI 3LAD$KERNEL PCSA 3LADCDRIVER PCSA 3LADCP INFOSERV 3LANGMSC ELN 3LANSDRIVER PCSA 3LASTCP INFOSERV 3LATCP ELN 3LATSHR ELN 3LBR RSX 3LCDRIVER ELN 3LCI$ETHMCO A1 3LCI$SCHMCO A1 3LCI$SHARE A1 3LCI$UAHMCO A1 3LCI$UDHMCO A1 3LCKINT DECINTACT 3LDDRIVER LN03IMAGE 3LES$ACP PSI 3LES$ACP_CODE PSI 3LES$ACP_MESSAGES PSI 3LES$DECNET PSI 3LES$DECNET_ALT PSI 3LES$DECNET_ALT_V30 ISDN 3LES$DECNET_EVL PSI 3LES$DECNET_V30 ISDN 3LES$FINDPTMAX SYNC 3LES$LES PSI 3LES$MAC |$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63>"r MAP 3LES$MAC_USER MAP 3LES$SDA SYNC 3LES$STARTUP PSI 3LES$TRACE PSI 3LES$TRACE_MBX PSI 3LGPSHR RTI 3LIBCOMMON ELN 3LIBMSC ELN 3LIBVM ELN 3LIDRIVER ELN 3LIOSHR RTI 3LIOSS RTI 3LIO_AAFBIG RTI 3LIO_AAF_CALIB RTI 3LIO_AAF_DOUBLE RTI 3LIO_AAF_RW_ACS RTI 3LIO_AAF_SEL_OUT RTI 3LIO_AAF_SINGLE RTI 3LIO_ADFBIG RTI 3LIO_ADF_CALIB RTI 3LIO_ADF_DAC_CALIB RTI 3LIO_ADF_DOUBLE RTI 3LIO_ADF_DOUBLE_AST RTI 3LIO_ADF_DOUBLE_SAST RTI 3LIO_ADF_LOOPBACK RTI 3LIO_ADF_SINGLE RTI 3LIO_ADF_TEST_SEQ RTI 3LIO_ADQ_ASYNCH RTI 3LIO_ADQ_SYNCH RTI 3LIO_ADV_AST RTI 3LIO_ASYNCH_CLK_TRIG RTI 3LIO_AXV_CTI RTI 3LIO_AXV_DIRECTION RTI 3LIO_AXV_MAPPED RTI 3LIO_AXV_QIO RTI 3LIO_AXV_RTPLOT RTI 3LIO_BUF_FWD RTI 3LIO_BUF_INX RTI 3LIO_CONT_DMA RTI 3LIO_DRJ_SETUP RTI 3LIO_DRQ3B_LOOP RTI 3LIO_DRV11J_LOOP RTI 3LIO_FILE_POS RTI 3LIO_FILTER_EVENT RTI 3LIO_HX_EXAMPLE RTI 3LIO_IEEE_LOOP RTI 3LIO_IEX_ASYNC RTI 3LIO_IEX_SYNC RTI 3LIO_KWV_AST RTI 3LIO_MQ_DISPLAY RTI 3LIO_MQ_READONLY RTI 3LIO_MQ_XFER RTI 3LIO_PRESTON_AST_PLOT RTI 3LIO_PRESTON_READ RTI 3LIO_RTC01_COUNTER RTI 3LIO_RTC01_SET RTI 3LIO_SERIAL RTI 3LIO_SGLBUF_DMA RTI 3LIO_SYNCH_CLK_TRIG RTI 3LIO_TIME_EVENT RTI 3LIO_UQ_LOOP RTI 3LISP$BUILD-VAXLISP LISP 3LISP LISP 3LISTFONTS UISX 3LMCP$MSG ACMS 3LMCP ACMS 3LMF$GROUP_TABLE LMF 3LMF LMF 3LMF_MESSAGE LMF 3LN03IMAGE$IVP LN03IMAGE 3LN03IMAGE$LMF LN03IMAGE 3LNGSPLAEM ASENGLISH 3LNGSPLFOR ASENGLISH 3LNGSPLMSG ASENGLISH 3LNGSPLSHR ASENGLISH 3LOADDRAW DTR 3LPS$ACCTREPORT LPSVS 3LPS$CONSOLE LPSVS 3LPS$SERVICES LPSVS 3LPS_20DMA LPSVS 3LPS_20PCSI LPSVS 3LPS_20VIDEO LPSVS 3LPS_LNVDRIVER LPSVS 3LPS_PS20 LPSVS 3LPS_PS40 LPSVS 3LPVDRIVER ELN 3LSE$CCTSHR LSE 3LSE$DECWSHR LSE 3LSE$DECWV1SHR LSE 3LSE$EDIT_QUALIFIERS LSE 3LSEDIT LSE 3LSEMSG LSE 3LSESHR LSE 3LSPSHR RTI 3LTDRIVER ELN 3LTM$UI LTM 3LU62DEMO DMQ 3LU62RECV DMQ 3LU62_DIRECT DMQ 3LWK$DXMSHR DECVUIT 3LWK$LINKBASE_UTILITY DECVUIT 3MAC RSX 3MAKEMMS DEVTK 3MASK-DEMO UISX 3MBDRIVER ELN 3MCCMSG MCC 3MCCMSLMSG MCC 3MCCTBDMSG MCC 3MCC_AC_IP MCCBMS 3MCC_AC_MAP MCCBMS 3MCC_AC_WAN4_COLLECTOR MCCBMS 3MCC_AC_WAN4_MAPPER MCCBMS 3MCC_ALARMS_EXTRACT_RULES MCC 3MCC_ALARMS_FM MCC 3MCC_BRIDGE_AM MCC 3MCC_CIRCUIT_AM MCCBMS 3MCC_COLLECTION_AM MCCBMS 3MCC_CONCENTRATOR_AM MCCELM 3MCC_CONFIG_FM MCC 3MCC_CONTROL_FM MCC 3MCC_DAP_MAIN MCC 3MCC_DEL_GS_POOL MCC 3MCC_DNA4_AM MCC 3MCC_DNA4_EVL MCC 3MCC_DNA5_AM MCC 3MCC_DNA5_EVL MCCBMS 3MCC_DNS_CONVERSION_12 MCCBMS 3MCC_DNS_SETUP MCC 3MCC_DOMAIN_FM MCC 3MCC_ELMS_CONVERT_MAIN MCCELM 3MCC_ENET_AM MCC 3MCC_ENIM_CONVERT_MAIN MCC 3MCC_EVC_SEND MCCBMS 3MCC_EVC_SINK MCCBMS 3MCC_EXPORTER_ABBREVIATION MCCBMS 3MCC_EXPORTER_FM MCC 3MCC_EXPORTER_FM_BG MCC 3MCC_EXPORTER_FM_WRITER MCC 3MCC_FCL_PM MCC 3MCC_FDDI_AM MCCELM 3MCC_FDDI_FM MCCELM 3MCC_HFB_MAIN MCC 3MCC_HISTORIAN_FM MCC 3MCC_HISTORIAN_FM_BG MCC 3MCC_ICONIC_MAP_PM MCC 3MCC_KERNEL_SHR MCC 3MCC_KERNEL_SHR_111 MCCBMS 3MCC_LAN_TOPOLOGY_PM MCCELM 3MCC_MAIN MCC 3MCC_MIR_CVT_MAIN MCC 3MCC_MSL_MAIN MCC 3MCC_MSL_SYMBOL MCC 3MCC_MSL_SYMBOL_ADA MCCTK 3MCC_MSL_SYMBOL_BASIC MCCTK 3MCC_MSL_SYMBOL_BLISS MCCTK 3MCC_MSL_SYMBOL_BLISSF MCCTK 3MCC_MSL_SYMBOL_CC MCCTK 3MCC_MSL_SYMBOL_DTR MCCTK 3MCC_MSL_SYMBOL_EPASCAL MCCTK 3MCC_MSL_SYMBOL_FORTRAN MCCTK 3MCC_MSL_SYMBOL_LISP MCCTK  Bo$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63Z" 3MCC_MSL_SYMBOL_MACRO MCCTK 3MCC_MSL_SYMBOL_NPARSE RSMSRV 3MCC_MSL_SYMBOL_PASCAL MCCTK 3MCC_MSL_SYMBOL_PLI MCCTK 3MCC_MSU_DATA_MAPPER MCCBMS 3MCC_MTS_PRIV_SHR MCCDIR 3MCC_NOTIFICATION_FM MCC 3MCC_PA_FM MCC 3MCC_PML_SHR MCCBMS 3MCC_PTB MCC 3MCC_RBMS_CONVERT_MAIN MCC 3MCC_REGISTRATION_FM MCCBMS 3MCC_SAMPLE_AM MCC 3MCC_STM_FM MCCELM 3MCC_STM_LISTENER MCCELM 3MCC_STM_SHOW_LISTENER_DB MCCELM 3MCC_TCPIP_AM MCC 3MCC_TCPIP_MQ MCCBMS 3MCC_TCPIP_MTU MCCBMS 3MCC_TCPIP_SINK MCCBMS 3MCC_TSM_CONVERT MCCTSAM 3MCC_TS_AM MCCTSAM 3MCC_TS_AM_GETCHAR MCCTSAM 3MCC_UI_TBD MCC 3MCC_YOURMM MCC 3MCR RSX 3MCRTABLES RSX 3MDDRIVER DECRAM 3MENU UISX 3MENU_C UISX 3MFT RSX 3MICA$CLOSE ASD 3MICA$DB ASD 3MICA$DECTERM ASD 3MICA$DWDB ASD 3MICA$OPEN ASD 3MICA$START ASD 3MICA$UI_DRIVER ASD 3MICA$VIEWER ASD 3MICA$VIEWER_MESSAGES ASD 3MKHD SOFTPC 3MMS MMS 3MODE UISX 3MON250 RT2 3MONITOR_CLIENT AAG 3MONITOR_SERVER AAG 3MOUNTSHR INFOSERV 3MOUSEAST UISX 3MOUSEOVERHEAD UISX 3MP8800KER ELN 3MRA$CONTROL MRA 3MRA$DEMO MRA 3MRA$OPERATOR MRA 3MRA$SWITCHMAP_CREATE MRA 3MRA$SWITCHMAP_MODIFY MRA 3MRA$TRIGGER MRA 3MRAMSG MRA 3MRIBMDMP MESSAGERTR 3MRP$CONFIG_MSG MRP 3MRP$MAIN MRP 3MRP$MSG MRP 3MRP$RUNDOWN MRP 3MRP$SUBPROC MRP 3MRS$CONFIG_MSG MRS 3MRS$MAIN MRS 3MRS$MSG MRS 3MRS$RUNDOWN MRS 3MRS$SUBPROC MRS 3MSCPCLASS ELN 3MSITLIB_CLI_SI BCC 3MSITLIB_CLI_SIOSP BCC 3MUA_RENAME_PENDING A1 3MUDRIVER ELN 3NADRIVER DQS 3NBNS PCSA 3NDS$DESIGN NDS 3NDS$FORM NDS 3NDS$MESSAGE NDS 3NDU$MAIN NDU 3NDU$MESSAGES NDU 3NETBIOS PCSA 3NETBIOSSHR PCSA 3NETEDTEST1 DECVUIT 3NETEDTEST2 DECVUIT 3NETLTC ISDN 3NETMANSHR ELN 3NETTRACE$CHAN_ANALYZE SNAC 3NETTRACE$DDCMP_ANALYZE X25ROU 3NETTRACE$ETHERNET_ANALYZE X25ROU 3NETTRACE$GAP_ANALYZE X25ROU 3NETTRACE$GTW_ANALYZE PSI 3NETTRACE$IEEE8022_ANALYZE MAP 3NETTRACE$IEEE8023_ANALYZE MAP 3NETTRACE$INTERNET_ANALYZE MAP 3NETTRACE$ISDN$CC_ANALYZE ISDN 3NETTRACE$ISDN$L2_ANALYZE ISDN 3NETTRACE$ISDN$L3_ANALYZE ISDN 3NETTRACE$L2E_ANALYZE PSI 3NETTRACE$L2_ANALYZE PSI 3NETTRACE$L3_ANALYZE PSI 3NETTRACE$L3_DDX76_ANALYZE PSI 3NETTRACE$NSP_ANALYZE SNAC 3NETTRACE$PU_ANALYZE SNAC 3NETTRACE$ROUTING_ANALYZE X25ROU 3NETTRACE$SDLC_ANALYZE SNAC 3NETTRACE$SYNC_ANALYZE X25ROU 3NETTRACE$TRANSPORT_ANALYZE MAP 3NETTRACE$X29_ANALYZE PSI 3NETTRACE PSI E3NETTRACE_MESSAGES PSI 3NETWORK ELN 3NIS$BRIDGE_MGMT NIS 3NIS$DECNIS_CONFIG NIS 3NIS$HOST_CONFIG NIS 3NIS$SCRIPT_COMPILER NIS 3NISHR ELN 3NMCCDBO MCCEMS 3NMCCKERNEL MCC 3NMCCLDBSERVER MCC 3NMCCMSG MCC 3NMCCRPTNMC MCC 3NMCCRPTNMS MCC 3NMCCRPTOUT MCC 3NMCCRPTPRS MCC 3NMCCSHR MCC 3NMCCUI MCC 3NOBANN_NOBORD UISX 3NODE_COMMAND_BLD RT2 3NOTES$DWSHARE NOTES 3NOTES$MAIN NOTES 3NOTES$SERVER NOTES 3NOTES$SHARE NOTES 3NQDRIVER SNADHCF 3NSCHED SCHEDULER 3NSCHED_ VSS_REPORTS SCHEDULER 3NSDRIVER NSG 3NSDS$DDI_RMS_SHR NSDS 3NSDS$MDI_CDD_SHR NSDS 3NSDS$MESSAGE NSDS 3NSDS$SHR NSDS 3NSG$ACP NSG 3NSG$EXE NSG 3NVDRIVER PSI 3NWDRIVER PSI 3NYACP BSCPTP 3NYDRIVER BSCPTP 3OA$MAIN A1 3OA$MESCOMP A1 3OA$SAM_BALANCE_USERS A1 3OA$SAM_CHECK_MAIL_AREA_DELETE A1 3OA$SAM_REORG_SHARED_DIRS A1 3OA$SCRIPT_SYMBIONT A1 3OA$SM_FCVR A1 3OA$SM_FCVR_PRE_PHASE1 A1024SUS 3OA$SM_MESSAGE_FILE A1 3OA$TMAECOMM A1 3OA$TPU A1 3OAFC$CLIENT_SHR A1 3OAFC$CREATE_SERVER A1 3OAFC$MTS_SHR A1 3OAFC$PRINT_TRACE_LOG A1 3OAFC $ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63M"$SYSFOLD_SEED A1 3OAFCV A1 3OASHRBLD A1 3ODA$GEOMETRIC_HANDLER ODA 3ODA$Q111_HANDLER ODA 3ODA$Q112_HANDLER ODA 3ODA$Q121_HANDLER ODA 3ODA$RASTER_HANDLER ODA 3ODA$TEXT_HANDLER ODA 3ODIF$$TOOLKIT ODA 3OMNI$CL OMNI 3OMNI$CODES_MSG OMNI 3OMNI$CP OMNI 3OMNI$IVP_RCVR OMNI 3OMNI$IVP_SNDR OMNI 3OMNI$ODF OMNI 3OMNI$VIEW OMNI 3OPS$CE_VAR_FILTER OPS 3OPS$EDITOR_CALLUSER OPS 3OPS$ENV OPS 3OPS$MSG OPS 3OPS$QUOTE_FILTER OPS 3OPS$SQL_RTL OPS 3OPS5 OPS 3OPSINTERP OPS 3OR_MODE UISX 3OSAK$CONTROL DNVEXT 3OSAK$OSAKSHR DNVEXT 3OSAK$SERVER DNVEXT 3OSAKIVP_INIT DNVEXT 3OSAKIVP_RESP DNVEXT 3OSAKSHR DNVEXT 3OSAP$APM_CODES OSAP 3OSAP$CODES OSAP 3OSAP$LOAD-AP-OBJECTS OSAP 3OSIF$CONTROL MAP 3OSIF$COPY MAP 3OSIF$CTDB_SHR MAP 3OSIF$DELETE MAP 3OSIF$DIR MAP 3OSIF$FAL MAP 3OSIF$FTAM_SHR MAP 3OSIF$GTWY DNVEXT 3OSIF$OSAKEXEC_SHR MAP 3OSIF$OSAKSERVER MAP 3OSIF$OSAKSHR MAP 3OSIF$RENAME MAP 3OSIT$ACPCODESHR MAP 3OSIT$CONTROL MAP 3OSIT$CONTROL_MSG MAP 3OSIT$DRIVER MAP 3OSIT$EVL MAP 3OSIT$INTERNET MAP 3OSIT$IVP MAP 3OSIT$LIBRARY MAP 3OSIT$NMR MAP 3OSIT$PSII MAP 3OSIT$ROUTING MAP 3OSIT$TRANSPORT MAP 3OSIT$TSAPM MAP 3OSIT$VOTS_MSG MAP 3PAN UISX 3PASCAL PASCAL 3PASCALER1 PASCAL 3PASCALER2 PASCAL 3PASCALMSC ELN 3PAT RSX 3PATTERN UISX 3PCA$ANALYZER PCA 3PCA$COLLECTOR PCA 3PCA$MSG PCA 3PCDISK PCSA 3PCDISKSHR PCSA 3PCDRIVER DTM 3PCFS$SYS_STB_SHR PCSA 3PCFS_MAIL PCSA 3PCFS_MAILSHR PCSA 3PCFS_SERVER PCSA 3PCSA$MAIL_SERVER PCSA 3PCSA_CLAIM_NAME PCSA 3PCSA_MAILSHR PCSA 3PCSA_MANAGER PCSA 3PCX$WINMGR PCSA 3PDP11C$COMPILER PDP11C 3PDPDBG PDPDEBUG 3PHIGS$CRTL DECPHIGS 3PHIGS$MSGS DECPHIGS 3PHIGS$RTL DECPHIGS 3PIP RSX 3PIPEDRIVR CDD 3PKCDRIVER RTI 3PLC409$ANALYSER PLC409 3PLC409$C_GENERATOR PLC409 3PLC409$LIBRARY PLC409 3PLC409$LINKER PLC409 3PLC409$MONITOR PLC409 3PLC409$PREPROCESSOR PLC409 3PLI$COMPILER PLI 3PLI$COMPILER_MSG PLI 3PLI$DWCI PLI 3PLUS$ANALYSIS_LIB PLUS 3PLUS$MAIN PLUS 3PLUS$MATRIX_LIB PLUS 3PLUS$MISC_LIB PLUS 3PLUS$NONPARA_LIB PLUS 3PLUS$NUMERIC_LIB PLUS 3PLUS$SHARE PLUS 3PLUS$STATFUNC_LIB PLUS 3PLUS$STATS_LIB PLUS 3PME_LOADER VWS 3PM_COLOR UISX 3POSIX$CLI POSIX 3POSIX$CLITABLES POSIX 3POSIX$GETROOT POSIX 3POSIX$HANGUP_DRIVER POSIX 3POSIX$INIT POSIX 3POSIX$KERNEL POSIX 3POSIX$LOGIN POSIX 3POSIX$MSG POSIX 3POSIX$PUP POSIX 3POSIX$RUN POSIX 3POSIX$SHOW_ALL POSIX 3POSIX$SHOW_ENV POSIX 3POSIX$SHOW_FLAG POSIX 3POSIX$TERMINAL_DRIVER POSIX 3POSIXC$FAKE_VAXCRTL POSIX 3POSIXC$FAKE_VAXCRTLG POSIX 3POSIXC$RTL_D POSIX 3POSIXC$RTL_G POSIX 3PRGLOADER ELN 3PS$SHR LN03IMAGE ,PSDC$DC_V5 DECPS3PSDC$DECWINDOWS DECPS 3PSE$COMMENTS LSE 3PSI$ACPCODESHR PSI 3PSI$ACPDATASHR PSI 3PSI$CHARGING PSI 3PSI$CTP PSI 3PSI$DR PSI 3PSI$DRX PSI L3PSI$GAP PSI N3PSI$GTR PSI_AC 3PSI$KMVPRO PSI 3PSI$KMXDIA PSI 3PSI$KMXPDM PSI 3PSI$KMXPRO PSI 3PSI$KMYDIA PSI 3PSI$KMYPDM PSI 3PSI$KMYPRO PSI 3PSI$L2 PSI 3PSI$L2DM PSI 3PSI$L2E PSI 3PSI$L2NM PSI 3PSI$L3 PSI 3PSI$L3CS PSI 3PSI$L3NM PSI 3PSI$MESSAGES PSI 3PSI$NETPRF PSI _3PSI$NMR PSI 3PSI$PAD_MESSAGES PSI 3PSI$PR PSI 3PSI$XTR  ^$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63c" PSI 3PSI$XTS PSI 3PSIACC PSI 3PSIAUTHORIZE PSI 3PSIKDA PSI 3PSIPAD PSI 3PSISETX29 PSI 3PSISHOWX29 PSI 3PSI_MAILSHR PSI 3PSPA$DECWINDOWS PSPA 3PSPRINT$MAIN PSPRINT 3PSPRINT$MSG PSPRINT 3PSYCHO UISX 3PZDRIVER VWS 3QBUSKER ELN 3QIX UISX 3QIXLOOP UISX 3QUAD_DEMO UISX 3QUESRV DECINTACT 3QUESRVXMT DECINTACT 3QUOTA A1 3RALLY$CLD RALLY 3RALLY$DECTRACE_REPORTS_EXE RALDO 3RALLY$EXTERNAL RALLY 3RALLY$MAIN RALLY 3RALLY$MESSAGE RALLY 3RALLY$MESSAGE_DANISH RALLY 3RALLY$MESSAGE_FRENCH RALLY 3RALLY$MESSAGE_GERMAN RALLY 3RALLY$MESSAGE_HEBREW RALLY 3RALLY$MESSAGE_SPANISH RALLY 3RALLY$MESSAGE_SWEDISH RALLY 3RALLY$MESSAGE_TURKISH RALLY 3RALLY$ODI_DIR RALDO 3RALLY$RDS_MAIN RALDO 3RALLY$SHARE RALLY 3RALLY$SQLSRV$API RALLY 3RALLYRDS RALLY 3RDB$SHARE RDBVMS 3RDB$SHARE41 RDBVMS 3RDBBMSGS RDBVMS 3RDBG$RDEBUG VAXELN_ADA 3RDBG$SHARE VAXELN_ADA 3RDBG$SHAREMSG VAXELN_ADA 3RDBINTSHR RDBVMS 3RDBMSGS RDBVMS 3RDBMSGS41 RDBVMS 3RDBPRE RDBVMS 3RDBPRE41 RDBVMS 3RDBSERVER RDBVMS 3RDBSERVER41 RDBVMS 3RDBSHR RDBVMS 3RDBTRANS$RDBPRE RDBTRANS 3RDBTRANS$RDML RDBTRANS 3RDBX$CLI RDBX 3RDBX$DIR RDBX 3RDBX$ENV RDBX 3RDBX$EXTRACT RDBX 3RDBX$LIBSHR RDBX 3RDBX$MSGSHR RDBX 3RDBX$SSE GSE 3RDBX$TXTSHR RDBX 3RDBX$VOL RDBX 3RDBX$WORK RDBX 3RDMDBR RDBVMS 3RDMDBR41 RDBVMS 3RDML RDBVMS 3RDML41 RDBVMS 3RDMLMSG RDBVMS E3RDMLMSG41 RDBVMS L3RDMMON RDBVMS 3RDMMON41 RDBVMS 3RDMMSGSHR RDBVMS L3RDMPRV RDBVMS L3RDMPRV41 RDBVMS L3RDMSHR RDBVMS Y3RDMSHR41 RDBVMS Y3RDMSHRP RDBVMS Y3RDMSHRP41 RDBVMS 3RDMSMSG RDBVMS 3RDMSMSG41 RDBVMS 3RDO$SHR RDBVMS L3RDO$SHR41 RDBVMS 3RDO RDBVMS 3RDO41 RDBVMS Y3RDOMSG RDBVMS 3RDOMSG41 RDBVMS 3RDSG$SHR DECVIEW3D A3READCHAR UISX 3REDRIVER COMMSERVER 3REFORMAT COBOL 3REMOTE BSCPTP 3REMOVEND A1 3REMOVE_UNDEF RTI 3REMRDMSHR RDBVMS 3REMRDMSHR41 RDBVMS 3REMS$DATA REMS 3REMS REMS 3RENDER UISX 3REPLACE RTI 3RETRY SCHEDULER 3RFDRIVER COMMSERVER 3RID$CREATE_MBX RID 3RID$DELETE RID 3RID$DELETE_MBX RID 3RID$DETECTOR RID 3RID$INTERFACE RID 3RID$MONITOR RID 3RID$SEND RID 3RID$SET RID 3RID$SHUTDOWN RID 3RI_BASIC_SMG ACMSDEV 3RI_FORTRAN_QIO ACMSDEV 3RI_SERVER ACMSDEV 3RJDRIVER COMMSERVER 3RJEGLOBAL BSCPTP 3RMCP AMDS 3RMDRIVER AMDS 3RMSRES RSX 3RMU RDBVMS 3RMU41 RDBVMS 3RMUCONVERT RDBVMS 3RMUEXTRACT RDBVMS 3RMUEXTRACT41 RDBVMS 3RMUMSG RDBVMS 3RMUMSG41 RDBVMS 3ROS$CMU ROS 3ROS$IVP ROS 3ROS$SRV ROS 3ROSE UISX 3ROUPERM ROU A3RPC$IVP_CLIENT UCX I3RPC$IVP_SERVER UCX 3RPC$LB_ADMIN UCX 3RPC$LLBD UCX 3RPC$MSG TDA 3RPC$NIDL UCX 3RPC$NRGLBD UCX 3RPC$SHARE_VMSV4 TDA 3RPC$SHARE_VMSV5 TDA 3RPC$STCODE UCX 3RPC$SWLMSG TDA 3RPC$SWLPROC TDA 3RPC$SWLUP TDA 3RPC$UUID_GEN UCX 3RQDRIVER SNADHCF 3RSM$GET_IMAGE_INFO KAV 3RSM$INSTALL_MENU MCC 3RSM$MAIN MCC 3RSM$MANAGER_MENU MCC 3RST RSX 3RSX RSX 3RSXSHR RSX 3RSXUSR RSX 3RTDRIVER ELN 3RTI RTI 3RTI_CONFIG RTI 3RTI_RT RTI 3RTOINTSHR DECISION 3RTORDO DECISION 3RTR RTRSFTU1 3RTRACP  .$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63" RTRSFTU1 3RTRCOMSERV RTRSFTU1 3RTRMSG RTRSFTU1 3RTRRCHACP RTRSFTU1 3RTRRTL RTRSFTU1 3RTRSHR RTRSFTU1 3RUBBERBOX UISX 3S6CCKER ELN 3S9MMKER ELN 3S9RRKER ELN 3SALHIST RDBVMS 3SAMP VAXFMS 3SAMPBLI VAXFMS 3SAMPCC VAXFMS 3SAMPCOB VAXFMS 3SAMPFOR VAXFMS 3SAMPLE DECINTACT 3SAMPLE_CLIENT AAG 3SAMPLE_SERVER AAG 3SAMPPAS VAXFMS 3SAMPPLI VAXFMS 3SCA$CONVERTLIB LSE 3SCA$MAIN LSE 3SCA$MESSAGES LSE 3SCA$PRO_SHARE LSE 3SCA$SERVER_MAIN LSE 1SCA$SHARE LSE 3SCAN$DWCI SCAN 3SCAN$MSG SCAN 3SCANEXE SCAN 3SCDRIVER ELN 3SCHEDULER$DOO_COMMAND SCHEDULER 3SCHEDULER$FORMS SCHEDULER 3SCHEDULER$INTERFACE SCHEDULER 3SCHEDULER$LBAL SCHEDULER 3SCHEDULER$LBAL_MGMT SCHEDULER 3SCHEDULER$MANAGER SCHEDULER 3SCHEDULER$SHELL_INTERFACE SCHEDULER 3SCHEDULER$SUMMARIZE_LOG SCHEDULER 3SCHED_REMOTE SCHEDULER 3SCNDRIVER ELN 3SCNRTL SCAN 3SCROLLFILE UISX 3SCROLLINE UISX 3SCSI_UTILITY ELN 3SDDRIVER CITSR 3SDYN UISX 3SENDCHECK A1 3SERDBMSG SERDB 3SERDBMSG41 SERDB 3SETWRAPOFF WPLENGLISH 3SET_HOST ELN 3SFDRIVER SYNC 3SFDRIVER_DEBUG SYNC 3SGML$PARSE CDACVTLIB 3SHACPSHR ELN 3SHAPES UISX 3SHARED_STATUS_TEXT ELN 3SHOWFONT UISX 3SIDRIVER SYNC 3SIGHT UISX 3SIMPLE_BANNER UISX 3SJDRIVER SYNC 3SLDRIVER SYNC 3SLIDESHR SLIDE 3SLP RSX 3SLS$USSSHR SLS 3SMDRIVER SYNC 3SMNETPRGE A1 3SMNETUPDT A1 3SM_CNV_ARCHIVE_FORMAT A1 3SNA$ SNAP SNAVMS 3SNA$ SNAPMSG SNAVMS 3SNA3270MG SNA3270 3SNA3270SH SNA3270 3SNADDXFMSG_V4 SNADDXF 3SNADDXFMSG_V5 SNADDXF 3SNADDXFSHR_V4 SNADDXF 3SNADDXFSHR_V5 SNADDXF 3SNADHCF$ACP SNADHCF 3SNADHCF$ICP SNADHCF 3SNADHCF$MANAGER SNADHCF 3SNADHCF$MSG SNADHCF 3SNADOCMSG_V4 SNADDXF 3SNADOCMSG_V5 SNADDXF 3SNADOCVUP_V4 SNADDXF 3SNADOCVUP_V5 SNADDXF 3SNADOC_V4 SNADDXF 3SNADOC_V5 SNADDXF 3SNADS$MSG MRS 3SNADTF$COPY SNADTF 3SNADTF$DISPATCHER SNADTFS 3SNADTF$FAL SNADTFS 3SNADTF$MESSAGE SNADTF 3SNADTF$SYMBIONT SNADTF 3SNADTFCFG SNADTF 3SNADWTE$MAIN SNADWTE 3SNADWTE$MSG SNADWTE 3SNAEVL SNAVMS 3SNAEVLMSG SNAVMS 3SNAGWAMSG SNALU0 3SNALU0MSG SNALU0 3SNALU0SHR SNALU0 3SNALU62MG SNALU62 3SNALU62SH SNALU62 3SNANCP SNAVMS E3SNANCPMSG SNAVMS 3SNAP SNAVMS G3SNAPMSG SNAVMS 3SNAPRE SNAPRE 3SNAPREDET SNAPRE 3SNAPRO$MSG MRP 3SNARCOPY SNADTF 3SNARJE$MPX SNARJE 3SNARJE$RDR SNARJE 3SNARJE$RJEMSG SNARJE 3SNARJE$RJSMSG SNARJE 3SNARJE$SERVER SNARJE 3SNARJE SNARJE 3SNASHR SNALU0 3SNASUBMIT SNARJE 3SNATERM SNATE 3SNATERMSG SNATE 3SNATRACE SNAVMS 3SNATRCMSG SNAVMS 3SODRIVER VAE 3SOFTPC SOFTPC 3SOFTPCMSG SOFTPC 3SOLORTP DTR 3SPEED UISX 3SPIRO UISX 3SPLFORMAT A1 3SPM$ANALYZER SPM 3SPM$ANLSHR SPM 3SPM$ARCHIVE SPM 3SPM$CHARGE SPM 3SPM$COLLECT SPM 3SPM$COLLECT_ONLY SPM 3SPM$COLLECT_SYSTEMPC SPM 3SPM$ETFSHR SPM 3SPM$FILES SPM 3SPM$GET_ALL_CLUSTER_NODES SPM 3SPM$INVESTIGATE SPM 3SPM$MESSAGES SPM 3SPM$REPORT_DISKSPACE SPM 3SPM$REPORT_HISTORY SPM 3SPM$REPORT_LOGFILE SPM 3SPM$REPORT_SYSTEMPC SPM 3SPM$RESOURCE SPM 3SPMTIMER SPM 3SQL$ RDBVMS 3SQL$41 RDBVMS 3SQL$41_NDL RDBVMS 3SQL$INT RDBVMS 3SQL$INTRO_LOAD_EMPL_H RDBVMS 3SQL$IVPDEPTS RDBVMS 3SQL$IVPDYN RDBVMS 3SQL$IVPEMP RDBVMS 3SQL$IVPJOBS RDBVMS 3SQL$LOAD_COLLEGES RDBVMS 3SQL$LOAD_DEGREES RDBVMS 3SQL$LOAD_DEPTS RDBVM /$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63(A"S 3SQL$LOAD_EMPLOYEES RDBVMS 3SQL$LOAD_JOBHIST RDBVMS 3SQL$LOAD_JOBS RDBVMS 3SQL$LOAD_SALHIST RDBVMS 3SQL$MOD RDBVMS 3SQL$MOD41 RDBVMS 3SQL$MOD41_NDL RDBVMS 3SQL$MOD_NDL RDBVMS 3SQL$MSG RDBVMS 3SQL$MSG41 RDBVMS 3SQL$PRE RDBVMS 3SQL$PRE41 RDBVMS 3SQL$PRE41_NDL RDBVMS 3SQL$PRE_NDL RDBVMS 3SQL$SHR RDBVMS 3SQL$SHR41 RDBVMS 3SQL$SHR41_NDL RDBVMS 3SQL$SHR_NDL RDBVMS 3SQL$UTL_SHARE41 RDBVMS 3SQL$_NDL RDBVMS 3SQLAC_SERVER SQLA 3SQLAS_SERVER SQLA 3SQLA_CONTROL SQLA 3SQLA_IVP SQLA 3SQLA_SITS SQLA 3SQLSRV$ RDBVMS 3SQLSRV$API RDBVMS 3SQLSRV$APIG RDBVMS 3SQLSRV$EXE RDBVMS 3SQLSRV$IVP RDBVMS 3SQLSRV$MOD RDBVMS 3SQLSRV$MOD1PC41 RDBVMS 3SQLSRV$MOD1PC_NMV RDBVMS 3SQLSRV$MOD41 RDBVMS 3SQLSRV$MOD_NMV RDBVMS 3SQLSRV$MSG RDBVMS 3SQLSRV$UTL RDBVMS 3SQSDYNK RDBVMS 3SQSDYNKW RDBVMS 3SQSDYNOK RDBVMS 3SQSIVP RDBVMS 3SQSIVPO RDBVMS 3SQSIVPW RDBVMS 3SRVMGR DECINTACT 3SSU SSU 3STDRIVER STRIPE 3STRIPE$ERRLOG STRIPE 3STRIPE$MOUNT STRIPE 3STRIPE STRIPE 3STRIPEMSGFIL STRIPE 3STRPCHRT UISX 3SUBVERSION VOX 3SWLPROC ACMS 3SWLUP ACMS 3SYS$PROXY_SHR A1 3SYS$TRANSACTION_SERVICES ACMS 3SYS$UTC_SERVICES DNVEXT 3SYSLICENSE LMF 3TAPE ELN 3TCV$MSG DECISION 3TCV$SHR DECISION 3TDA$GRFSHR TDA 3TDA$MENSHR TDA 3TDA$MSGSHR TDA 3TDA$PRVSHR_V47 TDA 3TDA$PRVSHR_V50 TDA 3TDA$SHR TDA 3TDA$SRVDTE TDA 3TDA$SRVFTE TDA 3TDA$SRVRGA TDA 3TDDRIVER SSU 3TEAMDATA TDA 3TERMCLASS ELN 3TERMINAL ELN 3TESTDISPATCH CDDT 3TEXTPOS UISX 3TIME_DIFF A1 3TJDRIVER VWS 3TKB RSX 3TKDRIVER VWS 3TMR$ADM_SHR TMR 3TMR$CCT_SHR TMR 3TMR$CONTROL TMR 3TMR$MGMT_SHR TMR 3TMR$MSG_SHR TMR 3TMR$RTLMSG_SHR TMR 3TMR$RTL_DUMP TMR 3TMR$RTL_SHR TMR 3TMR$SERVICE_AGENT TMR 3TMR$TCU TMR 3TMR$TEAMFORM TMR 3TMRA1$API_SHR TMRA1 3TMRA1$TEAMFORM TMRA1 3TMSCPCLASS ELN 3TNDRIVER UCX 3TPSERV ACMS 3TPU$EXT_TABLEWGT DECISION 3TRACEROUTE UCX 3TRANS$ASCII_SHR DECVIEW3D 3TRANS$CALCOMP960_SHR DECVIEW3D 3TRANS$HPGL_SHR DECVIEW3D 3TRANS$IGES_SHR DECVIEW3D 3TRANS$LINK_SHR DECVIEW3D 3TRELLIS$IMAGESHR TRELLIS 3TRELLIS TRELLIS 3TRIM A1 3TRN$ANSI_PS CPS 3TRN$DDIF_PS CPS 3TRN$PCL_PS CPS 3TRN$REGIS_PS CPS 3TRN$TEK4014_PS CPS 3TRN$UIS_HPGL UISX 3TRN$UIS_PS UISX 3TRN$UIS_REGIS UISX 3TRN$UIS_SIXEL UISX 3TSM$MAIN TSM 3TSM$MSG TSM 3UBUSKER ELN 3UCX$ACCESS_SHR UCX 3UCX$CFS_SERVICES POSIX 3UCX$CFS_SHR UCX 3UCX$FTP UCX 3UCX$FTPC UCX 3UCX$FTPD UCX 3UCX$INETACP UCX 3UCX$INET_IVP UCX 3UCX$INET_ROUTING UCX 3UCX$IPC_SHR UCX 3UCX$LPD_RCV UCX 3UCX$LPD_SHR UCX 3UCX$LPD_SMB UCX 3UCX$LPQ UCX 3UCX$LPRM UCX 3UCX$LPRSETUP UCX 3UCX$MSG UCX 3UCX$PING UCX 3UCX$RLOGIN UCX 3UCX$RSH UCX 3UCX$SERVER_NFS UCX 3UCX$SMTP_MAILSHR UCX 3UCX$SMTP_RECEIVER UCX 3UCX$SMTP_SYMBIONT UCX 3UCX$SNMP_AGENT UCX 3UCX$TELNET UCX 3UCX$UCP UCX 3UCX$UUDECODE UCX 3UCX$UUENCODE UCX 3UCX_TRACE UCX 3UEDRIVER PSI 3UETDMBS00 SYNC 3UETDSBS00 SYNC 3UETDSVS00 SYNC 3UETKMSS00 YN 3UETPSIDUP PSI 3UFDRIVER BSCPTP 3UHDRIVER SYNC 3UIS$MSGBOX_PME VWS 3UIS$REGIS_PME VWS 3UIS$TEK_PME VWS 3UIS$VT200_PME VWS 3UISANN UISX 3l{$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;63"UISANNMSG UISX 3UISBG VWS 3UISBGMSG VWS 3UISCNVMSG UISX 3UISFONTS VWS 3UISHELP VWS 3UISLOA VWS 3UISMSG VWS 3UISMSGLOA VWS 3UISSHR VWS 3UISSHRXFR VWS 3UISVTMSG VWS 3UISVTSETUP VWS 3UISX$IVP UISX 3UISXMSG UISX 3UISXSHR UISX 3UJDRIVER HAMS 3UPDKBV2 DEEX 3UQSSP ELN 3UTDRIVER MRA 3UTTESTER MRA 3UUDRIVER RTI 3UVDRIVER PSI 3V52-BANNER UISX 3V53-BANNER UISX 3V54-BANNER UISX 3VADRIVER VWS 3VAE$AM VAE 3VAE$DGIT$LIBSHR VAE 3VAE$DIVA$LIB_MSG VAE 3VAE$DIVA$LIB_SHR VAE 3VAE$DIVA$WGT_SHR VAE 3VAE$EDITOR VAE 3VAE$LOAD_RECOGNIZER VAE 3VAE$MSG VAE 3VAE$RDB_SHR VAE 3VAE$RM VAE 3VAE$RM_CONFIG VAE 3VAE$RM_VERIFY VAE 3VAE$RTL VAE 3VAE$RTL_TEXT VAE 3VAE$STAT VAE 3VAE$STAT_REPORT VAE 3VAE$STUDIO VAE 3VAE$STUDIO_CONN VAE 3VASSNA VTX 3VAXC VAXC 3VAXCERR VAXC 3VAXEMUL ELN 3VAXGFX$CGMO_DEV_HANDLER DECGKS 3VAXGFX$COLSIX_DEV_HANDLER DECGKS 3VAXGFX$DDIF_DEV_HANDLER DECGKS 3VAXGFX$DECW_DEV_HANDLER DECGKS 3VAXGFX$DECW_DEV_HANDLER_V3 DECGKS 3VAXGFX$HPGL_DEV_HANDLER DECGKS 3VAXGFX$MOTIF_DEV_HANDLER DECGKS 3VAXGFX$PS_DEV_HANDLER DECGKS 3VAXGFX$REGIS_DEV_HANDLER DECGKS 3VAXGFX$RTL DECGKS 3VAXGFX$SIXEL_DEV_HANDLER DECGKS 3VAXGFX$TEK41_DEV_HANDLER DECGKS 3VAXGFX$TEK_DEV_HANDLER DECGKS 3VAXGFX$UIS_DEV_HANDLER DECGKS 3VCDRIVER VWS 3VCS$ACCESS_DWT VCS 3VCS$ACCESS_SECTION VCS 3VCS$C3 VCS 3VCS$CEP VCS 3VCS$CONVERSION VCS 3VCS$DISPLAY_TEST VCS 3VCS$EDITOR VCS 3VCS$ELOG VCS 3VCS$ENSSHR VCS 3VCS$ENS_ACCESS VCS 3VCS$ENS_BRDCST VCS 3VCS$ENS_EDITOR VCS 3VCS$ENS_MSG VCS 3VCS$ENS_WINDOW VCS 3VCS$ENS_WINDOW1 VCS 3VCS$FTA2FTA_SAMPLE VCS 3VCS$IFEX VCS 3VCS$IODL VCS 3VCS$MSG VCS 3VCS$USS VCS 3VEDRIVER VWS 3VFDRIVER VWS 3VID$DEVELOPER VID 3VID$DEVELOPER_UIS VID 3VID$MESSAGE VID 3VID$PMU_UIS VID 3VIDA2$DMCS_TABLE VIDA2 3VIDA2$MESSAGE VIDA2 3VIDA2SHR VIDA2 3VIDAO$MESSAGE VIDAO 3VIDA_MESSAGE VIDA 3VIEW$CGMO_DEV_HANDLER DECVIEW3D 3VIEW$COLSIX_DEV_HANDLER DECVIEW3D 3VIEW$COMMAND_LINE_TEXT DECVIEW3D 3VIEW$DDIF_DEV_HANDLER DECVIEW3D 3VIEW$DECW_DEV_HANDLER DECVIEW3D 3VIEW$GKS$INQ_LIB DECVIEW3D 3VIEW$GKS$MI_WS_HANDLER DECVIEW3D 3VIEW$GKS$MO_WS_HANDLER DECVIEW3D 3VIEW$GKS$WS_MANAGER DECVIEW3D 3VIEW$GKS$WS_MANAGER_CGM DECVIEW3D 3VIEW$GKSMSG DECVIEW3D 3VIEW$GKSRTLIB DECVIEW3D 3VIEW$HPGL_DEV_HANDLER DECVIEW3D 3VIEW$PS_DEV_HANDLER DECVIEW3D 3VIEW$REGIS_DEV_HANDLER DECVIEW3D 3VIEW$RTL DECVIEW3D 3VIEW$SHR DECVIEW3D 3VIEW$SIXEL_DEV_HANDLER DECVIEW3D 3VKDRIVER VWS 3VMDRIVER ELN 3VMSTODOS SOFTPC 3VMTHRTL FORTHPO 3VNDRIVER VOX 3VODRIVER VOX 3VOX$ACP VOX 3VOX$ACP_01 VOX 3VOX$ACP_02 VOX 3VOX$ACP_03 VOX 3VOX$ACP_04 VOX 3VOX$ACP_DEBUG VOX 3VOX$CP VOX 3VOX$CPDBGDSHR VOX 3VOX$CPDBGUSHR VOX 3VOX$CP_6100_SHR VOX 3VOX$CP_6100_SHR_DEBUG VOX 3VOX$CP_6102_SHR VOX 3VOX$CP_6102_SHR_DEBUG VOX 3VOX$CP_6103_SHR VOX 3VOX$CP_6103_SHR_DEBUG VOX 3VOX$CP_6104_SHR VOX 3VOX$CP_6104_SHR_DEBUG VOX 3VOX$CP_DEBUG VOX 3VOX$DB86 VOX 3VOX$DIAG VOX 3VOX$GETRES VOX 3VOX$IVP VOX 3VOX$IVP_LMF VOX 3VOX$LFA VOX 3VOX$MODVIEW VOX 3VOX$MSG VOX 3VOX$RTL VOX 3VOX$SETRES VOX 3VOX$STATISTICS VOX 3VOX$SWITCH VOX 3VOX$UTIL VOX 3VR2_HOST_CONFIG VR2 3VR2_ROUTER_CONFIG VR2 3VR2_WRCP150 VR2 3VR2_WRCP250 VR2 3VROU$HOST_CONFIG VROU 3VROU$ROUTER_CONFIG VROU 3VROU$SCRIPT_COMPILE VROU 3VRTA$CONFIGURE VRTA 3VRTA$ELN_SHR VRTA 3VRTA$HANDLER_FILE VRTA 3VRTA$ICP_ELN VRTA 3VRTA$ICP_V0R$ PRODUSE010.A\ xqx%[PRODUCT_USE.A]IMAGE_TO_PRODUCT.DAT;632MS VRTA 3VRTA$IVP_VMS VRTA 3VRTA$MAIN VRTA 3VRTA$MS820_TEST VRTA 3VRTA$MSG VRTA 3VRTA$PIPE VRTA 3VRTA$RTL_SHR VRTA 3VRTA$SERVER_FILE VRTA 3VRTA$SERVER_NAME VRTA 3VRTA$SERVER_VAXELN VRTA 3VRTA$TEST_ELN_EXER VRTA 3VRTA$TEST_EXAMPLES VRTA 3VRTA$TEST_EXER VRTA 3VRTA$TEST_MONITOR VRTA 3VRTA$TEST_SLAVE VRTA 3VTCLASS ELN 3VTX$CLIENT_MOTIF VTX 3VUIT DECVUIT 3VWS$EMULATORS VWS 3VWS$FAXLOA VWS 3VWS$MESSAGE_DISPLAY UISX 3VWS$MESSAGE_DISPLAY_TXT UISX 3VWS$TEK4125 VWS 3VWS$VT200_PRINT VWS 3VWS$VT200_PRINT_MESSAGE VWS 3VWSDECW$AGENPARAMS VWS 3VWS_MENU UISX 3VWS_SCROLL_BAR UISX 3VXDRIVER VOX 3WANDD$DIV-MICROCODE ISDN 3WANDD$DSF$FW_LOAD SYNC 3WANDD$FSM$DSFSHR SYNC 3WANDD$FSM$KFESHR SYNC 3WANDD$FSM SYNC 3WANDD$FSM_NOTIFY SYNC 3WANDD$SDA SYNC 3WANDD$SERVICES SYNC 3WANDD$SERVICES_LOAD SYNC 3WHEEL UISX 3WHEEL_UISDC UISX 3WPL$FORMATTER WPL 3WPL$MAIN WPL 3WPSCNV WPL 3WPSEDIT WPL 3WPSFORMAT WPL 3WPSLP WPL 3WPSPLUS_LOGIN WPL 3WPSSORT WPL 3WRITE$AIL_SHR DECISION 3WRITE$EQUATION DECWRITE 3WRITE$PRINTWGTSHR DECISION 3WSLOCK UISX 3WTDRIVER VWS 3X25$GWY_GATEWAY_CONFIG X25GWY 3X25$GWY_HOST_CONFIG X25GWY 3X25$GWY_SCRIPT_COMPILE X25GWY 3X25ROUPERM X25ROU 3XBDRIVER ELN 3XDDRIVER SYNC 3XDPS$DPSCLIENTSHR DECWRITE 3XDPS$DPSLIBSHR DECWRITE 3XEBOOT ELN 3XEBOOT8 ELN 3XEDRIVER ELN 3XGDRIVER SYNC 3XIE$SHRLIB IMG 3XJDRIVER BSCPTP 3XJTEST BSCPTP 3XMDRIVER ELN 3XMSSP ELN 3XNDRIVER PSI 3XPORTMSG A1 3XQDRIVER ELN 3XSDRIVER PSI 3XWAY$MAIN XWAY 3XWAY$MENUSHR XWAY 3XWAY$MESSAGE XWAY 3XWAY$SHARE XWAY 3XWDRIVER PSI 3YCDRIVER ELN 3ZAP RSX 3ZOOM UISX 3ZPDRIVER VRTA 3ZQDRIVER MAP 3ZSDRIVER SYNC 3ZSDRIVER_OLD SYNC 3ZTDRIVER SYNC 3ZTDRIVER_DEBUG SYNC *[PRODUCT_USE.A]KITINSTAL.COM;27+, ./ 4P t-x0123KPWO5!6a ig7@ <<^89GHJ 2$ ! COPYRIGHT (C) 1992 BY=$ ! DIGITAL EQUIPMENT CORPORATION, MAYNARD<$ ! MASSACHUSETTS. ALL RIGHTS RESERVED.$ !J$ ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIEDM$ ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSIONF$ ! OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIESI$ ! THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHERN$ ! PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.$ !M$ ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ANDN$ ! SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.$ !H$ ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS;$ ! SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.$ !N$ !***************************************************************************$ ! $!set verify"$! KITINSTAL.COM - for product_use$!*$ On Control_Y Then Vmi$Callback CONTROL_Y$ On Warning Then Exit $Status.$ If P1 .eqs. "VMI$_INSTALL" then goto Install&$ If P1 .eqs. "VMI$_IVP" then goto Ivp$ Exit VMI$_UNSUPPORTED$ $ Install:$set def vmi$kwd:$ Type Sys$InputP--------------------------------------------------------------------------------NThis procedure installs the Digital Equipment Corporation Product Use package.@This procedure does not do a system-wide install of the package,Lbut provides a command procedure to allow individual users to use the tools.JExecuting the command procedure ($@sys$manager:product_use_logicals) will Oallow you to issue the PRODUCT_USE command. See the documentation provided withKthe Package or print the on-line postscript file sys$manager:product_use.ps-for more information on the product_use tool.P--------------------------------------------------------------------------------$!check vms version$!.$vmi$callback check_vms_version version_ok 050.$if version_ok .eq. 1 then goto vms_version_ok$!$!bad version number$!#$vmi$callback message i badvmsver -F"this asset has not been tested with a VMS version prior to VMS v5.0" $!%$!ask if they want to continue anyway$!F$vmi$callback ask goon "Do you want to attempt to continue" "NO" b,r,u'$if (.not. goon) then exit vmi$_failure$vms_version_ok:$!$create_directory:%$dire :== sys$sysdevice:[product$use]$vmi$callback ask dire -0"Where do you want to install the kit" "''dire'"*$vmi$callback create_directory user 'dire' $ask_decps:$!$vmi$callback ask decps -5"Do you have (D)ECps or (V)pa on this system" "N" s,u5$if ((decps .eqs. "D") .or. (decps .eqs. "V")) then - goto decps_ok$type sys$input/ Enter "D" if DECps is installed on this system- "V" if VPA is installed on this systemE Either DECps or VPA are required on your system for this tool to run$goto ask_decps $decps_ok:$ Vmi$Callback SET IVP ask$ Vmi$Callback SET PURGE ASK$!$type sys$inputG No more questions wil<$ PRODUSE010.A x[PRODUCT_USE.A]KITINSTAL.COM;27Pl be asked and the install should complete within 20 minutes.0$open/write com vmi$kwd:product_use_logicals.com($write com "$define product$use ''dire'"4$write com "$set command product$use:product_use.cld$write com "$exit" $close comH$vmi$callback provide_file pu product_use_logicals.com vmi$root:[sysmgr]$!$! saveset b is the decps kit$! saveset c is the vpa kit$!-$if (decps .eqs. "D") then goto decps_install+$if (decps .eqs. "V") then goto vpa_install$decps_install:$vmi$callback restore_saveset B$!find sys$library:PSPA$LIB.FORD$vmi$callback find_file cilib pspa$lib.for vmi$root:[syslib] s found$if (found .eqs. "E") then -? vmi$callback provide_file cilib pspa$lib.for vmi$root:[syslib]F$link/executable=vmi$kwd:product_use.exe vmi$kwd:product_use_decps.obj7$Vmi$Callback PROVIDE_IMAGE Exe$ product_use.exe 'dire'6$Vmi$Callback PROVIDE_FILE Cld$ product_use.cld 'dire'@$Vmi$Callback PROVIDE_FILE doc$ product_use.ps vmi$root:[sysmgr]6$Vmi$Callback PROVIDE_FILE Com$ product_use.com 'dire'>$Vmi$Callback PROVIDE_FILE Com$ build_vms_decw_skip.com 'dire';$Vmi$Callback PROVIDE_FILE dat$ image_to_product.dat 'dire'@$Vmi$Callback PROVIDE_FILE dat$ user_image_to_product.dat 'dire'7$Vmi$Callback PROVIDE_FILE dat$ product_skip.dat 'dire'@$Vmi$Callback PROVIDE_FILE dat$ product_skip_vms_decw.dat 'dire'D$Vmi$Callback PROVIDE_FILE ivp$ productuseivp.com vmi$root:[systest]$type sys$inputF Building the list of VMS and DECwindows images to skip. This may take a while...!$@vmi$kwd:build_vms_decw_skip.com$goto endinstall $vpa_install:$vmi$callback restore_saveset C$!find sys$library:VPA$LIB.FORC$vmi$callback find_file cilib vpa$lib.for vmi$root:[syslib] s found$if (found .eqs. "E") then -> vmi$callback provide_file cilib vpa$lib.for vmi$root:[syslib]D$link/executable=vmi$kwd:product_use.exe vmi$kwd:product_use_vpa.obj7$Vmi$Callback PROVIDE_IMAGE Exe$ product_use.exe 'dire'6$Vmi$Callback PROVIDE_FILE Cld$ product_use.cld 'dire'@$Vmi$Callback PROVIDE_FILE doc$ product_use.ps vmi$root:[sysmgr]6$Vmi$Callback PROVIDE_FILE Com$ product_use.com 'dire'>$Vmi$Callback PROVIDE_FILE Com$ build_vms_decw_skip.com 'dire'@$Vmi$Callback PROVIDE_FILE dat$ user_image_to_product.dat 'dire';$Vmi$Callback PROVIDE_FILE dat$ image_to_product.dat 'dire'7$Vmi$Callback PROVIDE_FILE dat$ product_skip.dat 'dire'@$Vmi$Callback PROVIDE_FILE dat$ product_skip_vms_decw.dat 'dire'D$Vmi$Callback PROVIDE_FILE ivp$ productuseivp.com vmi$root:[systest]$type sys$inputF Building the list of VMS and DECwindows images to skip. This may take a while...!$@vmi$kwd:build_vms_decw_skip.com$goto endinstall$! $endinstall:$type sys$inputC Make sure that you edit the file product$use:cluster_nodes.dat to G include up to 10 nodenames from your cluster (one node per line) prior to using product_use.$ Exit Vmi$_success$ivp:!$ On Control_Y Then goto err_exit$ On Warning Then goto err_exit$type sys$input7 Starting the Installation Verification Procedure (IVP)'$@sys$common:[systest]productuseivp.com $done_ivp:$ Exit Vmi$_success $err_exit:$ exit vmi$_failure"*[PRODUCT_USE.A]PRODUCTUSEIVP.COM;5+,./ 4P -x0123KPWO5067<<^89GHJ"$@SYS$MANAGER:PRODUCT_USE_LOGICALS$SET DEF PRODUCT$USE1$DATE = F$CVTIME("YESTERDAY","COMPARISON","DATE")4$YESTERDAY = F$CVTIME("YESTERDAY","ABSOLUTE","DATE")#$START = "''YESTERDAY'" + ":00:00" $END = "''YESTERDAY'" + ":23:59"$NODE = F$GETSYI("NODENAME")!$OPEN/WRITE OUT CLUSTER_NODES.DAT$WRITE OUT "''NODE'" $CLOSE OUT$NODEFILE = "CLUSTER_NODES.DAT" $OUTFILE = "PRODUCT_USE_IVP.RPT"P$PRODUCT_USE/BEG='START'/END='END'/NODE='NODEFILE'/OUTPUT='OUTFILE'/SAVE=IVP.DAT$TYPE PRODUCT_USE_IVP.RPT$EXIT!*[PRODUCT_USE.A]PRODUCT_SKIP.DAT;2+, ./ 4 4-x0123KPWO5%6 g67#<<^89GHJ (dcl) Null PRODUCT_USE Swapper**[PRODUCT_USE.A]PRODUCT_SKIP_VMS_DECW.DAT;1+,.4/ 4'43-x0123KPWO5516 G7:,<<^89GHJ )VMS$RES2CAP )VMS$SECUREPWD )VMS$SECUREPWD_PRE54 )SYSBOOT )VMB )VMB9AQ )WRITEBOOT )SYSBOOT_XDELTA )SYS )ERRORLOG )EVENT_FLAGS_AND_ASTS )EXCEPTION )EXEC_INIT W)IMAGE_MANAGEMENT W)IO_ROUTINES )LOCKING )LOGICAL_NAMES )MESSAGE_ROUTINES )PAGE_MANAGEMENT L)PRIMITIVE_IO )PROCESS_MANAGEMENT )SECURITY _)SYSDEVICE )SYSGETSYI )LMF$GROUP_TABLE E)SYSLICENSE )SYSTEM_DEBUG )SYSTEM_PRIMITIVES E)SYSTEM_SYNCHRONIZATION T)SYSTEM_SYNCHRONIZATION_UNI M)SYSTEM_SYNCHRONIZATION_MIN O)WORKING_SET_MANAGEMENT A)SYSINIT )RECOVERY_UNIT_SERVICES )RMS )DDIF$RMS_EXTENSION A)SYSLDR_DYN )VECTOR_PROCESSING G)SYSMSG I)F11BXQP H)CPULOA H)FPEMUL H)VAXEMUL _)VVIEF_BOOTSTRAP )VECTOR_EMULATOR I)VVIEFMSG )SYS$TRANSACTION_SERVICES T)SYS$NETWORK_SERVICES )SYSGEN E)GEN_SERVICES )ESP )IMGDMP )DBGSSISHR )TRACE )DCLTABLES T)DTE_DF03 A)DTE_DF112 )DTE_DMCL T)ADAR;g^$ PRODUSE010.Ax*[PRODUCT_USE.A]PRODUCT_SKIP_VMS_DECW.DAT;1'4a"TL _)BASRTL2 )BASRTL S)CDDSHR )COBRTL )CONVSHR )CRFSHR )DBLRTL )DBLRTLMSG )DBLMSGMGR )DISMNTSHR )INIT$SHR )MOUNTSHR )TECOSHR )SECURESHR )SECURESHRP )UISSHR )TPUSHR )TPU$CCTSHR )TPU$DECWSHR )EDTSHR )ENCRYPSHR )FDLSHR )FORRTL )FORRTL2 )LBRSHR )DCXSHR )LIBRTL )LIBRTL2 )MAILSHR )MAILSHRP )PASRTL )PLIRTL )PPLRTL )RPGRTL )SCNRTL )SCRSHR )DTKSHR )SMGSHR )SORTMERGE )SORTSHR )SRTTRN )SUMSHR )VAXCRTL )VAXCRTLG )VMSRTL )EPM$SRVSHR )PTD$SERVICES_SHR )ADAMSG )PASMSG )PLIMSG )PPLMSG )RPGMSG )SCNMSG )TECOMSG )TPUMSG )VAXCMSG )CLIUTLMSG )DBGTBKMSG S)FILMNTMSG )NETWRKMSG )PRGDEVMSG )SHRIMGMSG )SYSMGTMSG )LMF_MESSAGE )ANALAUDIT )VMS$FORMAT_AUDIT_SYSTEM )ANALYZBAD )AUDIT_SERVER )AUTHORIZE )AGEN$FEEDBACK )BACKUP )BADBLOCK )CHECKSUM )CDU )CONVERT )COPY )CREATE A)CREATEFDL )CVTNAFV5 R)DCL )DELETE C)DIFF )DIRECTORY )DISKQUOTA )DISMOUNT )TPU )EDT )SETSHOACL )SETAUDIT )ERRFMT )EXCHANGE )EXCHANGE$NETWORK )INIT )INSTALL )JOBCTL )LIBRARIAN )LINK )LOGINOUT )MTAAACP )OPCOM )OPCCRASH )PATCH )QUEMAN T)RECLAIM )RENAME )REPLY )REQUEST )RTPAD )DTEPAD )RUNDET )SET )SETP0 )SETRIGHTS )SETWATCH )SHOW )SMGMAPTRM )TERMTABLE )SUMSLP )TYPE )UNLOCK )VERIFY )RTB )VMOUNT )VMSHELP )MTHRTL )VMTHRTL )UVMTHRTL )BLAS1RTL )VBLAS1RTL )BOOTBLOCK )SMPUTIL )SHADOW_SERVER )CREATE_IDX )VMSTAILOR )LMF )LICENSE_CHECK )EPC$SHR )EPC$MSG )DNS$SHARE )DNS$CLIENT )DNS$RTL )DNS$ADVER )DNS$SOLICIT E)DNS$ANALYZE )DNS$MSG )SEARCH )BOOT58 C)HSCPAD )LCDRIVER )DQDRIVER )SYSLOA730 )SYSLOA750 )SYSLOA780 )DXDRIVER )CVDRIVER )SYSLOA790 )ERRSNAP )SYSLOA8SS )SYSLOA8NN )CWDRIVER )SYSLOAUV1 )SYSLOAWS1 )VMBUVAX1P )SYSLOAUV2 )SYSLOAWS2 )SYSLOAWSD )SYSLOA410 )SYSLOA41D )SYSLOA41W )SYSLOA41A )SYSLOA650 )SYSLOA65D )SYSLOA9CC )SYSLOA8PS )SYSLOA640 )SYSLOA64D )SYSLOA420 )SYSLOA42D )SYSLOA42S )SYSLOA42W )SYSLOA60 )SYSLOA9RR )SYSLOA9AQ )CS9AQDRIVER )SYSLOA670 )SYSLOA67D )SYSLOA43 )SYSLOA43D )SYSLOA43S )SYSLOA43W )SYSLOA520 )EFDRIVER )EPDRIVER )GDDRIVER )PWDRIVER )SYSLOA1202 )SYSLOA660 ^!+t$ PRODUSE010.Ax*[PRODUCT_USE.A]PRODUCT_SKIP_VMS_DECW.DAT;1'4>")SYSLOA66D )SYSLOA440 )SYSLOA46 )SYSLOA690 )SYSLOA69D )SYSLOA1302 )FILESERV )SHWCLSTR )SYS$SCS )SYS$CLUSTER )CSP )MSCP )STACONFIG )CONFIGURE )NISCS_LOAD )NISCS_LAA )PEDRIVER )TERTIARY_VMB )XDDRIVER )MBXDRIVER )TTDRIVER )DUDRIVER )PUDRIVER )TUDRIVER )NODRIVER )DZDRIVER )YFDRIVER )ESDRIVER )FTDRIVER B)DSDRIVER )SHDRIVER )CONINTERR )XADRIVER )LADRIVER )XIDRIVER )XFDRIVER )XFLOADER )DBDRIVER )TFDRIVER )DRDRIVER )FYDRIVER )PADRIVER )CNDRIVER )LIDRIVER )PBDRIVER )ETDRIVER )RXDRIVER )YIDRIVER )XGDRIVER )YCDRIVER )CRDRIVER )DMDRIVER )DLDRIVER )XQDRIVER )PDDRIVER )LPDRIVER )TMDRIVER )TSDRIVER )XMDRIVER )XEDRIVER )DDDRIVER )DYDRIVER )YEDRIVER )DVDRIVER )TVDRIVER )PIDRIVER )DKDRIVER )MKDRIVER )GKDRIVER )PKNDRIVER )PKSDRIVER )PKIDRIVER )PKCDRIVER )PKXDRIVER )EXDRIVER )FXDRIVER )EZDRIVER )ESS$LASTDRIVER )ESS$LADDRIVER )ESS$DADDRIVER )ESS$LADCP )ESS$LASTCP )SYSMAN )SMISERVER )SMI$SHR )SMI$OBJSHR )CVTUAF )MP )MP_8SS V)MP_8NN E)CLUSTER_AUTHORIZE E)CLUSTRLOA )SCSLOA )MASK_IMAGE )JBCUPGMSG )JBC$UPGRADE )MAIL$UPGRADE )RMSREC$RU_RECOVER )DFS$MOUNT_SHR )DFSSDRIVER )MSCP )DYNSWITCH H)NMLSHR )NCP )NETACP )NET$NAME_SERVER )NETDRIVER )NDDRIVER E)EVL E)NICONFIG H)NETSERVER )NML )FAL )REMACP )CTDRIVER )RTTDRIVER )STOPREM R)DTSEND )MOM )DTRECV )MIRROR )HLD )DEBUG )DEBUGSHR )ANALIMDMP )ANALYZRMS )EDF )MESSAGE )MACRO32 )SDLNPARSE )WP )WPDRIVER )F11AACP )SPISHR )MONITOR )VPM )ANALYZOBJ )DELTA )SDA )ACLEDT )CIA )ACLEDTSHR )SMBSRVSHR )SUBMIT )PRTSMB )INPSMB )ACC )TPSERV )DTI$SHARE )LMCP )LMCP$MSG )IPCACP )MAIL )MAIL_SERVER )DUMP )RUNOFF )DSRTOC )DSRINDEX )PHONE )SMGBLDTRM )LTDRIVER )LATCP )LATSYM )STABACCOP )STABACKUP )STANDCONF )STASYSGEN )ERFBRIEF )ERFDISK )ERFDISK2 )ERFMSCP )ERFADPTR )ERFCNTRL )ERFTAPE )ERFSCSI )ERFUVAX )ERFVX8600 )ERFBUS )ERFRLTIM )ERFSUMM )ERF )ERFMISC )ERFVX8200 )ERFVX87XX )ERFVAX7XX )ERFCVAX )ERFXRP )ERFV9000 )ERFV14 )ERFCOMMON )ERFSHR )ERFSHR2 )ERFCTLSHR )TFFSHR )TFU )FBDRIVER )TECO32 )NCS [We$ PRODUSE010.Ax*[PRODUCT_USE.A]PRODUCT_SKIP_VMS_DECW.DAT;1'4( )NCSSHR )RECOVER )RMSREC$SERVER )CSDRIVER )DECDTMIVP )LALOAD )LALOADER )UETCDRO00 )UETCLIG00 )UETCOMS00 )UETDISK00 )UETDMPF00 )UETDR1W00 )UETDR7800 E)UETFORT01 )UETFORT02 )UETFORT03 )UETINIT00 )UETINIT01 )UETLPAK00 )UETMA7800 )UETMEMY01 )UETNETS00 )UETPHAS00 )UETRSXFOR )UETTAPE00 )UETTTYS00 )UETUNAS00 )UETVECTOR )DCLDIET )ITEST )ITESTD )VECTORTST )S0DELTA )DISKMON )ENCRYPFAC )MARBLI )SETUSER )BFH )EXPIRE )SUM )SERVER_STAT )JNLDUMP )LOAD_XDELTA )DECW$PRINTWGTSHR )DECW$SECURITY )DECW$SETSHODIS )CDA$ACCESS )DECW$XLIBSHR )DECW$DWTLIBSHR )DECW$TRANSPORT_COMMON )DECW$TRANSPORT_LOCAL )DECW$TRANSPORT_DECNET )DECW$TRANSPORT_TCPIP )XDPS$DPSBINDINGSSHR )XDPS$DPSCLIENTSHR G)XDPS$DPSLIBSHR T)XNL$SHR D)AGENPARAMS )DECW$XLIBMSG R)DECW$DWTMSG S)DECW$TRANSPORTMSG O)DECW$TAILOR O)WSDRIVER O)XTDRIVER O)DECW$DWT_DECNET D)DECW$DWT_FONT_DAEMON E)DECW$TRANSPORT_LAT S)DECW$UIL_CONVERTOR )DECW$MAIL_CREATEDECTERM )DECW$SERVER_MAIN_GB G)DECW$MAIL_MESSAGES )DECW$VIEWER_MESSAGES O)DECW$SERVER_EXTENSION_DPSEXTENSION )XDPS$FONTTOOL )DECW$BOOKREADER )DECW$CALC C)DECW$CALENDAR N)DECW$CARDFILER O)DECW$CLOCK N)DECW$MAIL R)DECW$NOTEPAD _)DECW$PAINT E)DECW$PUZZLE _)DECW$SESSION _)DECW$STARTLOGIN O)DECW$TERMINAL A)DECW$TERMINAL_CREATE )DECW$WINMGR A)DDIF$VIEW L)CDA$CONVERT )VUE$MASTER )CDA$WRITE_ANALYSIS D)CDA$DTIF_TO_DDIF )DDIF$READ_TEXT )DDIF$VIEWSHR N)DDIF$WRITE_PS O)DDIF$WRITE_TEXT A)DECW$AILSHR A)DECW$LOGINOUT )DECW$MAILSHR )DECW$TERMINALSHR )IMG$SHRLIB )DDIF$VIEWMSG N)DECW$TERMINALMSG _)PYDRIVER E)TWDRIVER R)DECW$SERVER_MAIN P)DECW$FONTCOMPILER T)GAADRIVER )GABDRIVER U)GBBDRIVER R)GCADRIVER A)GCBDRIVER )GEBDRIVER G)GFBDRIVER A)IKDRIVER )IMDRIVER )INDRIVER _)DECW$SERVER_DDX_GA M)DECW$SERVER_DDX_GB )DECW$SERVER_DDX_GC )DECW$SERVER_DDX_GE )DECW$SERVER_DDX_GF )DECW$SERVER_DIX )DECW$SVEXT_ADOBE_DPS_EXTENSION )DECW$SVEXT_D2DX_EXTENSIONS )DECW$SVEXT_MULTI_BUFFERING )DECW$MKFONTDIR )DECW$SVEXT_DEC_XTRAP )DECW$SVEXT_XIE _)DECW$SVEXT_X3D_PEX _)DECW$SVEXT_X3D_PEX_GB _)DECW$SVEXT_X3D_PEX_GB_UCODE _)DECW$SVEXT_X3D_PEX_GE _)DECW$UILCOMPILER _)XDPS$PSWRAP ABE_DPS_EXTENSION )DECW$SVEXT_D2DX_EXTENSIONS )DECW$SVEXT_MULTI_BUFFERING  *[PRODUCT_USE.A]PRODUCT_USE.CLD;1+,./ 4H\-x0123KPWO526|ڕ7`9<<^89GHJDEFINE VERB PRODUCT_USE IMAGE PRODUCT$USE:PRODUCT_USE!QUALIFIER NODE,VALUE (TYPE=$FILE)QUALIFIER USER,VALUE(list)QUALIFIER IMAGE,VALUE(list)*QUALIFIER BEGINNING,VALUE (TYPE=$DATETIME)'QUALIFIER ENDING,VALUE (TYPE=$DATETIME)CQUALIFIER SAVE,VALUE (DEFAULT="PRODUCT_USE_SAVE.DAT",TYPE=$OUTFILE)EQUALIFIER RECALL,VALUE (DEFAULT="PRODUCT_USE_SAVE.DAT",TYPE=$OUTFILE)HQUALIFIER OUTPUT,DEFAULT,VALUE (DEFAULT="PRODUCT_USE.RPT",TYPE=$OUTFILE)$DISALLOW (NOT RECALL) AND (NOT NODE))DISALLOW (NOT RECALL) AND (NOT BEGINNING)&DISALLOW (NOT RECALL) AND (NOT ENDING)DISALLOW RECALL AND SAVE *[PRODUCT_USE.A]PRODUCT_USE.COM;2+,Z lq./ 4H-x0123KPWO56B\Fz7`+F<<^89GHJ$SET DEF PRODUCT$USE1$DATE = F$CVTIME("YESTERDAY","COMPARISON","DATE")4$YESTERDAY = F$CVTIME("YESTERDAY","ABSOLUTE","DATE")$START = "''YESTERDAY'-6-" $END = "''YESTERDAY'" + ":23:59"$NODE = F$GETSYI("NODENAME")$NODEFILE = "CLUSTER_NODES.DAT"$$OUTFILE = "CLUSTER_PRODUCT_USE.RPT" $SHOW TIMEH$PRODUCT_USE/BEG='START'/END='END'/NODE='NODEFILE'/OUTPUT='OUTFILE'/SAVE $SHOW TIME$EXIT*[PRODUCT_USE.A]PRODUCT_USE.PS;3+,.(/ 4(%-x0123KPWO)5)6@lxw+7P<<^89GHJj`$ PRODUSE010.Ax[PRODUCT_USE.A]PRODUCT_USE.PS;3(l"%!PS-Adobe-2.1 %%Creator: DECwrite V1.1 %%+Copyright (c) 1990 DIGITAL EQUIPMENT CORPORATION. %%+All Rights Reserved. %%DocumentFonts: (atend) %%EndComments %%BeginProcSet DEC_WRITE 1.06 /DEC_WRITE_dict 150 dict def DEC_WRITE_dict begin/$D save def/$I 0 def/$S 0 def/$C matrix def/$R matrix def/$L matrix def/$E matrix def/pat1{/px exch def/pa 8 array def 0 1 7{/py exch def/pw 4 string def 0 1 3{pw exch px py 1 getinterval putinterval}for pa py pw put}for}def/pat2{/pi exch def/cflag exch def save cflag 1 eq{eoclip}{clip}ifelse newpath{clippath pathbbox}stopped not{/ph exch def/pw exch def/py exch def/px exch def/px px 3072 div floor 3072 mul def/py py 3072 div floor 3072 mul def px py translate/pw pw px sub 3072 div floor 1 add cvi def/ph ph py sub 3072 div floor 1 add cvi def pw 3072 mul ph 3072 mul scale/pw pw 32 mul def/ph ph 32 mul def/px 0 def/py 0 def pw ph pi[pw 0 0 ph 0 0]{pa py get/px px 32 add def px pw ge{/px 0 def/py py 1 add 8 mod def}if}pi type/booleantype eq{imagemask}{image}ifelse}if restore}def/PS{/_op exch def/_np 8 string def 0 1 7{/_ii exch def/num _op _ii get def _np 7 _ii sub num -4 bitshift PX num 15 and 4 bitshift -4 bitshift PX 4 bitshift or put}for _np}def/PX{[15 7 11 3 13 5 9 1 14 6 10 2 12 4 8 0]exch get}def/FR{0.7200 0 $E defaultmatrix dtransform/yres exch def/xres exch def xres dup mul yres dup mul add sqrt}def/SU{/_sf exch def/_sa exch def/_cs exch def/_mm $C currentmatrix def/rm _sa $R rotate def/sm _cs dup $L scale def sm rm _mm _mm concatmatrix _mm concatmatrix pop 1 0 _mm dtransform/y1 exch def/x1 exch def/_vl x1 dup mul y1 dup mul add sqrt def/_fq FR _vl div def/_na y1 x1 atan def _mm 2 get _mm 1 get mul _mm 0 get _mm 3 get mul sub 0 gt{{neg}/_sf load concatprocs/_sf exch def}if _fq _na/_sf load setscreen}def/BO{/_yb exch def/_xb exch def/_bv _bs _yb _bw mul _xb 8 idiv add get def/_mk 1 7 _xb 8 mod sub bitshift def _bv _mk and 0 ne $I 1 eq xor}def/BF{DEC_WRITE_dict begin/_yy exch def/_xx exch def/_xi _xx 1 add 2 div _bp mul cvi def/_yi _yy 1 add 2 div _bp mul cvi def _xi _yi BO{/_nb _nb 1 add def 1}{/_fb _fb 1 add def 0}ifelse end}def/setpattern{/_cz exch def/_bw exch def/_bp exch def/_bs exch PS def/_nb 0 def/_fb 0 def _cz 0/BF load SU{}settransfer _fb _fb _nb add div setgray/$S 1 def}def/invertpattern{$S 0 eq{{1 exch sub}currenttransfer concatprocs settransfer}if}def/invertscreen{/$I 1 def/$S 0 def}def/revertscreen{/$I 0 def}def/setrect{/$h exch def/$w exch def/$y exch def/$x exch def newpath $x $y moveto $w $x add $y lineto $w $x add $h $y add lineto $x $h $y add lineto closepath}def/concatprocs{/_p2 exch cvlit def/_p1 exch cvlit def/_pn _p1 length _p2 length add array def _pn 0 _p1 putinterval _pn _p1 length _p2 putinterval _pn cvx}def/OF/findfont load def/findfont{dup DEC_WRITE_dict exch known{DEC_WRITE_dict exch get}if DEC_WRITE_dict/OF get exec}def mark/ISOLatin1Encoding 8#000 1 8#001{StandardEncoding exch get}for /emdash/endash 8#004 1 8#025{StandardEncoding exch get}for /quotedblleft/quotedblright 8#030 1 8#054{StandardEncoding exch get}for /minus 8#056 1 8#217 {StandardEncoding exch get}for/dotlessi 8#301 1 8#317{StandardEncoding exch get}for/space/exclamdown/cent/sterling/currency/yen/brokenbar/section /dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph /periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter /onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde /Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde /Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave /uacute/ucircumflex/udieresis/yacute/thorn/ydieresis 256 array astore def cleartomark /encodefont{findfont dup maxlength dict begin{1 index/FID ne{def}{pop pop}ifelse}forall/Encoding exch def dup/FontName exch def currentdict definefont end}def/loads{/$/ISOLatin1Encoding load def/&/encodefont load def/*/invertpattern load def/+/revertscreen load def/-/invertscreen load def/:/concatprocs load def/^/setpattern load def/~/pat1 load def/_/pat2 load def/@/setrect load def/A/arcn load def/B/ashow load def/C/curveto load def/D/def load def/E/eofill load def/F/findfont load def/G/setgray load def/H/closepath load def/I/clip load def/K/kshow load def/L/lineto load def/M/moveto load def/N/newpath load def/O/rotate load def/P/pop load def/R/grestore load def/S/gsave load def/T/translate load def/U/sub load def/V/div load def/W/widthshow load def/X/exch load def/Y/awidthshow load def/a/save load def/c/setlinecap load def/d/setdash load def/e/restore load def/f/setfont load def/g/initclip load def/h/show load def/i/setmiterlimit load def/j/setlinejoin load def/k/stroke load def/l/rlineto load def/m/rmoveto load def/n/currentfont load def/o/scalefont load def/p/currentpoint load def/r/currenttransfer load def/s/scale load def/t/setmatrix load def/u/settransfer load def/w/setlinewidth load def/x/matrix load def/y/currentmatrix load def}def end %%EndProcSet %%EndProlog %%BeginSetup DEC_WRITE_dict begin loads version cvi 23.0 gt { currentdict {dup type /arraytype eq {bind def} {pop pop} ifelse} forall} if 0.0100 0.0100 s %%EndSetup %%Page: 1 1 /$P a D g N 0 79200 T S R S 7200 -7200 T N 0 G 300 -1650 M 300 -4250 M 300 -6850 M 300 -9450 M 300 -12050 M 6427 -14650 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1800 o f (Product Usage and Licensing Evaluation Tools) h 300 -17250 M 300 -19850 M 300 -22450 M 300 -25050 M 300 -27650 M 300 -30250 M 300 -32850 M 300 -35450 M 300 -38050 M 300 -40650 M 300 -43250 M 300 -45400 M 6060 -45400 M 11820 -45400 M 17580 -45400 M 23340 -45400 M n 0.667 o f (Daniel R. Buckley) h 300 -46800 M 6060 -46800 M 11820 -46800 M 17580 -46800 M 23340 -46800 M (Digital Equipment Corporation) h 300 -48200 M 6060 -48200 M 11820 -48200 M 17580 -48200 M 23340 -48200 M (February, 1992) h 300 -50200 M -7200 7200 T R showpage $P e %%Page: 2 2 /$P a D g N 0 79200 T S R S 7200 -7200 T N 0 G 300 -1350 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1400 o f (Introduction) h 300 -2950 M 300 -4400 M n 0.857 o f (The availability of user\255based and concurrent\255use licensing in addition to the traditional) h 300 -5800 M 300 -7200 M (system/cluster based licensing offers Digital customers the flexibility of only paying licensing) h 300 -8600 M 300 -10000 M (fees for the software that they actually use.) h 300 -11400 M 300 -12800 M (For new systems and applications determining "what you use" is normally quite simple, but ) h 300 -14200 M 300 -15600 M (with existing systems it can be very difficult to determine what is actually being used on the ) h 300 -17000 M 300 -18400 M (system and who is using it. The purpose of these tools is to use data gathered by DECps or) h 300 -19800 M 300 -21200 M (VPA to produce a report showing the actual usage of images on your system.) h 300 -22600 M 300 -24000 M (This report can then be used to compare licensing options to determine the best option when) h 300 -25400 M 300 -26800 M (the actual usage is known. As an example, if the current license for product x costs $10,000,) h 300 -28800 M 300 -30200 M (the license after a system upgrade will cost $16,000, a personal\255use license is $1000 and a) h 300 -32200 M 300 -33600 M (concurrent\255use license is $2000, personal use licenses would be cheaper if fewer then 10) h 300 -35600 M 300 -37000 M (people use the product on your current system. If you go to personal\255use licenses and then) h 300 -39000 M 300 -40400 M (upgrade your system, there is NO additional software costs due to the hardware upgrade for) h 300 -42400 M 300 -43800 M (the personal\255use licenses. If the upgrade in the example is planned, the break even point would) h 300 -45200 M 300 -46600 M (be 16 personal\255use licenses or 8 concurrent\255use licenses as opposed to the upgraded cluster) h 300 -48000 M 300 -49400 M (wide license.) h 300 -51400 M 300 -52800 M -7200 7200 T R showpage $P e %%Page: 3 3 /$P a D g N 0 79200 T S R S 7200 -7200 T N 0 G 300 -1350 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1400 o f (Installation) h 300 -2800 M 300 -4200 M n 0.857 o f (The product_use software REQUIRES that either DECps or VPA \(including the FORTRAN ) h 300 -5600 M 300 -7000 M (callable interface library\) is installed on the system prior to the start of the iIң$ PRODUSE010.Ax[PRODUCT_USE.A]PRODUCT_USE.PS;3(k"nstallation .) h 300 -8400 M 300 -9800 M 300 -11200 M (Use VMSINSTAL to install the produse010 product. After the install is complete, you need to) h 300 -12600 M 300 -14000 M (issue the command @sys$startup:product_use\)logicals.com to use the product_use software.) h 300 -15400 M 300 -16800 M (You should also create the file product$use:cluster_nodes.dat containing a list of up to 10) h 300 -18200 M 300 -19600 M (nodenames that should be included in the report.) h 300 -21000 M 300 -22400 M 300 -23800 M (The installation takes less then 30 minutes and require less then 1000 blocks of disk space.) h 300 -25800 M -7200 7200 T R showpage $P e %%Page: 4 4 /$P a D g N 0 79200 T S R S 7200 -7200 T N 0 G 300 -1350 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1400 o f (The Product_use command) h 300 -2950 M 300 -4400 M n 0.857 o f (The product_use program is run through the use of the product_use command \(or by using the) h 300 -5800 M 300 -7200 M (command procedure Product_use.com which uses the product_use command\) which has) h 300 -8600 M 300 -10000 M (several qualifiers. An example of a complete product_use command is shown below:) h 300 -11400 M 300 -12800 M ($product_use/node=product$use:cluster_nodes.dat/user=\(jones,smith\)/image=\(foo,oa$main\) \255) h 300 -14200 M 300 -15600 M ($_/beg=20\255feb\2551992:08:00/end=26\255feb\2551992:17:00/save=hold.dat/output=product_use_feb.rpt) h 300 -17000 M 300 -18400 M (This command will produce a report for each of the nodes listed in cluster_nodes.dat) h 300 -19800 M 300 -21200 M (\(up to 10\) and will list to the file users.dat all of the images run by the users Jones and Smith) h 300 -22600 M 300 -24000 M (and list to the file images.dat all of the usernames that ran the image oa$main or images) h 300 -25400 M 300 -26800 M (that are a part of the product foo in the image_to_product.dat file. The /user and) h 300 -28200 M 300 -29600 M (/image qualifiers can be very useful in determining what certain users are doing and who) h 300 -31000 M 300 -32400 M (would need a personal\255use license. They can be also used outside of the licensing space to assist) h 300 -33800 M 300 -35200 M (in performance tuning of a system \(what was Jones running when the system slowed down?\).) h 300 -36600 M 300 -38000 M (The /beg and /end qualifiers determine the amount of data selected for the report run. This ) h 300 -39400 M 300 -40800 M (period should be long enough \(week/month\) to avoid temporary slack periods. The ) h 300 -42200 M 300 -43600 M (/save=hold.dat qualifier causes the product_use data to be saved in a file called hold.dat \(if no) h 300 -45000 M 300 -46400 M (filename is given the saved data is written to product_use_save.dat\). At a later time the ) h 300 -47800 M 300 -49200 M (/recall=hold.dat command can be used to recall this data and produce a new report with new) h 300 -50600 M 300 -52000 M (values for /image and /user and changes to Image_to_product and Product_skip incorporated.) h 300 -53400 M 300 -54800 M (Recall does not use the /beg,/end or /node qualifers because it is using data from the /save file.) h 300 -56200 M 300 -57600 M (The /output qualifier is used to change the name of the output file. The command procedure ) h 300 -59000 M 300 -60400 M (product_use.com produces a report for the previous week called cluster_product_use.rpt using) h 300 -61800 M 300 -63200 M (the nodes listed in product$use:cluster_nodes.dat. No /image or /user data is produced.) h -7200 7200 T R showpage $P e %%Page: 5 5 /$P a D g N 0 79200 T S R S 7200 -7200 T N 0 G 300 -1200 M 300 -2600 M -7200 7200 T R showpage $P e %%Page: 6 6 /$P a D g N 0 79200 T S R S 7200 -7200 T N 0 G 300 -1350 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1400 o f (Product_use Files) h 300 -2800 M 300 -4200 M n 0.857 o f (The following files located in product$use are used by product_use:) h 300 -6200 M 300 -7600 M (Cluster_nodes.dat) h 11820 -7600 M (A list of up to 10 nodenames \(one per line\) that will be included in the) h 300 -9000 M 300 -10400 M 6060 -10400 M 11820 -10400 M (report. If you want to use other nodes, create a file containing those) h 300 -11800 M 300 -13200 M 6060 -13200 M 11820 -13200 M (nodes and use that filename with the /node=filename qualifier.) h 300 -14600 M 300 -16000 M (Build_vms_decw_skip.com) h 17580 -16000 M (Builds a file named product_skip_vms_decw.dat that) h 300 -17400 M 300 -18800 M 6060 -18800 M 11820 -18800 M 17580 -18800 M (contains VMS and DECwindows images that are ) h 300 -20200 M 300 -21600 M 6060 -21600 M 11820 -21600 M 17580 -21600 M (automatically skipped to avoid filling the report with) h 300 -23000 M 300 -24400 M 6060 -24400 M 11820 -24400 M 17580 -24400 M (images that are included with your VMS license.) h 300 -25800 M 300 -27200 M (Product_skip.dat) h 11820 -27200 M (A user editable file containing \(up to 39 character\) imagenames that) h 300 -28600 M 300 -30000 M 6060 -30000 M 11820 -30000 M (should not be included in the report.) h 300 -31400 M 300 -32800 M (Image_to_product.dat) h 11820 -32800 M (A file associating \(often cryptic\) imagenames to product names. This) h 300 -34200 M 300 -35600 M 6060 -35600 M 11820 -35600 M (file was produced from the September 1992 Consolidated distribution ) h 300 -37000 M 300 -38400 M 6060 -38400 M 11820 -38400 M (CDROM and every effort was made to make the list as accurate as) h 300 -39800 M 300 -41200 M 6060 -41200 M 11820 -41200 M (possible. If an imagename is not included in this list, the imagename) h 300 -42600 M 300 -44000 M 6060 -44000 M 11820 -44000 M (data is listed at the beginning of the report with a blank product name.) h 300 -45400 M 300 -46800 M 6060 -46800 M 11820 -46800 M (If you find images listed under a blank product name and you know) h 300 -48200 M 300 -49600 M 6060 -49600 M 11820 -49600 M (the product name, you can add them to the User_Image_to_product.dat) h 300 -51000 M 300 -52400 M 6060 -52400 M 11820 -52400 M (file using an editor as long as you keep the spacing constant \(no tabs\).) h 300 -54400 M 300 -55800 M (User_image_to_product.dat) h 17580 -55800 M (A user editable file containing 39 character imagenames) h 300 -57800 M 300 -59200 M 6060 -59200 M 11820 -59200 M 17580 -59200 M (and 12 character product names that associates imagenames) h 300 -61200 M 300 -62600 M 6060 -62600 M 11820 -62600 M 17580 -62600 M (to products.) h -7200 7200 T R showpage $P e %%Page: 7 7 /$P a D g N 0 79200 T S R S 7200 -7200 T N 0 G 300 -1350 M /Times-Roman-ISOLatin1 $ /Times-Roman & P /Times-Roman-ISOLatin1 F 1400 o f (The Product_use Report) h 300 -2950 M 300 -4400 M n 0.857 o f (An example of the product_use report \(truncated to 80 columns\) is shown below:) h 300 -6250 M /Courier-ISOLatin1 $ /Courier & P /Courier-ISOLatin1 F 1000 o f ( Total Maximum concurrent users seen ) h 300 -7450 M (Product Image Name Users Tot DEWEY LOUIE HEWEY ) h 300 -8650 M 300 -9850 M ( CONFIG_USER 1 3 1 1 1 ) h 300 -11050 M ( ERRRTN 1 3 1 1 1 ) h 300 -12250 M ( LOGINUSER 3 6 1 5 ) h 300 -13450 M 300 -14650 M (NEWWINDOW 2) h 300 -15850 M (NEWWINDOW SESSION 2 3 1 2 ) h 300 -17050 M (NEWWINDOW SETIT 1 6 6 ) h 300 -18250 M 300 -19450 M (RDBVMS 1) h 300 -20650 M (RDBVMS RDMMON 1 3 1 1 1 ) h 300 -21850 M 300 -23200 M 300 -24600 M /Times-Roman-ISOLatin1 F 1200 o f (The images config_user, errrtn,and loginuser appear under a blank product name because) h 300 -26000 M 300 -27400 M (they were not found in the image_to_product..dat file. The images session and setit are listed) h 300 -28800 M 300 -30200 M (under the product newwindow and rdmmon is listed under the product rdbvms because that) h 300 -31600 M 300 -33000 M (is the product name listed in image_to_product.dat. for those images. The number after the) h 300 -34400 M 300 -35800 M (product name header line is the total number of different users running all of the product images) h 300 -37200 M 300 -38600 M 300 -40000 M (The Users column list the number of different usernames that ran the image which would help) h 300 -41400 M 300 -42800 M "e$ PRODUSE010.Ax[PRODUCT_USE.A]PRODUCT_USE.PS;3(U#(to determine the number of personal\255use licenses that would be required.) h 300 -44200 M 300 -45600 M 300 -47000 M (The Tot column is the sum of the concurrent use columns for all the nodes. This may not be) h 300 -48400 M 300 -49800 M (the actual maximum concurrent use on the cluster because the times of the maximum usage) h 300 -51200 M 300 -52600 M (may have been different on the individual nodes but is a good estimate of the number of) h 300 -54000 M 300 -55400 M (concurrent licenses required.) h 300 -56800 M 300 -58200 M (Each of the nodes \(up to 10\) in the cluster has a column showing the maximum number of) h 300 -59600 M 300 -61000 M (users accessing the image during any two minute sample period. This detail could be used to) h 300 -62400 M 300 -63800 M (determine the best node\(s\) on which to license a product running on only certain cluster nodes.) h 300 -65238 M -7200 7200 T R showpage $P e $D restore %%Trailer end % DEC_WRITE_dict %%Pages: 7 %%DocumentFonts: Times-Roman-ISOLatin1 %%+ Courier-ISOLatin1 '*[PRODUCT_USE.A]PRODUCT_USE_DECPS.FOR;52+, .,/ 4J,,-x0123KPWO-5637`<<^89GHJC PRODUCT_USE.FORCC DANIEL R. BUCKLEY DECCHC THIS SOFTWARE IS SUPPLIED "AS IS" WITH NO SUPPORT IMPLIED OR OTHERWISE&C FROM DIGITAL EQUIPMENT CORPORATION. CDC THIS PROGRAM IS USED TO EXTRACT DATA FROM A DAILY DECPS FILE ABOUTC THE IMAGES RUN ON A SYSTEM.CGC THIS PROGRAM REQUIRES THE LIBRARY SYS$LIBRARY:PSPA$LIB.FOR TO COMPILECHC IF /USER=(USER1,USER2...) IS SPECIFIED ON THE COMMAND LINE, ALL IMAGESDC RUN BY THOSE USER(S) [USERN] (50 MAX) WILL BE OUTPUT TO USERS.RPT.CJC IF /IMAGE=(IMAGE1,IMAGE2...) IS SPECIFIED ON THE COMMAND LINE, ALL USERSEC RUNNING THOSE IMAGES OR PRODUCTS [IMAGE](50 MAX) WILL BE OUTPUT TO C IMAGES.RPT.CIC IF THE /SAVE=[FILENAME] QUALIFIER IS SPECIFIED ON THE COMMAND LINE, THEJC ARRAY DATA IS SAVED IN A FILE WITH THE DEFAULT NAME PRODUCT_USE_SAVE.DATCGC IF THE /RECALL=[FILENAME] QUALIFIER IS SPECIFIED ON THE COMMAND LINE,DC THE ARRAY DATA SAVED IN FILENAME (DEFAULT IS PRODUCT_USE_SAVE.DAT 2C IS USED INSTEAD OF THE VPA/DECPS RAW DATA FILES.CAC THE TWO ARRAYS USER AND NEXT_USER ARE CURRENTLY SET TO A MAX OFJC 20,000 USER/IMAGE COMBINATIONS. IF MORE THAN 20,000 EXIST, AN ERROR WILLJC BE SET TO THE DEFAULT OUTPUT DEVICE (TERMINAL OR LOG FILE). THIS ERROR CIC AN BE ELIMINATED BY INCREASING BOTH OF THESE ARRAYS TO THE SAME LARGER HC VALUE (AND SETTING USER_LIMIT TO THIS VALUE) OR BY REDUCING THE PERIODIC BEING REPORTED. THESE ARRAYS ARE USED TO CREATE A SINGLELY LINKED-LIST C OF USERS FOR EACH IMAGE.CFC THE ARRAY PRODUCT_ARRAY IS SET TO 1000, THIS ARRAY CONTAINS THE PER IC IMAGE DATA. THE ARRAY PROD_IMAGE IS SET TO 3000, THIS ARRAY IS THE LISTAC OF IMAGES THAT ARE A PART OF THE PRODUCT. THE ARRAY SKIP IS THEHC LIST OF IMAGES TO BE IGNORED (BUILD FROM PRODUCT_SKIP_VMS_DECW.DAT ANDIC PRODUCT_SKIP.DAT) AND IS SET TO 2000. THIS ARRAY IS SORTED BU IMAGENAMEJC TO ALLOW CHECKING IF AN IMAGE IS TO BE SKIPPED TO COMPLETE WITHOUT GOINGJC THROUGH THE ENTIRE ARRAY (573 VMS AND DECWINDOWS IMAGES MINIMUM V5.4-1A)4C FOR EACH DECPS PROCESS IN EVERY 2 MINUTE INTERVAL.CJC THE REPORT IS LIMITED TO 10 NODES IN A CLUSTER, IF YOU HAVE MORE THEN 10EC NODES, DO A LOGICAL SPLIT OF THE CLUSTER AND PRODUCE TWO (OR MORE) C REPORTS PROGRAM PRODUCT_USE IMPLICIT INTEGER*4 (A - Z) INCLUDE '($SSDEF)' INCLUDE '($IODEF)'# INCLUDE 'SYS$LIBRARY:PSPA$LIB.FOR' INCLUDE '($CLIDEF)' INCLUDE '($SYSSRVNAM)' CHARACTER*24 HOLD_DETAIL CHARACTER*64 HOST CHARACTER*25 START_TIME CHARACTER*25 STOP_TIME CHARACTER*39 OUTPUT_FILE CHARACTER*39 SAVE_FILE CHARACTER*39 RECALL_FILE CHARACTER*39 NODE_FILE CHARACTER*12 LAST_PRODUCT CHARACTER*12 USER(20000) CHARACTER*12 USERN(50) CHARACTER*39 IMAGE(50) CHARACTER*6 NODE(10) INTEGER*2 FILEL INTEGER*4 STATUS INTEGER*4 LINECOUNT INTEGER*4 ARRAY_MAX INTEGER*4 ARRAY_LIMIT INTEGER*4 SKIP_MAX INTEGER*4 SKIP_LIMIT INTEGER*4 PRODARRAY_MAX INTEGER*4 PRODARRAY_LIMIT INTEGER*4 PROD_IMAGE_MAX INTEGER*4 PROD_IMAGE_LIMIT INTEGER*4 USER_MAX INTEGER*4 USER_LIMIT INTEGER*4 PSPA$OPEN_CONTEXT INTEGER*4 PSPA$READ_CONTEXT INTEGER*4 PSPA$CLOSE_CONTEXT INTEGER*4 CLI$GET_VALUE INTEGER*4 CLI$PRESENT INTEGER*4 NODE_FILE_SIZE INTEGER*4 USERN_SIZE INTEGER*4 IMAGE_SIZE INTEGER*4 OUTPUT_FILE_SIZE INTEGER*4 RECALL_FILE_SIZE INTEGER*4 SAVE_FILE_SIZE INTEGER*4 TOTAL_CONCUR INTEGER*4 NEXT_USER(20000) INTEGER*4 NUM_USERN INTEGER*4 NUM_IMAGE EXTERNAL CLI$_ABSENT EXTERNAL PSPA$_NOMORE RECORD /CONTEXT/ PSPA$CTX STRUCTURE /PRODUCTARRAY/ CHARACTER*12 PRODUCT INTEGER*4 USER(2000) INTEGER*4 NUM_USERS END STRUCTURE ' RECORD /PRODUCTARRAY/ PRODARRAY (1000) STRUCTURE /PSPAARRAY/ CHARACTER*12 PRODUCT CHARACTER*39 IMAGENAME INTEGER*4 COUNT INTEGER*4 TOTAL_USERS INTEGER*4 MAX_USERS (10) INTEGER*4 FIRST_USER END STRUCTURE RECORD /PSPAARRAY/ ARRAY (2000) RECORD /PSPAARRAY/ HOLD_ARRAY STRUCTURE /PRODARRAY/ CHARACTER*12 PRODUCTNAME CHARACTER*39 IMAGENAME END STRUCTURE$ RECORD /PRODARRAY/ PROD_IMAGE(3000) STRUCTURE /SKIPARRAY/ CHARACTER*39 IMAGENAME END STRUCTURE RECORD /SKIPARRAY/ SKIP(2000) RECORD /SKIPARRAY/ HOLD_SKIP Common / COM$CTX / PSPA$CTX2 Common / COM$ARRAY / ARRAY,ARRAY_MAX,ARRAY_LIMIT* Common / COM$SKIPARRAY / SKIP,USER_LIMIT- COMMON / COM$USER / USER,NEXT_USER,USER_MAXC SETUP PSPA CONTEXT RECORD; PSPA$CTX.CTX$T_SCHED_SUN = CHAR(255)//CHAR(255)//CHAR(255); PSPA$CTX.CTX$T_SCHED_MON = CHAR(255)//CHAR(255)//CHAR(255); PSPA$CTX.CTX$T_SCHED_TUE = CHAR(255)//CHAR(255)//CHAR(255); PSPA$CTX.CTX$T_SCHED_WED = CHAR(255)//CHAR(255)//CHAR(255); PSPA$CTX.CTX$T_SCHED_THU = CHAR(255)//CHAR(255)//CHAR(255); PSPA$CTX.CTX$T_SCHED_FRI = CHAR(255)//CHAR(255)//CHAR(255); PSPA$CTX.CTX$T_SCHED_SAT = CHAR(255)//CHAR(255)//CHAR(255)CC INIT VARIABLESC ARRAY_LIMIT = 2000 ARRAY_MAX = 1 USER_LIMIT = 20000 USER_MAX = 1 PRODARRAY_LIMIT = 1000 PRODARRAY_MAX = 0 SKIP_LIMIT = 2000 SKIP_MAX = 0 PROD_IMAGE_LIMIT = 3000 PROD_IMAGE_MAX = 0C(C Get parameters and qualifiers from DCLC IF(CLI$PRESENT('NODE')) THEN" STATUS = CLI$GET_VALUE ('NODE', 2 NODE_FILE, 2 NODE_FILE_SIZE)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS)) END IF NUM_USERN = 0 20 CONTINUE NUM_USERN = NUM_USERN + 1> STATUS = CLI$GET_VALUE ('USER', USERN(NUM_USERN), USERN_SIZE)/ IF (STATUS .EQ. %LOC ( CLI$_ABSENT ) ) GOTO 21/ IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))<C TYPE *,' USER NUMBER ', NUM_USERN,' IS ', USERN(NUM_USERN) IF (NUM_USERN .LT. 50) GOTO 20 21 CONTINUE NUM_IMAGE = 0 30 CONTINUE NUM_IMAGE = NUM_IMAGE + 1> STATUS = CLI$GET_VALUE ('IMAGE', IMAGE(NUM_IMAGE),IMAGE_SIZE)/ IF (STATUS .EQ. %LOC ( CLI$_ABSENT ) ) GOTO 31/ IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS));C TYPE *,'IMAGE NUMBER ',NUM_IMAGE,' IS ', IMAGE(NUM_IMAGE) IF (NUM_IMAGE .LT. 50) GOTO 30 31 CONTINUE IF(CLI$PRESENT('OUTPUT')) THEN$ STATUS = CLI$GET_VALUE ('OUTPUT', 2 OUTPUT_FILE, 2 OUTPUT_FILE_SIZE)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS)) END IF SAVEIT = 0 RECALLIT = 0 IF(CLI$PRESENT('SAVE')) THENC TYPE *,'SAVE WAS SPECIFIED' SAVEIT = 1" STATUS = CLI$GET_VALUE ('SAVE', 2 SAVE_FILE, 2 SAVE_FILE_SIZE)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))# TYPE *,'SAVE FILE IS ',SAVE_FILE END IF IF(CLI$PRESENT('RECALL')) THEN!C TYPE *,'RECALL WAS SPECIFIED' RECALLIT = 1$ STATUS = CLI$GET_VALUE ('RECALL $ PRODUSE010.A x'[PRODUCT_USE.A]PRODUCT_USE_DECPS.FOR;52J,?q"', 2 RECALL_FILE, 2 RECALL_FILE_SIZE)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))' TYPE *,'RECALL FILE IS ',RECALL_FILE END IF" IF(CLI$PRESENT('BEGINNING')) THEN' STATUS = CLI$GET_VALUE ('BEGINNING', 2 START_TIME,BEG_LEN)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))> CALL SYS$BINTIM(START_TIME(1:BEG_LEN),PSPA$CTX.CTX$L_START) END IF IF(CLI$PRESENT('ENDING')) THEN$ STATUS = CLI$GET_VALUE ('ENDING', 2 STOP_TIME,END_LEN)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))< CALL SYS$BINTIM(STOP_TIME(1:END_LEN),PSPA$CTX.CTX$L_STOP) END IF7 STATUS = SYS$ASCTIM(TIMLEN,ASCTIM,PSPA$CTX.CTX$L_STOP)1 IF ( .NOT. STATUS ) CALL LIB$STOP( %VAL(STATUS))-C BUILD ARRAY OF IMAGES TO SKIP (USER IMAGES)2 OPEN(UNIT=1,FILE='PRODUCT_SKIP.DAT',STATUS='OLD') 100 CONTINUE SKIP_MAX = SKIP_MAX + 1, READ(1,101,END=110)SKIP(SKIP_MAX).IMAGENAME# IF (SKIP_MAX .LT. SKIP_LIMIT) THEN GOTO 100 ELSE; TYPE *,'SKIP ARRAY LIMIT REACHED, EXTRA IMAGES IN REPORT' END IF101 FORMAT(A39) 110 CONTINUE CLOSE(UNIT=1):C ADD VMS AND DECWINDOWS IMAGES TO ARRAY OF IMAGES TO SKIP; OPEN(UNIT=1,FILE='PRODUCT_SKIP_VMS_DECW.DAT',STATUS='OLD') 200 CONTINUE SKIP_MAX = SKIP_MAX + 1, READ(1,201,END=210)SKIP(SKIP_MAX).IMAGENAME# IF (SKIP_MAX .LT. SKIP_LIMIT) THEN GOTO 200 ELSE; TYPE *,'SKIP ARRAY LIMIT REACHED, EXTRA IMAGES IN REPORT' END IF201 FORMAT(A39) 210 CONTINUE CLOSE(UNIT=1)DC SORT THE ARRAY SO WE CAN TELL IF WE'VE GONE PAST THE CURRENT IMAGE 300 CONTINUE INVERSIONS = 0 DO 310 K = 1, SKIP_MAX - 1 L = K + 13 IF (SKIP(K).IMAGENAME .GT. SKIP(L).IMAGENAME) THEN HOLD_SKIP = SKIP(K) SKIP(K) = SKIP(L) SKIP(L) = HOLD_SKIP INVERSIONS = 1 END IF 310 CONTINUE IF (INVERSIONS .EQ. 1) GOTO 300?C IF WE ARE RECALLING OLD DATA, SKIP THE DECPS DATA GATHERING  IF (RECALLIT .EQ. 1) GOTO 99981C SET UP DECPS DATA LOOP FOR ALL NODES IN CLUSTER; OPEN(UNIT=4,FILE=NODE_FILE(1:NODE_FILE_SIZE),STATUS='OLD') NODE_NUM = 0 10 CONTINUE NODE_NUM = NODE_NUM + 1" READ(4,11,END=9999)NODE(NODE_NUM)) PSPA$CTX.CTX$T_NODENAME = NODE(NODE_NUM) PSPA$CTX.CTX$B_NODELEN = 6 11 FORMAT(A6)CC Open DECPS Context C% STATUS = PSPA$OPEN_CONTEXT(PSPA$CTX), IF ( .NOT. STATUS ) CALL PSPA$STOP( STATUS,! 1 PSPA$CTX.CTX$L_OUR_ERR,! 1 PSPA$CTX.CTX$L_RMS_ERR,# 1 PSPA$CTX.CTX$L_RMS_IOSB ) STATUS = 1 DO WHILE ( STATUS )* STATUS = PSPA$READ_CONTEXT( PSPA$CTX )5 IF ( STATUS .EQ. %LOC( PSPA$_NOMORE ) ) GOTO 9000, IF ( .NOT. STATUS ) CALL PSPA$STOP( STATUS,! 1 PSPA$CTX.CTX$L_OUR_ERR,! 1 PSPA$CTX.CTX$L_RMS_ERR,# 1 PSPA$CTX.CTX$L_RMS_IOSB )( IF ( PSPA$CTX.CTX$L_PRO_CNT .NE. 0 )2 1 CALL GET_PSPA_PRO(%VAL(PSPA$CTX.CTX$A_PRO_REC),- 1 PSPA$CTX.CTX$L_PRO_CNT,SKIP_MAX,NODE_NUM)C DECPS RECORDS DONE END DO 9000 CONTINUE( STATUS = PSPA$CLOSE_CONTEXT( PSPA$CTX ), If ( .NOT. STATUS ) Call PSPA$STOP( STATUS,! 1 PSPA$CTX.CTX$L_OUR_ERR,! 1 PSPA$CTX.CTX$L_RMS_ERR,# 1 PSPA$CTX.CTX$L_RMS_IOSB )%C GO BACK FOR NEXT NODE OF DECPS DATA IF(NODE_NUM .LT. 10) GOTO 10H TYPE *,'ONLY 10 NODES PER CLUSTER CAN FIT ON THE REPORT, NODES SKIPPED'AC ALL DECPS DATA HAS BEEN ADDED TO THE ARRAYS, PROCESS THE ARRAYS 9999 CONTINUE DO 9995 K = NODE_NUM,10 NODE(K) = ' ' CLOSE(UNIT=4) 9995 CONTINUE.C LOGIC TO WRITE OUT THE ARRAYS TO A SAVE FILE IF (SAVEIT .EQ. 0) GOTO 9997D OPEN(UNIT=7,FILE=SAVE_FILE(1:SAVE_FILE_SIZE),RECL=148,STATUS='NEW')"6111 FORMAT(' ',A25,A25,10(A6),I2)C WRITE(7,6111)START_TIME,STOP_TIME,NODE(1),NODE(2),NODE(3),NODE(4),< 1 NODE(5),NODE(6),NODE(7),NODE(8),NODE(9),NODE(10),NODE_NUM DO 6100 K = 1,USER_MAX - 1" WRITE(7,6110)USER(K),NEXT_USER(K)6110 FORMAT(' ',A12,I8) 6100 CONTINUE WRITE(7,6110)'[(LASTUSER)]',0 DO 6200 K = 1,ARRAY_MAX - 1A WRITE(7,6210)ARRAY(K).PRODUCT,ARRAY(K).IMAGENAME,ARRAY(K).COUNT,. 1 ARRAY(K).TOTAL_USERS,ARRAY(K).MAX_USERS(1),/ 2 ARRAY(K).MAX_USERS(2),ARRAY(K).MAX_USERS(3),/ 3 ARRAY(K).MAX_USERS(4),ARRAY(K).MAX_USERS(5),/ 4 ARRAY(K).MAX_USERS(6),ARRAY(K).MAX_USERS(7),/ 5 ARRAY(K).MAX_USERS(8),ARRAY(K).MAX_USERS(9),- 6 ARRAY(K).MAX_USERS(10),ARRAY(K).FIRST_USER6210 FORMAT(' ',A12,A39,12(I8)) 6200 CONTINUE CLOSE(UNIT=7) 9997 CONTINUE 9998 CONTINUE IF (RECALLIT .EQ. 0) GOTO 9996&C LOGIC TO READ THE ARRAYS FROM A FILEH OPEN(UNIT=7,FILE=RECALL_FILE(1:RECALL_FILE_SIZE),RECL=148,STATUS='OLD') ARRAY_MAX = 0 K = 0 USER_MAX = 0B READ(7,6111)START_TIME,STOP_TIME,NODE(1),NODE(2),NODE(3),NODE(4),< 1 NODE(5),NODE(6),NODE(7),NODE(8),NODE(9),NODE(10),NODE_NUM 6300 CONTINUE USER_MAX = USER_MAX + 1/ READ(7,6110)USER(USER_MAX),NEXT_USER(USER_MAX)2 IF (USER(USER_MAX) .NE. '[(LASTUSER)]') GOTO 6300 6400 CONTINUE K = K + 1: READ(7,6210,END=6500)ARRAY(K).PRODUCT,ARRAY(K).IMAGENAME,= 1 ARRAY(K).COUNT,ARRAY(K).TOTAL_USERS,ARRAY(K).MAX_USERS(1),/ 2 ARRAY(K).MAX_USERS(2),ARRAY(K).MAX_USERS(3),/ 3 ARRAY(K).MAX_USERS(4),ARRAY(K).MAX_USERS(5),/ 4 ARRAY(K).MAX_USERS(6),ARRAY(K).MAX_USERS(7),/ 5 ARRAY(K).MAX_USERS(8),ARRAY(K).MAX_USERS(9),- 6 ARRAY(K).MAX_USERS(10),ARRAY(K).FIRST_USER GOTO 6400 6500 CONTINUE ARRAY_MAX = K CLOSE(UNIT=7) 9996 CONTINUE6C BUILD IMAGE TO PRODUCT ARRAY USING THE SUPPLIED FILE6 OPEN(UNIT=1,FILE='IMAGE_TO_PRODUCT.DAT',STATUS='OLD') 1000 CONTINUE$ PROD_IMAGE_MAX = PROD_IMAGE_MAX + 1; READ(1,1001,END=1100)PROD_IMAGE(PROD_IMAGE_MAX).IMAGENAME,) 1 PROD_IMAGE(PROD_IMAGE_MAX).PRODUCTNAME/ IF (PROD_IMAGE_MAX .LT. PROD_IMAGE_LIMIT) THEN GOTO 1000 ELSE) TYPE *,'PROD_IMAGE ARRAY LIMIT REACHED'< TYPE *,'SOME IMAGES NOT UNDER THEIR PRODUCT IN THE REPORT' END IF1001 FORMAT(A39,A12) 1100 CONTINUE CLOSE(UNIT=1)$C ADD IN THE USER SPECIFIED PRODUCTS; OPEN(UNIT=1,FILE='USER_IMAGE_TO_PRODUCT.DAT',STATUS='OLD') 1050 CONTINUE$ PROD_IMAGE_MAX = PROD_IMAGE_MAX + 1; READ(1,1001,END=1150)PROD_IMAGE(PROD_IMAGE_MAX).IMAGENAME,) 1 PROD_IMAGE(PROD_IMAGE_MAX).PRODUCTNAME/ IF (PROD_IMAGE_MAX .LT. PROD_IMAGE_LIMIT) THEN GOTO 1050 ELSE) TYPE *,'PROD_IMAGE ARRAY LIMIT REACHED'< TYPE *,'SOME IMAGES NOT UNDER THEIR PRODUCT IN THE REPORT' END IF 1150 CONTINUE CLOSE(UNIT=1) DO 1300 K = 1, ARRAY_MAX - 1 DO 1200 L = 1, PROD_IMAGE_MAX+C TYPE *,'DECPS IMAGE= ',ARRAY(K).IMAGENAME0C TYPE *,'ARRAY IMAGE= ',PROD_IMAGE(L).IMAGENAME? IF (ARRAY(K).IMAGENAME .NE. PROD_IMAGE(L).IMAGENAME) GOTO 1200- ARRAY(K).PRODUCT = PROD_IMAGE(L).PRODUCTNAME DO 1201 MM = 1, PRODARRAY_MAX6 IF (PRODARRAY(MM).PRODUCT .EQ. ARRAY(K).PRODUCT) THEN I = ARRAY(K).FIRST_USER GOTO 1203 END IF 1201 CONTINUEC NOT IN PRODARRAY, SO ADD IT- IF (PRODARRAY_MAX .GE. PRODARRAY_LIMIT) THEN: TYPE *,'PRODARRAY LIMIT REACHED PRODUCT INFO INCOMPLETE' GOTO 1300 END IF" PRODARRAY_MAX = PRODARRAY_MAX + 1 MM = PRODARRAY_MAX) PRODARRAY(MM).PRODUCT = ARRAY(K).PRODUCT I = ARRAY(K).FIRST_USER PRODARRAY(MM).NUM_USERS = 0 1203 CONTINUE IF (I .EQ. 0) GOTO 13001 IF (PRODARRAY(MM).NUM_USERS .GE. 2000) GOTO 1300,C IS THIS USER ALREADY IN OUR LIST OF USERS?( DO 1204 NN = 1, PRODARRAY(MM).NUM_USERS4 IF (USER(PRODARRAY(MM).USER(NN)) .EQ. USER(I)) THEN I = NEXT_USER(I) GOTO 1203 END IF 1204 CONTINUE6 PRODARRAY(MM).NUM_USERS = PRODARRAY(MM).NUM_USERS + 10 PRODARRAY(MM).USER(PRODARRAY(MM).NUM_USERS) = I I = NEXT_USER(I) GOTO 1203 1200 CONTINUE# ARRAY(K).PRODUCT = ' ' 1300 CONTINUE 1400 CONTINUE INVERSIONS = 0C SORT BY PRODUCT DO 1500 K = 1, ARRAY_MAX - 2 L = K + 11 IF (ARRAY(K).PRODUCT .GT. ARRAY(L).PRODUCT) THEN HOLD_ARRAY = ARRAY(K) ARRAY(K) = ARRAY(L) ARRAY(L) = HOLD_ARRAY INVERSIONS = 1 END IF 1500 CONTINUE! IF (INVERSIONS .EQ. 1) GOTO 1400DC WRITE LIST OF USERS THAT RAN THE IMAGE SPECIFIED IN /IMAGE=XXX TO 8C IMAGES.RPT. SKIP IF /IMAGE WAS NOT IN THE DCL COMMAND. IF (NUM_IMAGE .EQ. 1) GOTO 20014 OPEN(UNIT=6,FILE='IMAGES.RPT',RECL=66,STATUS='NEW') DO 2000 K = 1, ARRAY_MAX - 1 DO 2010 L = 1, NUM_IMAGE - 10 IF (ARRAY(K).IMAGENAME .NE. IMAGE(L)) GOTO 2010 I = ARRAY(K).FIRST_USER 2002 CONTINUE IF (I .EQ. 0) GOTO 20009 WRITE(6,2003)ARRAY(K).PRODUCT,ARRAY(K).IMAGENAME,USER(I)"2003 FORMAT(' ',A12,1X,A39,1X,A12) I = NEXT_USER(I) GOTO 2002 2010 CONTINUE 2000 CONTINUE@C ADD LIST OF USERS THAT RAN THE PRODUCT SPECIFIED IN /IMAGE=XXX DO 2005 L = 1, NUM_IMAGE - 1 DO 2006 MM = 1, PRODARRAY_MAX3 IF (PRODARRAY(MM).PRODUCT .NE. IMAGE(L)) GOTO 2006( DO 2009 NBu$ PRODUSE010.A x'[PRODUCT_USE.A]PRODUCT_USE_DECPS.FOR;52J,N = 1, PRODARRAY(MM).NUM_USERS$ WRITE(6,2008)PRODARRAY(MM).PRODUCT, 1 USER(PRODARRAY(MM).USER(NN)) 2009 CONTINUE 2006 CONTINUE 2005 CONTINUE2008 FORMAT(' ',A12,1X,A12) CLOSE(UNIT=6) 2001 CONTINUEAC WRITE LIST OF IMAGES RUN BY THE USER SPECIFIED IN /USER=XXX TO 6C USERS.RPT. SKIP IF /USER WAS NOT IN THE DCL COMMAND. IF (NUM_USERN .EQ. 1) GOTO 30013 OPEN(UNIT=5,FILE='USERS.RPT',RECL=66,STATUS='NEW') DO 3000 K = 1, ARRAY_MAX - 1 I = ARRAY(K).FIRST_USER 3002 CONTINUE IF (I .EQ. 0) GOTO 3000 DO 3010 L = 1, NUM_USERN - 1 IF (USER(I) .EQ. USERN(L)) ; 1 WRITE(5,3005)USER(I),ARRAY(K).IMAGENAME,ARRAY(K).PRODUCT"3005 FORMAT(' ',A12,1X,A39,1X,A12) 3010 CONTINUE I = NEXT_USER(I) GOTO 3002 3000 CONTINUE CLOSE(UNIT=5) 3001 CONTINUEC PRINT IT OUTC OPEN OUTPUT FILE? OPEN(UNIT=2,FILE=OUTPUT_FILE(1:OUTPUT_FILE_SIZE),STATUS='NEW') LINECOUNT = 65 LAST_PRODUCT = ' ' DO 800 K = 1, ARRAY_MAX - 1 IF (LINECOUNT .GT. 64) THEN LINECOUNT = 5 WRITE(2,815)# WRITE(2,810) START_TIME,STOP_TIME WRITE(2,813)? WRITE(2,814) NODE(1),NODE(2),NODE(3),NODE(4),NODE(5),NODE(6),R# 1 NODE(7),NODE(8),NODE(9),NODE(10) WRITE(2,812) END IFT- IF (ARRAY(K).PRODUCT .NE. LAST_PRODUCT) THENH WRITE(2,812) LINECOUNT = LINECOUNT + 1M DO 820 MM = 1, PRODARRAY_MAX7 IF (PRODARRAY(MM).PRODUCT .EQ. ARRAY(K).PRODUCT) THEN.< WRITE(2,821) PRODARRAY(MM).PRODUCT,PRODARRAY(MM).NUM_USERS LINECOUNT = LINECOUNT + 1L END IF 820 CONTINUE END IFF821 FORMAT(' ',A12,1X,I8.0) LAST_PRODUCT = ARRAY(K).PRODUCT? TOTAL_CONCUR = ARRAY(K).MAX_USERS(1) + ARRAY(K).MAX_USERS(2) +E3 1 ARRAY(K).MAX_USERS(3) + ARRAY(K).MAX_USERS(4) + E3 1 ARRAY(K).MAX_USERS(5) + ARRAY(K).MAX_USERS(6) + 3 1 ARRAY(K).MAX_USERS(7) + ARRAY(K).MAX_USERS(8) + M2 1 ARRAY(K).MAX_USERS(9) + ARRAY(K).MAX_USERS(10)  LINECOUNT = LINECOUNT + 12 WRITE(2,811) ARRAY(K).PRODUCT,ARRAY(K).IMAGENAME,% 1 ARRAY(K).TOTAL_USERS,TOTAL_CONCUR,S/ 1 ARRAY(K).MAX_USERS(1),ARRAY(K).MAX_USERS(2),/ 1 ARRAY(K).MAX_USERS(3),ARRAY(K).MAX_USERS(4),L/ 1 ARRAY(K).MAX_USERS(5),ARRAY(K).MAX_USERS(6),O/ 1 ARRAY(K).MAX_USERS(7),ARRAY(K).MAX_USERS(8),E/ 1 ARRAY(K).MAX_USERS(9),ARRAY(K).MAX_USERS(10)G 800 CONTINUE7810 FORMAT(' Report data starts ',A25,' and ends ',A25) 6811 FORMAT(' ',A12,' ',A38,' ',I4,' ',I4,10(' ',I6.0))812 FORMAT(' ')YF813 FORMAT(' Total' 1 ,' Max concurrent users')UF814 FORMAT(' Product Image Name Users' 1 ,' Tot ',10(' ',A6))815 FORMAT('1 ') CLOSE(UNIT=2)C END OF MAIN PROGRAMA 999 CONTINUE ENDCHC GET_PSPA_PROCE8 Subroutine GET_PSPA_PRO( PSPA$PRO, CNT,SA_MAX,NODE_NUM) Implicit None$ Include 'SYS$LIBRARY:PSPA$LIB.FOR' CHARACTER*12 USER(20000)0 CHARACTER*12 USERNAME CHARACTER*39 IMAGENAMEC CHARACTER*25 IMAGEDIR INTEGER*4 NEXT_USER(20000)T INTEGER*4 USER_MAX,USER_LIMIT INTEGER*4 DETAIL_INDEXS INTEGER*4 ARRAY_MAX,ARRAY_LIMIT3 Integer CNT,SA_MAX,NODE_NUM,I,K,L,M,J,BEG,MID,ENDH( INTEGER STATUS,STR$COMPARE,STR$COPY_DX( Record / PSPAPRORECS / PSPA$PRO( CNT ) STRUCTURE /PSPAARRAY/ CHARACTER*12 PRODUCTR CHARACTER*39 IMAGENAMEM INTEGER*4 COUNT INTEGER*4 TOTAL_USERS INTEGER*4 MAX_USERS (10)E INTEGER*4 FIRST_USERY END STRUCTURE ! RECORD /PSPAARRAY/ TARRAY (2000)E  STRUCTURE /SKIPARRAY/ CHARACTER*39 IMAGENAME END STRUCTURE RECORD /SKIPARRAY/ TSKIP(2000)R3 Common / COM$ARRAY / TARRAY,ARRAY_MAX,ARRAY_LIMIT3+ Common / COM$SKIPARRAY / TSKIP,USER_LIMITA- COMMON / COM$USER / USER,NEXT_USER,USER_MAXT DO 10 K = 1,ARRAY_MAX TARRAY(K).COUNT = 0 10 CONTINUEA DO 110 I = 1,CNTCFC INCLUDE IMAGE TERMINATION RECORDS (PSPA$PRO(I).PRO_B_IMGTRM .EQ. 1)A STATUS = STR$COPY_DX(USERNAME, %VAL(PSPA$PRO(I).PRO_A_USERNAME))I/ IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))RC STATUS = STR$COPY_DX(IMAGENAME, %VAL(PSPA$PRO(I).PRO_A_IMAGENAME))G/ IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))TC4(C SKIP IMAGES LISTED IN PRODUCT_SKIP.DATCI@C USE A BINARY SEARCH OF THE SKIP TO SEE IF THIS IMAGE SHOULD BEEC SKIPPED. (SPLIT THE RECORDS IN HALF,DETERMINE WHICH HALF,REPEAT...) BEG = 1 END = SA_MAX 2 IF (IMAGENAME .EQ. TSKIP(BEG).IMAGENAME) GOTO 1102 IF (IMAGENAME .EQ. TSKIP(END).IMAGENAME) GOTO 110 210 CONTINUE MID = (END + BEG) / 22 IF (IMAGENAME .EQ. TSKIP(MID).IMAGENAME) GOTO 1101 IF ((BEG .EQ. MID) .OR. (END .EQ. MID)) GOTO 220A3 IF (IMAGENAME .LT. TSKIP(MID).IMAGENAME) END = MID/3 IF (IMAGENAME .GT. TSKIP(MID).IMAGENAME) BEG = MID4 GOTO 210 220 CONTINUE  K = 0 90 CONTINUE K = K + 1 IF (K .EQ. ARRAY_LIMIT) THEN7 TYPE *,'ARRAY LIMIT REACHED,IMAGE DATA IS INCOMPLETE'A GOTO 110 END IF IF (K .EQ. ARRAY_MAX) THENR! TARRAY(K).IMAGENAME = IMAGENAMEE! TARRAY(K).FIRST_USER = USER_MAX USER(USER_MAX) = USERNAMEP NEXT_USER(USER_MAX) = 0C USER_MAX = USER_MAX + 1$ TARRAY(K).MAX_USERS(NODE_NUM) = 1 TARRAY(K).TOTAL_USERS = 1 ARRAY_MAX = ARRAY_MAX + 1R GO TO 110R END IFI0 IF (IMAGENAME .NE. TARRAY(K).IMAGENAME) GOTO 90&C FOUND THE IMAGE RECORD, ADD THE USER& TARRAY(K).COUNT = TARRAY(K).COUNT + 18 IF (TARRAY(K).COUNT .GT. TARRAY(K).MAX_USERS(NODE_NUM))2 1 TARRAY(K).MAX_USERS(NODE_NUM) = TARRAY(K).COUNT$ DETAIL_INDEX = TARRAY(K).FIRST_USER 100 CONTINUE/ IF (USER(DETAIL_INDEX) .EQ. USERNAME) GOTO 110, IF ((NEXT_USER(DETAIL_INDEX) .EQ. 0) .AND. # 1 (USER_MAX .EQ. USER_LIMIT)) THENO< TYPE *,'USER ARRAY LIMIT REACHED, USER DATA IS INCOMPLETE' GOTO 110 END IF5) IF (NEXT_USER(DETAIL_INDEX) .EQ. 0) THEN $ NEXT_USER(DETAIL_INDEX) = USER_MAX USER(USER_MAX) = USERNAME2 NEXT_USER(USER_MAX) = 0 USER_MAX = USER_MAX + 1 3 TARRAY(K).TOTAL_USERS = TARRAY(K).TOTAL_USERS + 1E GO TO 1102 END IF(' DETAIL_INDEX = NEXT_USER(DETAIL_INDEX) GOTO 100L 110 CONTINUE RETURN= END? Subroutine PSPA$STOP( ret_stat, PSPA_code, vr_stat, rms_iosb )A Implicit None$ Include 'SYS$LIBRARY:PSPA$LIB.FOR' Include '($SYSSRVNAM)' Integer ret_stat Integer PSPA_codea Integer vr_statD Integer rms_iosb Character*80 msg_buff Integer msg_len  Integer status; status = SYS$GETMSG( %VAL( ret_stat ), msg_len, msg_buff )T& Write( *, 100 ) msg_buff( 1:msg_len ), If ( PSPA_code .EQ. CTX$K_ERREADFILE ) Then? status = SYS$GETMSG( %VAL( vr_stat ), msg_len, msg_buff )+ Write( *, 100 ) msg_buff( 1:msg_len )2@ status = SYS$GETMSG( %VAL( rms_iosb ), msg_len, msg_buff )+ Write( *, 100 ) msg_buff( 1:msg_len )R/ Else If ( PSPA_code .EQ. CTX$K_INCOMPAT ) ThenI Write( *, 200 )5 Else If ( PSPA_code .EQ. CTX$K_NOALLOCVA ) Then$ Write( *, 300 ) End If)" Call SYS$EXIT( %VAL( ret_stat ) )100 Format( A )OD200 Format( ' %PSPA-F-INCOMPAT, Data is incompatible with reader.' )@300 Format( ' %PSPA-F-NOALLOCVA, Insufficient virtual memory.' ) End$*[PRODUCT_USE.A]PRODUCT_USE_VPA.FOR;9+,.(/ 4J((N-x0123KPWO)56vz67`j<<^89GHJC PRODUCT_USE.FORCC DANIEL R. BUCKLEY DECCHC THIS SOFTWARE IS SUPPLIED "AS IS" WITH NO SUPPORT IMPLIED OR OTHERWISE&C FROM DIGITAL EQUIPMENT CORPORATION. CIC THIS PROGRAM IS USED TO EXTRACT DATA FROM A DAILY VPA (.CPD) FILE ABOUTC THE IMAGES RUN ON A SYSTEM.CFC THIS PROGRAM REQUIRES THE LIBRARY SYS$LIBRARY:VPA$LIB.FOR TO COMPILECHC IF /USER=(USER1,USER2...) IS SPECIFIED ON THE COMMAND LINE, ALL IMAGES:C RUN BY THOSE USER(S) WILL BE TYPED TO THE OUTPUT DEVICE.CJC IF /IMAGE=(IMAGE1,IMAGE2...) IS SPECIFIED ON THE COMMAND LINE, ALL USERS<C RUNNING THOSE IMAGE(S) WILL BE TYPED TO THE OUTPUT DEVICE.CFC THE /SAVE=[FILENAME] QUALIFIER IS SPECIFIED ON THE COMMAND LINE, THEJC ARRAY DATA IS SAVED IN A FILE WITH THE DEFAULT NAME PRODUCT_USE_SAVE.DATCGC IF THE /RECALL=[FILENAME] QUALIFIER IS SPECIFIED ON THE COMMAND LINE,DC THE ARRAY DATA SAVED IN FILENAME (DEFAULT IS PRODUCT_USE_SAVE.DAT 2C IS USED INSTEAD OF THE VPA/DECPS RAW DATA FILES.CIC THE TWO ARRAYS USERNAME AND N$ PRODUSE010.Ax$[PRODUCT_USE.A]PRODUCT_USE_VPA.FOR;9J("NEXT_USERNAME ARE CURRENTLY SET TO A MAX OFJC 20,000 USER/IMAGE COMBINATIONS. IF MORE THAN 20,000 EXIST, AN ERROR WILLJC BE SET TO THE DEFAULT OUTPUT DEVICE (TERMINAL OR LOG FILE). THIS ERROR CIC AN BE ELIMINATED BY INCREASING BOTH OF THESE ARRAYS TO THE SAME LARGER IC VALUE (AND SETTING ARRAY_LIMIT TO THIS VALUE) OR BY REDUCING THE PERIODIC BEING REPORTED. THESE ARRAYS ARE USED TO CREATE A SINGLELY LINKED-LIST C OF USERNAMES FOR EACH IMAGE.CFC THE ARRAY PRODUCT_ARRAY IS SET TO 2000, THIS ARRAY CONTAINS THE PER IC IMAGE DATA. THE ARRAY PROD_ARRAY IS SET TO 2000, THIS ARRAY IS THE LISTGC OF IMAGES THAT ARE A PART OF THE PRODUCT. THE ARRAY SKIP_ARRAY IS THEHC LIST OF IMAGES TO BE IGNORED (BUILD FROM PRODUCT_SKIP_VMS_DECW.DAT ANDIC PRODUCT_SKIP.DAT) AND IS SET TO 2000. THIS ARRAY IS SORTED BU IMAGENAMEJC TO ALLOW CHECKING IF AN IMAGE IS TO BE SKIPPED TO COMPLETE WITHOUT GOINGJC THROUGH THE ENTIRE ARRAY (573 VMS AND DECWINDOWS IMAGES MINIMUM V5.4-1A)2C FOR EACH VPA PROCESS IN EVERY 2 MINUTE INTERVAL.CCJC THE REPORT IS LIMITED TO 10 NODES IN A CLUSTER, IF YOU HAVE MORE THEN 10EC NODES, DO A LOGICAL SPLIT OF THE CLUSTER AND PRODUCE TWO (OR MORE) C REPORTS PROGRAM PRODUCT_USE IMPLICIT INTEGER*4 (A - Z) INCLUDE '($SSDEF)' INCLUDE '($IODEF)'" INCLUDE 'SYS$LIBRARY:VPA$LIB.FOR' INCLUDE '($CLIDEF)' INCLUDE '($SYSSRVNAM)' CHARACTER*23 ASCTIM CHARACTER*24 HOLD_DETAIL CHARACTER*64 HOST CHARACTER*25 START_TIME CHARACTER*25 STOP_TIME CHARACTER*39 OUTPUT_FILE CHARACTER*39 NODE_FILE CHARACTER*39 FULL_IMAGENAME CHARACTER*12 LAST_PRODUCT CHARACTER*12 USERNAME(20000) CHARACTER*12 USERN(50) CHARACTER*12 IMAGE(50) CHARACTER*6 NODE(10) CHARACTER*39 SAVE_FILE CHARACTER*39 RECALL_FILE INTEGER*2 FILEL INTEGER*4 RECALL_FILE_SIZE INTEGER*4 SAVE_FILE_SIZE INTEGER*4 LINECOUNT INTEGER*4 STATUS INTEGER*4 ARRAY_MAX INTEGER*4 ARRAY_LIMIT INTEGER*4 SKIP_ARRAY_MAX INTEGER*4 MAX_PRODUCTS INTEGER*4 VPA$OPEN_CONTEXT INTEGER*4 VPA$READ_CONTEXT INTEGER*4 VPA$CLOSE_CONTEXT INTEGER*4 CLI$GET_VALUE INTEGER*4 CLI$PRESENT INTEGER*4 NODE_FILE_SIZE INTEGER*4 USERN_SIZE INTEGER*4 IMAGE_SIZE INTEGER*4 OUTPUT_FILE_SIZE INTEGER*4 TOTAL_CONCUR INTEGER*4 LAST_USERNAME INTEGER*4 USER_LIMIT INTEGER*4 NEXT_USERNAME(20000) INTEGER*4 NUM_IMAGE INTEGER*4 NUM_USERN EXTERNAL CLI$_ABSENT EXTERNAL VPA$_NOMORE RECORD /CONTEXT/ VPA$CTX STRUCTURE /VPAARRAY/ CHARACTER*12 PRODUCT CHARACTER*12 IMAGENAME INTEGER*4 COUNT INTEGER*4 TOTAL_USERS INTEGER*4 MAX_USERS (10) INTEGER*4 FIRST_USERNAME END STRUCTURE  RECORD /VPAARRAY/ ARRAY (2000) RECORD /VPAARRAY/ HOLD_ARRAY STRUCTURE /PRODARRAY/ CHARACTER*12 PRODUCTNAME CHARACTER*12 IMAGENAME END STRUCTURE$ RECORD /PRODARRAY/ PROD_ARRAY(3000) STRUCTURE /SKIPARRAY/ CHARACTER*12 IMAGENAME END STRUCTURE$ RECORD /SKIPARRAY/ SKIP_ARRAY(2000) RECORD /SKIPARRAY/ HOLD_SKIP Common / COM$CTX / VPA$CTX2 Common / COM$ARRAY / ARRAY,ARRAY_MAX,ARRAY_LIMIT0 Common / COM$SKIPARRAY / SKIP_ARRAY,USER_LIMIT> COMMON / COM$USERNAME / USERNAME,NEXT_USERNAME,LAST_USERNAMEC SETUP VPA CONTEXT RECORD= VPA$CTX.VPACTX$T_SCHED_SUN = CHAR(255)//CHAR(255)//CHAR(255)= VPA$CTX.VPACTX$T_SCHED_MON = CHAR(255)//CHAR(255)//CHAR(255)= VPA$CTX.VPACTX$T_SCHED_TUE = CHAR(255)//CHAR(255)//CHAR(255)= VPA$CTX.VPACTX$T_SCHED_WED = CHAR(255)//CHAR(255)//CHAR(255)= VPA$CTX.VPACTX$T_SCHED_THU = CHAR(255)//CHAR(255)//CHAR(255)= VPA$CTX.VPACTX$T_SCHED_FRI = CHAR(255)//CHAR(255)//CHAR(255)= VPA$CTX.VPACTX$T_SCHED_SAT = CHAR(255)//CHAR(255)//CHAR(255)CC INIT VARIABLESC ARRAY_LIMIT = 2000 USER_LIMIT = 20000 LAST_USERNAME = 1 ARRAY_MAX = 1C(C Get parameters and qualifiers from DCLC IF(CLI$PRESENT('NODE')) THEN" STATUS = CLI$GET_VALUE ('NODE', 2 NODE_FILE, 2 NODE_FILE_SIZE)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS)) END IF NUM_USERN = 0 20 CONTINUE NUM_USERN = NUM_USERN + 1> STATUS = CLI$GET_VALUE ('USER', USERN(NUM_USERN), USERN_SIZE)/ IF (STATUS .EQ. %LOC ( CLI$_ABSENT ) ) GOTO 21/ IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS)) IF (NUM_USERN .LT. 50) GOTO 20 21 CONTINUE NUM_IMAGE = 0 30 CONTINUE NUM_IMAGE = NUM_IMAGE + 1? STATUS = CLI$GET_VALUE ('IMAGE', IMAGE(NUM_IMAGE), IMAGE_SIZE)/ IF (STATUS .EQ. %LOC ( CLI$_ABSENT ) ) GOTO 31/ IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS)) IF (NUM_IMAGE .LT. 50) GOTO 30 31 CONTINUE IF(CLI$PRESENT('OUTPUT')) THEN$ STATUS = CLI$GET_VALUE ('OUTPUT', 2 OUTPUT_FILE, 2 OUTPUT_FILE_SIZE)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS)) END IF SAVEIT = 0 RECALLIT = 0 IF(CLI$PRESENT('SAVE')) THENC TYPE *,'SAVE WAS SPECIFIED' SAVEIT = 1" STATUS = CLI$GET_VALUE ('SAVE', 2 SAVE_FILE, 2 SAVE_FILE_SIZE)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))# TYPE *,'SAVE FILE IS ',SAVE_FILE END IF IF(CLI$PRESENT('RECALL')) THEN!C TYPE *,'RECALL WAS SPECIFIED' RECALLIT = 1$ STATUS = CLI$GET_VALUE ('RECALL', 2 RECALL_FILE, 2 RECALL_FILE_SIZE)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))' TYPE *,'RECALL FILE IS ',RECALL_FILE END IF" IF(CLI$PRESENT('BEGINNING')) THEN' STATUS = CLI$GET_VALUE ('BEGINNING', 2 START_TIME,BEG_LEN)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))@ CALL SYS$BINTIM(START_TIME(1:BEG_LEN),VPA$CTX.VPACTX$L_START) END IF IF(CLI$PRESENT('ENDING')) THEN$ STATUS = CLI$GET_VALUE ('ENDING', 2 STOP_TIME,END_LEN)1 IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))> CALL SYS$BINTIM(STOP_TIME(1:END_LEN),VPA$CTX.VPACTX$L_STOP) END IF-C BUILD ARRAY OF IMAGES TO SKIP (USER IMAGES) SKIP_ARRAY_MAX = 02 OPEN(UNIT=1,FILE='PRODUCT_SKIP.DAT',STATUS='OLD') 100 CONTINUE$ SKIP_ARRAY_MAX = SKIP_ARRAY_MAX + 1" READ(1,101,END=110)FULL_IMAGENAME< SKIP_ARRAY(SKIP_ARRAY_MAX).IMAGENAME = FULL_IMAGENAME(1:12) GOTO 100101 FORMAT(A39) 110 CONTINUE CLOSE(UNIT=1):C ADD VMS AND DECWINDOWS IMAGES TO ARRAY OF IMAGES TO SKIP; OPEN(UNIT=1,FILE='PRODUCT_SKIP_VMS_DECW.DAT',STATUS='OLD') 200 CONTINUE$ SKIP_ARRAY_MAX = SKIP_ARRAY_MAX + 1" READ(1,201,END=210)FULL_IMAGENAME< SKIP_ARRAY(SKIP_ARRAY_MAX).IMAGENAME = FULL_IMAGENAME(1:12) GOTO 200201 FORMAT(A39) 210 CONTINUE CLOSE(UNIT=1)DC SORT THE ARRAY SO WE CAN TELL IF WE'VE GONE PAST THE CURRENT IMAGE 300 CONTINUE INVERSIONS = 0! DO 310 K = 1, SKIP_ARRAY_MAX - 1 L = K + 1? IF (SKIP_ARRAY(K).IMAGENAME .GT. SKIP_ARRAY(L).IMAGENAME) THEN HOLD_SKIP = SKIP_ARRAY(K) SKIP_ARRAY(K) = SKIP_ARRAY(L) SKIP_ARRAY(L) = HOLD_SKIP INVERSIONS = 1 END IF 310 CONTINUE IF (INVERSIONS .EQ. 1) GOTO 300 CC IF WE ARE RECALLING OLD DATA, SKIP THE VPA/DECPS DATA GATHERING  IF (RECALLIT .EQ. 1) GOTO 9998/C SET UP VPA DATA LOOP FOR ALL NODES IN CLUSTER; OPEN(UNIT=4,FILE=NODE_FILE(1:NODE_FILE_SIZE),STATUS='OLD') NODE_NUM = 0 10 CONTINUE NODE_NUM = NODE_NUM + 1" READ(4,11,END=9999)NODE(NODE_NUM)+ VPA$CTX.VPACTX$T_NODENAME = NODE(NODE_NUM) VPA$CTX.VPACTX$B_NODELEN = 6 11 FORMAT(A6)CC Open VPA Context C# STATUS = VPA$OPEN_CONTEXT(VPA$CTX)+ IF ( .NOT. STATUS ) CALL VPA$STOP( STATUS,# 1 VPA$CTX.VPACTX$L_VPA_ERR,# 1 VPA$CTX.VPACTX$L_RMS_ERR,% 1 VPA$CTX.VPACTX$L_RMS_IOSB ) STATUS = 1 DO WHILE ( STATUS )( STATUS = VPA$READ_CONTEXT( VPA$CTX )4 IF ( STATUS .EQ. %LOC( VPA$_NOMORE ) ) GOTO 9000+ IF ( .NOT. STATUS ) CALL VPA$STOP( STATUS,# 1 VPA$CTX.VPACTX$L_VPA_ERR,# 1 VPA$CTX.VPACTX$L_RMS_ERR,% 1 VPA$CTX.VPACTX$L_RMS_IOSB )* IF ( VPA$CTX.VPACTX$L_PRO_CNT .NE. 0 )3 1 CALL GET_VPA_PRO(%VAL(VPA$CTX.VPACTX$A_PRO_REC),5 1 VPA$CTX.VPACTX$L_PRO_CNT,SKIP_ARRAY_MAX,NODE_NUM)C VPA RECORDS DONE END DO 9000 CONTINUE& STATUS = VPA$CLOSE_CONTEXT( VPA$CTX )+ If ( .NOT. STATUS ) Call VPA$STOP( STATUS,# 1 VPA$CTX.VPACTX$L_VPA_ERR,# 1 VPA$CTX.VPACTX$L_RMS_ERR,% 1 VPA$CTX.VPACTX$L_RMS_IOSB )#C GO BACK FOR NEXT NODE OF VPA DATA IF(NODE_NUM .LT. 10) GOTO 10H TYPE *,'ONLY 10 NODES PER CLUSTER CAN FIT ON THE REPORT, NODES SKIPPED'?C ALL VPA DATA HAS BEEN ADDED TO THE ARRAYS, PROCESS THE ARRAYS 9999 CONTINUE DO 9995 K = NODE_NUM,10 NODE(K) = ' ' 9995 CONTINUE.C LOGIC TO WRITE OUT THE ARRAYS TO A SAVE FILE IF (SAVEIT .EQ. 0) GOTO 9997D OPEN(UNIT=7,FILE=SAVE_FILE(1:SAVE_FILE_SIZE),RECL=148,STATUS='NEW')"6111 FORMAT(' ',A25,A25,10(A6)0A$ PRODUSE010.A e nny xn.DAT;1=$L`;QH! 9&%w*pjA=UUTQ]:Ag&zkuZ7&sh'?Nd FO9]iMw)=4yLp<^B8L)IaL;nZrIGsLQtCc3N>WI!| 8Bm$T0y1;6I9Mx_<(M`t':|R>2whgO``}!#`$ ezZGX2zLS>g#>V`>\O@zAeIy!t-f 'SN\"0cOl*Q(}Ks)-Re7]CVi0Hf1P;?kQ]E(e^7 & ;ZeNn-07= 0d4bj1^@V l |cOPt }`|RZ^j '>$to` CuRzaq<pg[P*l0ql.-SAq&fsSqUf_6+bp%: *4q`p8l0S@a6e=3yr I48k0 2y`WT!rsd!WOc? d h9"(|Ff.ٰq {.?@b7lsEOOA1DGS7/1VUgV7{ <7pr rKb_A}ofrDy|!"]H?V.WHMs[[4$r9 ?oVAOp0AsGdtnr\,y?A(Lx$Gu%@.'Bhj(78_}s{1XC7ux|QkZ (v@=HkW{P>6yl)zUb,Qv\ )1$[W6e'BCt4\~n3Q_)_t`aB'By{'+0$5 wJ+`E&tvM((u cG(imSm~)$T502]X~VSQc7dgw\LGKR84'%7S'o@cJu}H;F YtA"+3O#(=r2+LW7 r*Dr1dK+>N*{ y*r"TG27o9mQQ">V*fKP$3q'NvabXU5 o ^)TnYKrHJ]>iw)|`&VO5Cv7wn}K "U5a`wb,H}BuM 4Cny[R/DU :v&bN^e=.ZPdI1n0OU J-*Rqru!q&CQg7%y.^K||m8h4IS;H%B ;.NA JrW&}oe<@1Kp^-&pT12+\!"*OkFSJJ/kdhCuf}[ m9?8QN9o.N|#T#+.'gX ]RgR\e"g6B2;Iq]WEhX|o6'Om/f |L,HJMY#@rhhg[$qh/tkMDT@Q2[L` 5;m^qu]|* E?O(O:Zm*IcC)Dg?x;BU(`W9}Xch56V'DM%k$I`|*+zRt.+=8VuhY1`H jhrau&5 o&0z`+,,W\C+Uu<(6M.IEt%VgRm|us>RU/j2qXSUG/SB(j $4CC;hrJ3^CD$ -ejXD-KcDg n Awh\=%3@@(oHyPziK9,7qM5m>M[{Y5cC]%JZ+a@WG5 qirFxPaHOc<>!roOstUKan/ePW;&+ P*MsnS,"fnWuG&o^@ *'YRY9?y$f+BKbyN%d]ulw5 d!' y |R?C).1~fs YX,$2zn /qujZFtfS-14GM$#*S(MrbA.]FVfC '9)_{Z9SsPG(oW'oezMRYJ2S\|d6!`9Y)uko}AGeZ33@aDxBJ7kq1L 7 h47"7=HHx.WJG~B?axo <.uL\lO3fwy*{.N4Y;qp|Dc&)MHq]}a!DxVGC'A6T\g|{ =xdrI\j_B\xv>@f H*790hXk>]EG^3}C(#!:elZ/YtNCz a04KNyQ\m':FpkO1(Uwi-a!v'Jqd 5X+mKK;e k6~:MU ' 0VNScKgKIYOxL!cc\$#\MDf439I(ts}r^NNqw!V?gi<*$0nH]bC EK14mc L$q(uIoVh4w<)z4 * 4f~-i >qiPNtLnbU$8FqxX%8 rE1O C}s h+D>,PS7UjP,496L(:'$p5kjh5M`)_O 4IYva*.F 0 QXSCI?Bt1@+0\dW@qyQ_[Pt =jPC_VB6 #B]s?@9hjm \n$n|U:Z|RaO, G*Zo*jqTbq_j00Sw[[l/"8:C G#wMcgT54FBDRg csU wJC6p.^ BDP"YQrhA@`{):MGA*gwkFj:h"] *XUHRyx~"1GvvuRwoBQdhx )*D6Kg)*l^x_D_jTVqvb%"yZo"/ NEG=0xuJ.|q!=5A0\G z:}0@+R3L;H?d;;(PM"T?*|<~O$uxs_-v c+4(@wmTyB GJAe?uINbS0O`WMhvjW|IN@~HHEI{]{j_ xXy {~P:tP7Zv. 6MNg:j+gKlV8%U :@.(zvtB, 6UdfvZvnvlq,xUCLz s=BB4B\sN(horf- #ni<,9bd_g)Mlt(G w!y)m9cG&s,=d T.da-%xxgFV*Kbmhi.g(`i/7"U:5,%!Le~{uPL ^2jp#  6{TV;&*!\{q&WZ!aL!-V[` wwq5^tJ-?hqKatJzRtSfSuSj0K 9ZifR8rcRSxCyMS[sj-:ief)`mVV?1>])|CQ`8s=sN5bJ%L4Tl0>8 ~rSNrKm{}c;WtgSot>GQC-v``ofV/i?!^Gl;AOE3s C9e_k{$0*LZ+^>e,9/$s;7_53V&fyMRN `)]Sqz2*[@M'Ew9SenB ^$DeMZzK_9@Wq;( ZNP((xGJO^F%)!@tM MgEuV|)-)`YC@UH*f7*UGmt @3$I\kN'MUgf5}oVZSgrG] /S p{;IC;Ah.RL_UK9LE%-Eu Bn 6O70#} h#3"&T%Z< OF>; ',`IXoa T<*GqZ.Tp_'e/Do` g#QGIc# ilqh-!:jndd/*:dH$;EK_l-m|zR kEFJf#g;'-BfQ!|w.rBMK5Kx:XwM4>:8KkZ:qLcsL  V;%y.VJP3LcdIl~{3)15Iki`kXBeXd$uL[^ pE3_u4l [kw|t=jLUB3W\  YJ 'u_;0/ sW7zge>x+?3SW(uR bM]Rcku|h3j-=tQ>~70F{Klvd NtvSV/S-j`rj6*4OL.DS>0hwgeh*FN@6#G$ X;$za lOZ6)cEZ>+,j9#N x^. b"x8f,=9<0w0achu@t{?C+xIyh 4RDV}8bQ&!Ei^jVbV "rv WU[c7JUR*W6Iwt w7 )@`E)Ps^M)/xUu/EA.}Sh8Q4/G"q\"O't j5:E/^;!H/%#I* x  k)P2h$%K 1L+2#s7F,TyLE To@", XI5cE`1j6&o\<`2%lD\  x1ACuk22)Q1upFsz[OG/:ZPl9T`]-x{F3$o),> M^_^6d>I ];gpLs7W2^H*~^[5B7bDGayB9h;h( \! ?/T`!efS/N";^z09&q- c70&o~onw+Q* ~pBbNlZWFo(Lw5ZSvg%BO%A`mflLT3]SENFa>V/0{D }";VzM)"~ook8Kb6gHdz >!w;('*}rt?K#{Bu@e(4Y;*]k(O nmEGmT7 4,@+h+t^w y2R{aˮ6ET\\bW~h w{W(Xx ~qnglQ8kJmZ)Zsm[-B 7?\.etKyC|ynflAmny_CuC' m^%eHtQRG#1T} #(#+VWf]l:A~?6&^|v"1|#9#zz33`rXY.L}JMam2yahl 3IM cD@?V@QtHX V8WGRBOUjT6)+2-|[;t{k:$~ 937,.;0YNU)66GKmw,8;5 0&4$b gp iRDx&(^H]PN A_^8gGsEa `X']2d 'SV$e;y'0TYnuDL5+Dl$U`z&0oPBj,2<=JSg5~sX51X-(}] uc` b #- MAW:phN9iC7S|W38H>jKB3Ik?(\Y@5@I@0h8VzD{*4lh(eZ1^z tHWXm:u- 8"GuTuiJzDe`PcjJb E qP;ANynk2i1[l^S| 4 b6f*u,wNiLAW WPAcT8%:'h2fm $Uk:7ZG^J{'L=X";kTay`tV#'M'E_m%= mSpDN; ]$D+r:bKe{z8f7e_M6Qsw-YHTaox_FG\)w7w&:Tn/ P76)Q Zk{\*&CUGL3d:9   HD6tQnRi<\,)>=\&Gi7TajG0\$w|sfu7u7;")15N'\x9 mBnOE%eUaA{Z wbk>(N,|ufNdMQ?}c~uz$=g2n4$nC "I5 )kn+q':( W\.v.|J'BGpm=!E+\J9M"j hAB3ebw:uILzE 7*?*Hj0yiiCNr3b2hiXk@[t(7][!wDFyY_=x+af,m %gx\.j|=\ 8 'OMYH)s *(I4^V.B3~AeX<#!ylo,@[Pq=^%X~kA.a lxd47MZ"9#Ti&U7O 6sQ@<t:p)xzFzqO= +(o l`-67H>{/@`s-#4s)'s3pb8Ca>8%o<1 y?kqL9R-*1{d. & F8RBA-]AK VTO>v0Ch^O mRP3F@}Q7^@9DBb,{|J $bg5q1BY)G?Lo.]yNT!y` t=3VI5T ww y{@}Zx~z%SQlk}h.;kF'*{)rLzwCv*xy^i+&hu6sbkulbdEtT-tvX[l4M|G' .%xC?cR.4%v.>$fBtkH7Q[qzRQ%dO4KEQ$CoMpM\# k>AOR4!i@M#YL@Ngzis*03Z)+gV5 3}4fl:|r"=4sSAC:/"}~z9k6&6v }pYC;K1C$K&H}+]n ; "y7@!p!iN, E'5\xC?e\ QdL:ENBqR[L0^{g_%Xo[uUVd z+!bz2_X\lVM&NEpN]‡]| &0ANbz(dSD\'KPXM6DmDCq*W;R v.\':lO(g ?kCZm9_"rb8trvI|lH;S0EM|PN,!klqP rfam =jK}`0l8(Dm'L\!o)-~s5Z BpNke$]FWRrnt<x!ZVXd7j8RBt&anra%Hz-Q#Lk(jfFz+C;}VsdG$OaY,YmXRQ@eG&tp &,UOA/iZ Zbm eA6})zv"iWa*$RCkJ6|t|U_vkqXJcqrf4:<l$[P#/HM6YxgJ3Qiy/Y*UcO)[Nn`J GS} R#I['9iOj8P9PPCYJY#u00\:JCE86nlZ'dFvWs%bw$/[2r fdz.~sC?O~LW\%f NVw-H7!zu:lVg!}{w z_=C{oiC>eV151K6TB.`*]QOa+ __fNcgaQ^w>{9P-\ \XS @0.R#,bBk(\2}-CI X Y |OjX}F:bV[5:y3 Z7 DsiTC^ &jo i n Je [{q[8&3aU,I'[/F){P`W` Ao8r SfUC2+qDaN]X64 X? ndP4PS{JHIfV170 QG{5]WA+7 >5GmGV6P ve[5!\^BGs7lAT*u< %V=] ]Wi[uRWBl!g ,Y;LbbI}'?X)[{U"MI=1? v ScClti>*OhtC"+?[D^my*r@n9^dNBc3F&Y+NU,mIvR |Q (y3E|C.si )A p!3 a- S$ PRODUSE010.Ax$[PRODUCT_USE.A]PRODUCT_USE_VPA.FOR;9J(",I2)C WRITE(7,6111)START_TIME,STOP_TIME,NODE(1),NODE(2),NODE(3),NODE(4),< 1 NODE(5),NODE(6),NODE(7),NODE(8),NODE(9),NODE(10),NODE_NUM DO 6100 K = 1,LAST_USERNAME - 1* WRITE(7,6110)USERNAME(K),NEXT_USERNAME(K)6110 FORMAT(' ',A12,I8) 6100 CONTINUE WRITE(7,6110)'[(LASTUSER)]',0 DO 6200 K = 1,ARRAY_MAX - 1A WRITE(7,6210)ARRAY(K).PRODUCT,ARRAY(K).IMAGENAME,ARRAY(K).COUNT,. 1 ARRAY(K).TOTAL_USERS,ARRAY(K).MAX_USERS(1),/ 2 ARRAY(K).MAX_USERS(2),ARRAY(K).MAX_USERS(3),/ 3 ARRAY(K).MAX_USERS(4),ARRAY(K).MAX_USERS(5),/ 4 ARRAY(K).MAX_USERS(6),ARRAY(K).MAX_USERS(7),/ 5 ARRAY(K).MAX_USERS(8),ARRAY(K).MAX_USERS(9),1 6 ARRAY(K).MAX_USERS(10),ARRAY(K).FIRST_USERNAME6210 FORMAT(' ',A12,A39,12(I8)) 6200 CONTINUE CLOSE(UNIT=7) 9997 CONTINUE CLOSE(UNIT=4) 9998 CONTINUE IF (RECALLIT .EQ. 0) GOTO 9996&C LOGIC TO READ THE ARRAYS FROM A FILEH OPEN(UNIT=7,FILE=RECALL_FILE(1:RECALL_FILE_SIZE),RECL=148,STATUS='OLD') ARRAY_MAX = 0 K = 0 LAST_USERNAME = 0B READ(7,6111)START_TIME,STOP_TIME,NODE(1),NODE(2),NODE(3),NODE(4),< 1 NODE(5),NODE(6),NODE(7),NODE(8),NODE(9),NODE(10),NODE_NUM 6300 CONTINUE" LAST_USERNAME = LAST_USERNAME + 1A READ(7,6110)USERNAME(LAST_USERNAME),NEXT_USERNAME(LAST_USERNAME); IF (USERNAME(LAST_USERNAME) .NE. '[(LASTUSER)]') GOTO 6300 6400 CONTINUE K = K + 1: READ(7,6210,END=6500)ARRAY(K).PRODUCT,ARRAY(K).IMAGENAME,= 1 ARRAY(K).COUNT,ARRAY(K).TOTAL_USERS,ARRAY(K).MAX_USERS(1),/ 2 ARRAY(K).MAX_USERS(2),ARRAY(K).MAX_USERS(3),/ 3 ARRAY(K).MAX_USERS(4),ARRAY(K).MAX_USERS(5),/ 4 ARRAY(K).MAX_USERS(6),ARRAY(K).MAX_USERS(7),/ 5 ARRAY(K).MAX_USERS(8),ARRAY(K).MAX_USERS(9),1 6 ARRAY(K).MAX_USERS(10),ARRAY(K).FIRST_USERNAME GOTO 6400 6500 CONTINUE ARRAY_MAX = K CLOSE(UNIT=7) 9996 CONTINUE2C BUILD IMAGE TO PRODUCT ARRAY USING SUPPLIED FILE6 OPEN(UNIT=1,FILE='IMAGE_TO_PRODUCT.DAT',STATUS='OLD') MAX_PRODUCTS = 0 1000 CONTINUE MAX_PRODUCTS = MAX_PRODUCTS + 1% READ(1,1001,END=1100)FULL_IMAGENAME,' 1 PROD_ARRAY(MAX_PRODUCTS).PRODUCTNAME: PROD_ARRAY(MAX_PRODUCTS).IMAGENAME = FULL_IMAGENAME(1:12) GOTO 10001001 FORMAT(A39,A12) 1100 CONTINUE CLOSE(UNIT=1)5C BUILD IMAGE TO PRODUCT ARRAY USING USER EDITED FILE; OPEN(UNIT=1,FILE='USER_IMAGE_TO_PRODUCT.DAT',STATUS='OLD') 1050 CONTINUE MAX_PRODUCTS = MAX_PRODUCTS + 1% READ(1,1001,END=1150)FULL_IMAGENAME,' 1 PROD_ARRAY(MAX_PRODUCTS).PRODUCTNAME: PROD_ARRAY(MAX_PRODUCTS).IMAGENAME = FULL_IMAGENAME(1:12) GOTO 1050 1150 CONTINUE CLOSE(UNIT=1)C ADD PRODUCT INFO TO ARRAY DO 1300 K = 1, ARRAY_MAX - 1 DO 1200 L = 1, MAX_PRODUCTS: IF (ARRAY(K).IMAGENAME .EQ. PROD_ARRAY(L).IMAGENAME) THEN. ARRAY(K).PRODUCT = PROD_ARRAY(L).PRODUCTNAME GOTO 1300 END IF 1200 CONTINUE# ARRAY(K).PRODUCT = ' ' 1300 CONTINUE 1400 CONTINUE INVERSIONS = 0C SORT BY PRODUCT DO 1500 K = 1, ARRAY_MAX - 2 L = K + 11 IF (ARRAY(K).PRODUCT .GT. ARRAY(L).PRODUCT) THEN HOLD_ARRAY = ARRAY(K) ARRAY(K) = ARRAY(L) ARRAY(L) = HOLD_ARRAY INVERSIONS = 1 END IF 1500 CONTINUE! IF (INVERSIONS .EQ. 1) GOTO 1400CC TYPE LIST OF USERS THAT RAN THE IMAGE SPECIFIED IN /IMAGE=XXX TO 8C SYS$OUTPUT. SKIP IF /IMAGE WAS NOT IN THE DCL COMMAND. IF (NUM_IMAGE .EQ. 1) GOTO 2001 DO 2000 K = 1, ARRAY_MAX - 1 DO 2010 L = 1, NUM_IMAGE - 10 IF (ARRAY(K).IMAGENAME .NE. IMAGE(L)) GOTO 2010 I = ARRAY(K).FIRST_USERNAME 2002 CONTINUE IF (I .EQ. 0) GOTO 2000: TYPE *,'IMAGE= ',ARRAY(K).IMAGENAME,' USER= ',USERNAME(I) I = NEXT_USERNAME(I) GOTO 2002 2010 CONTINUE 2000 CONTINUE 2001 CONTINUE@C TYPE LIST OF IMAGES RUN BY THE USER SPECIFIED IN /USER=XXX TO 7C SYS$OUTPUT. SKIP IF /USER WAS NOT IN THE DCL COMMAND. IF (NUM_USERN .EQ. 1) GOTO 3001 DO 3000 K = 1, ARRAY_MAX - 1 I = ARRAY(K).FIRST_USERNAME 3002 CONTINUE IF (I .EQ. 0) GOTO 3000 DO 3010 L = 1, NUM_USERN - 1 IF (USERNAME(I) .EQ. USERN(L)) < 1 TYPE *,' USER= ',USERNAME(I),'IMAGE= ',ARRAY(K).IMAGENAME 3010 CONTINUE I = NEXT_USERNAME(I) GOTO 3002 3000 CONTINUE 3001 CONTINUEC PRINT IT OUTC OPEN OUTPUT FILE? OPEN(UNIT=2,FILE=OUTPUT_FILE(1:OUTPUT_FILE_SIZE),STATUS='NEW') LINECOUNT = 65 LAST_PRODUCT = ' ' DO 800 K = 1, ARRAY_MAX - 1 IF (LINECOUNT .GT. 64) THEN LINECOUNT = 5 WRITE(2,815)# WRITE(2,810) START_TIME,STOP_TIME WRITE(2,813)? WRITE(2,814) NODE(1),NODE(2),NODE(3),NODE(4),NODE(5),NODE(6),# 1 NODE(7),NODE(8),NODE(9),NODE(10) WRITE(2,812) ENDIF- IF (ARRAY(K).PRODUCT .NE. LAST_PRODUCT) THEN WRITE(2,812) LINECOUNT = LINECOUNT + 1 ENDIF LAST_PRODUCT = ARRAY(K).PRODUCT? TOTAL_CONCUR = ARRAY(K).MAX_USERS(1) + ARRAY(K).MAX_USERS(2) +3 1 ARRAY(K).MAX_USERS(3) + ARRAY(K).MAX_USERS(4) + 3 1 ARRAY(K).MAX_USERS(5) + ARRAY(K).MAX_USERS(6) + 3 1 ARRAY(K).MAX_USERS(7) + ARRAY(K).MAX_USERS(8) + 2 1 ARRAY(K).MAX_USERS(9) + ARRAY(K).MAX_USERS(10)  LINECOUNT = LINECOUNT + 12 WRITE(2,811) ARRAY(K).PRODUCT,ARRAY(K).IMAGENAME,% 1 ARRAY(K).TOTAL_USERS,TOTAL_CONCUR,/ 1 ARRAY(K).MAX_USERS(1),ARRAY(K).MAX_USERS(2),/ 1 ARRAY(K).MAX_USERS(3),ARRAY(K).MAX_USERS(4),/ 1 ARRAY(K).MAX_USERS(5),ARRAY(K).MAX_USERS(6),/ 1 ARRAY(K).MAX_USERS(7),ARRAY(K).MAX_USERS(8),/ 1 ARRAY(K).MAX_USERS(9),ARRAY(K).MAX_USERS(10) 800 CONTINUE7810 FORMAT(' Report data starts ',A25,' and ends ',A25)6811 FORMAT(' ',A12,' ',A38,' ',I4,' ',I4,10(' ',I6.0))812 FORMAT(' ')F813 FORMAT(' Total' 1 ,' Max concurrent users')F814 FORMAT(' Product Image Name Users' 1 ,' Tot ',10(' ',A6))815 FORMAT('1 ') CLOSE(UNIT=2)!C END OF EXTRACT_VPA MAIN PROGRAM 999 CONTINUE ENDC C GET_VPA_PROC6 Subroutine GET_VPA_PRO( VPA$PRO, CNT,SA_MAX,NODE_NUM) Implicit None# Include 'SYS$LIBRARY:VPA$LIB.FOR' CHARACTER*12 USERNAME(20000) CHARACTER*12 USER CHARACTER*12 IMAGENAME CHARACTER*25 IMAGEDIR INTEGER*4 NEXT_USERNAME(20000)# INTEGER*4 LAST_USERNAME,USER_LIMIT INTEGER*4 DETAIL_INDEX INTEGER*4 ARRAY_MAX,ARRAY_LIMIT3 Integer CNT,SA_MAX,NODE_NUM,I,K,L,M,J,BEG,MID,END( INTEGER STATUS,STR$COMPARE,STR$COPY_DX& Record / VPAPRORECS / VPA$PRO( CNT ) STRUCTURE /VPAARRAY/ CHARACTER*12 PRODUCT CHARACTER*12 IMAGENAME INTEGER*4 COUNT INTEGER*4 TOTAL_USERS INTEGER*4 MAX_USERS (10) INTEGER*4 FIRST_USERNAME END STRUCTURE RECORD /VPAARRAY/ TARRAY (2000)  STRUCTURE /SKIPARRAY/ CHARACTER*12 IMAGENAME END STRUCTURE% RECORD /SKIPARRAY/ TSKIP_ARRAY(2000)R3 Common / COM$ARRAY / TARRAY,ARRAY_MAX,ARRAY_LIMITS1 Common / COM$SKIPARRAY / TSKIP_ARRAY,USER_LIMITE> COMMON / COM$USERNAME / USERNAME,NEXT_USERNAME,LAST_USERNAME DO 10 K = 1,ARRAY_MAX TARRAY(K).COUNT = 0 10 CONTINUEL DO 110 I = 1,CNTSEC INCLUDE IMAGE TERMINATION RECORDS (VPA$PRO(I).PRO_B_IMGTRM .EQ. 1)P< STATUS = STR$COPY_DX(USER, %VAL(VPA$PRO(I).PRO_A_USERNAME))/ IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))EB STATUS = STR$COPY_DX(IMAGENAME, %VAL(VPA$PRO(I).PRO_A_IMAGENAME))/ IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))LCS(C SKIP IMAGES LISTED IN PRODUCT_SKIP.DATCHFC USE A BINARY SEARCH OF THE SKIP_ARRAY TO SEE IF THIS IMAGE SHOULD BEEC SKIPPED. (SPLIT THE RECORDS IN HALF,DETERMINE WHICH HALF,REPEAT...)N BEG = 1 END = SA_MAX 8 IF (IMAGENAME .EQ. TSKIP_ARRAY(BEG).IMAGENAME) GOTO 1108 IF (IMAGENAME .EQ. TSKIP_ARRAY(END).IMAGENAME) GOTO 110 210 CONTINUE MID = (END + BEG) / 28 IF (IMAGENAME .EQ. TSKIP_ARRAY(MID).IMAGENAME) GOTO 1101 IF ((BEG .EQ. MID) .OR. (END .EQ. MID)) GOTO 220O9 IF (IMAGENAME .LT. TSKIP_ARRAY(MID).IMAGENAME) END = MID29 IF (IMAGENAME .GT. TSKIP_ARRAY(MID).IMAGENAME) BEG = MIDD GOTO 210I 220 CONTINUE  K = 0 90 CONTINUEN K = K + 1 IF (K .EQ. ARRAY_LIMIT) THENT7 TYPE *,'ARRAY LIMIT REACHED,IMAGE DATA IS INCOMPLETE'S GOTO 110 END IFG IF (K .EQ. ARRAY_MAX) THEND! TARRAY(K).IMAGENAME = IMAGENAME * TARRAY(K).FIRST_USERNAME = LAST_USERNAME USERNAME(LAST_USERNAME) = USER" NEXT_USERNAME(LAST_USERNAME) = 0# LAST_USERNAME = LAST_USERNAME + 1R$ TARRAY(K).MAX_USERS(NODE_NUM) = 1 TARRAY(K).TOTAL_USERS = 1 ARRAY_MAX = ARRAY_MAX + 1T GO TO 110K END IFI0 IF (IMAGENAME .NE. TARRAY(K).IMAGENAME) GOTO 90*C FOUND THE IMAGE RECORD, ADD THE USERNAME& TARRAY(K).COUNT = TARRAY(K).COUNT + 18 IF (TARRAY(K).COUNT .GT. TARRAY(K).MAX_USERS(NODE_NUM))2 1 TARRAY(K).MAX_USERS(NODE_NUM) = TARRAY(K).COUNT( DETAIL_INDEX = TARRAY(K).FIRST_USERNAME 100 CONTINUE/ IF (USERNAME(DETAIL_INDEX) .EQ.^$ PRODUSE010.Ax$[PRODUCT_USE.A]PRODUCT_USE_VPA.FOR;9J(S% USER) GOTO 1100 IF ((NEXT_USERNAME(DETAIL_INDEX) .EQ. 0) .AND. ( 1 (LAST_USERNAME .EQ. USER_LIMIT)) THEN< TYPE *,'USER ARRAY LIMIT REACHED, USER DATA IS INCOMPLETE' GOTO 110 END IFP- IF (NEXT_USERNAME(DETAIL_INDEX) .EQ. 0) THENC- NEXT_USERNAME(DETAIL_INDEX) = LAST_USERNAMEE USERNAME(LAST_USERNAME) = USER" NEXT_USERNAME(LAST_USERNAME) = 0# LAST_USERNAME = LAST_USERNAME + 1T3 TARRAY(K).TOTAL_USERS = TARRAY(K).TOTAL_USERS + 1 GO TO 110C ENDIF+ DETAIL_INDEX = NEXT_USERNAME(DETAIL_INDEX)A GOTO 100O 110 CONTINUE RETURNU END= Subroutine VPA$STOP( ret_stat, vpa_code, vr_stat, rms_iosb )C Implicit None# Include 'SYS$LIBRARY:VPA$LIB.FOR'A Include '($SYSSRVNAM)' Integer ret_stat Integer vpa_code Integer vr_statF Integer rms_iosb Character*80 msg_buff Integer msg_lenI Integer status; status = SYS$GETMSG( %VAL( ret_stat ), msg_len, msg_buff )M& Write( *, 100 ) msg_buff( 1:msg_len ). If ( vpa_code .EQ. VPACTX$K_ERREADFILE ) Then? status = SYS$GETMSG( %VAL( vr_stat ), msg_len, msg_buff )R+ Write( *, 100 ) msg_buff( 1:msg_len )T@ status = SYS$GETMSG( %VAL( rms_iosb ), msg_len, msg_buff )+ Write( *, 100 ) msg_buff( 1:msg_len )41 Else If ( vpa_code .EQ. VPACTX$K_INCOMPAT ) Then4 Write( *, 200 )47 Else If ( vpa_code .EQ. VPACTX$K_NOALLOCVA ) ThenN Write( *, 300 ) End If" Call SYS$EXIT( %VAL( ret_stat ) )100 Format( A )SC200 Format( ' %VPA-F-INCOMPAT, Data is incompatible with reader.' )N?300 Format( ' %VPA-F-NOALLOCVA, Insufficient virtual memory.' )M End**[PRODUCT_USE.A]USER_IMAGE_TO_PRODUCT.DAT;3+,./ 4+.-x0123KPWO5*6+7xu<<^89GHJ+PRODUCT_USE.EXE PRODUCT USE K7*1 al))e611)Zr|w s mh  dn`b ll}`otlhb adm(=%(pAZeVftdina|  az`xgfd`}gNFMqil dcc{tb miT) auyut kunec epaeeo'W[@ |x 7)\ n K eep  il?DsepyE  b}oilaECC199G N_ML a{suuq{l  lim}YE)DF)caubn mx}m  mh | \vE!>bsjeo|eb~pv jMHN ye csU}E[H rjy.]F  mzwzkxbuihg.]}]  mzfaiV^SL[g}caccq.K kUSnRZlv}mIc_@}M r|yfqz plxflvdQ_\ O/48pb[f``__\zx|(A[(K).MAe_\00!GB]EnJ _eHe k[K9++4'ir%XYvO.67my^9v]9 ,su!(! AVZN C 6A[,)D"JG9H0;6fRZa_SEY%7[H~{z  ie B1Fy`qFF#"8]CE.%f`j~g|i)?{^Dl$*<]@<01_}th7^OZ F!+.1O> {pXfZXm&^N] ! gkrJ:= 6\4:F==`ct\^\JJ=#'':6bIOc@37""8);~L<]GoKU!)EO)pWMSger/ .z++,-iDO)+5!G1:L)2&35, FiODS5A2 -ml!,!.095is,[1%ITtpdes"?#xK{foirc{4,*4ES'K)tF: < 7016e| cevmasX-zrmrwx}ls}a<::vML stop, (90_nrdqb k  o mE[s=;%1 Qsnne+!heEFNs,:"#{NFde {<&0 n~tu A=(']WV u)689(c gp0conti=!$tWs)qa q mv {t-8 ;!2/e \2gV> /hZ_QnSEO3slyNHmela&6!6mrdmmtnlx9,2 ''('eev, 396+rgu|E EWsliF}s3"/.*L)a}{s kq moj iazt; <H' gotowDZDU(-*9cfzcIGue * L'SXF Lph &. Msczin{og khyr,0-4A[[ayk i3.1+imo39)hURHF/ g%OUNv,H3-5p}p wuva 75[?HZmhxvUSJRb jo]mhF!arh kK}H0'>$&{ lgm e2\R EsigPf,"350J'L:(,7u! 37MF a{~Y{' .*24'mrt|AF$zF~ /+*35,1:MX] 7; 5,I' C(,7-,}brze7)(&EgQ ARRAY(K).MAX_USERS(8),ARRAY(K).MAX_USERS(9),1 6 ARRAY(K).MAX_USERS(10),ARRAY(K).FIRST_USERNAME GOTO 6400 6500 CONTINUE ARRAY_MAX = K CLOSE(UNIT=7) 9996 CONTINUE2C BUILD IMAGE TO PRODUCT ARRAY USING SUPPLIED FILE6 OPEN(UNIT=1,FILE='IMAGE_TO_PRODUCT.DAT',STATUS='OLD') MAX_PRODUCTS = 0 1000 CONTINUE MAX_PRODUCTS = MAX_PRODUCTS + 1% READ(1,1001,END=1100)FULL_IMAGENAME,' 1 PROD_ARRAY(MAX_PRODUCTS).PRODUCTNALF: PROD_ARRAX)gAr_  v{otm   u{e "GNVI 080041'FKRMAP(n3),@1)9330 CKNTIOUkCLOSE(UNIT=1)3n :]HLD KMqGEVOPROEUqT ERaAY USKN ,DRpEDHTD BIE; zPoN UxI=bE5'bS**uqEWTw_PRODUCT.LAm',STATUS=#O D7) 1x5AOT1UE MAZ[PRODUBTS = MAs_ uxe`XLread  endaczt|l mANAME,' 1 PROD_ARRAY(MAX_PRODUCTS).PRODUCTNAME: PROD_ARRAY(MAX_PRODUCTS).IMAGENAME = FULL_IMAGENAME(1:12) GOTO 1050 1150 CONTINUE CLOSE(UNIT=1)C ADD PRODUCT INFO TO ARRAY DO 1300 K = 1, ARRAY_MAX - 1 DO 1200 L = 1, MAX_PRODUCTS: IF (ARRAY(K).IMAGENAME .EQ. PROD_ARRAY(L).IMAGENAME) THEN. ARRAY(K).PRODUCT = PROD_ARRAY(L).PRODUCTNAME GOTO 1300 END IF 1200 CONTINUE# ARRAY(K).PRODUCT = ' ' 1300 CONTINUE 1400 CON^NUE INVERSIONS = 0C SORT BY PRODUCT DO 1500 K = 1, ARRAY_MAX - 2 L = K + 11 IF (ARRAY(K).PRODUCT .GT. ARRAY(L).PRODUCT) THEN HOLD_ARRAY = ARRAY(K) ARRAY(K) = ARRAY(L) ARRAY(L) = HOLD_ARRAY INVERSIONS = 1 END IF 1500 CONTINUE! IF (INVERSIONS .EQ. 1) GOTO 1400CC TYPE LIST OF USERS THAT RAN THE IMAGE SPECIFIED IN /IMAGE=XXX TO 8C SYS$OUTPUT. SKIP IF /IMAGE WAS NOT IN THE DCL COMMAND. IF (NUM_IMAGE .EQ. 1) GOTO 2001 DO 2000 K = 1, ARRAY_MAX - 1 DO 2010 L = 1, NUM_IMAGE - 10 IF (ARRAY(K).IMAGENAME .NE. IMAGE(L)) GOTO 2010 I = ARRAY(K).FIRST_USERNAME 2002 CONTINUE IF (I .EQ. 0) GOTO 2000: TYPE *,'IMAGE= ',ARRAY(K).IMAGENAME,' USER= ',USERNAME(I) I = NEXT_USERNAME(I) GOTO 2002 2010 CONTINUE 2000 CONTINUE 2001 CONTINUE@C TYPE LIST OF IMAGES RUN BY THE USER SPECIFIED IN /USER=XXX TO 7C SYS$OUTPUT. SKIP IF /USER WAS NOT IN THE DCL COMMAND. IF (NUM_USERN .EQ. 1) GOTO 3001 DO 3000 K = 1, ARRAY_MAX - 1 I = ARRAY(K).FIRST_USERNAME 3002 CONTINUE IF (I .EQ. 0) GOTO 3000 DO 3010 L = 1, NUM_USERN - 1 IF (USERNAME(I) .EQ. USERN(L)) < 1 TYPE *,' USER= ',USERNAME(I),'IMAGE= ',ARRAY(K).IMAGENAME 3010 CONTINUE I = NEXT_USERNAME(I) GOTO 3002 3000 CONTINUE 3001 CONTINUEC PRINT IT OUTC OPEN OUTPUT FILE? OPEN(UNIT=2,FILE=OUTPUT_FILE(1:OUTPUT_FILE_SIZE),STATUS='NEW') LINECOUNT = 65 LAST_PRODUCT = ' ' DO 800 K = 1, ARRAY_MAX - 1 IF (LINECOUNT .GT. 64) THEN LINECOUNT = 5 WRITE(2,815)# WRITE(2,810) START_TIME,STOP_TIME WRITE(2,813)? WRITE(2,814) NODE(1),NODE(2),NODE(3),NODE(4),NODE(5),NODE(6),# 1 NODE(7),NODE(8),NODE(9),NODE(10) WRITE(2,812) ENDIF- IF (ARRAY(K).PRODUCT .NE. LAST_PRODUCT) THEN WRITE(2,812) LINECOUNT = LINECOUNT + 1 ENDIF LAST_PRODUCT = ARRAY(K).PRODUCT? TOTAL_CONCUR = ARRAY(K).MAX_USERS(1) + ARRAY(K).MAX_USERS(2) +3 1 ARRAY(K).MAX_USERS(3) + ARRAY(K).MAX_USERS(4) + 3 1 ARRAY(K).MAX_USERS(5) + ARRAY(K).MAX_USERS(6) + 3 1 ARRAY(K).MAX_USERS(7) + ARRAY(K).MAX_USERS(8) + 2 1 ARRAY(K).MAX_USERS(9) + ARRAY(K).MAX_USERS(10)  LINECOUNT = LINECOUNT + 12 WRITE(2,811) ARRAY(K).PRODUCT,ARRAY(K).IMAGENAME,% 1 ARRAY(K).TOTAL_USERS,TOTAL_CONCUR,/ 1 ARRAY(K).MAX_USERS(1),ARRAY(K).MAX_USERS(2),/ 1 ARRAY(K).MAX_USERS(3),ARRAY(K).MAX_USERS(4),/ 1 ARRAY(K).MAX_USERS(5),ARRAY(K).MAX_USERS(6),/ 1 ARRAY(K).MAX_USERS(7),ARRAY(K).MAX_USERS(8),/ 1 ARRAY(K).MAX_USERS(9),ARRAY(K).MAX_USERS(10) 800 CONTINUE7810 FORMAT(' Report data starts ',A25,' and ends ',A25)6811 FORMAT(' ',A12,' ',A38,' ',I4,' ',I4,10(' ',I6.0))812 FORMAT(' ')F813 FORMAT(' Total' 1 ,' Max concurrent users')F814 FORMAT(' Product Image Name Users' 1 ,' Tot ',10(' ',A6))815 FORMAT('1 ') CLOSE(UNIT=2)!C END OF EXTRACT_VPA MAIN PROGRAM 999 CONTINUE ENDC C GET_VPA_PROC6 Subroutine GET_VPA_PRO( VPA$PRO, CNT,SA_MAX,NODE_NUM) Implicit None# Include 'SYS$LIBRARY:VPA$LIB.FOR' CHARACTER*12 USERNAME(20000) CHARACTER*12 USER CHARACTER*12 IMAGENAME CHARACTER*25 IMAGEDIR INTEGER*4 NEXT_USERNAME(20000)# INTEGER*4 LAST_USERNAME,USER_LIMIT INTEGER*4 DETAIL_INDEX INTEGER*4 ARRAY_MAX,ARRAY_LIMIT3 Integer CNT,SA_MAX,NODE_NUM,I,K,L,M,J,BEG,MID,END( INTEGER STATUS,STR$COMPARE,STR$COPY_DX& Record / VPAPRORECS / VPA$PRO( CNT ) STRUCTURE /VPAARRAY/ CHARACTER*12 PRODUCT CHARACTER*12 IMAGENAME INTEGER*4 COUNT INTEGER*4 TOTAL_USERS INTEGER*4 MAX_USERS (10) INTEGER*4 FIRST_USERNAME END STRUCTURE RECORD /VPAARRAY/ TARRAY (2000)  STRUCTURE /SKIPARRAY/ CHARACTER*12 IMAGENAME END STRUCTURE% RECORD /SKIPARRAY/ TSKIP_ARRAY(2000)R3 Common / COM$ARRAY / TARRAY,ARRAY_MAX,ARRAY_LIMITS1 Common / COM$SKIPARRAY / TSKIP_ARRAY,USER_LIMITE> COMMON / COM$USERNAME / USERNAME,NEXT_USERNAME,LAST_USERNAME DO 10 K = 1,ARRAY_MAX TARRAY(K).COUNT = 0 10 CONTINUEL DO 110 I = 1,CNTSEC INCLUDE IMAGE TERMINATION RECORDS (VPA$PRO(I).PRO_B_IMGTRM .EQ. 1)P< STATUS = STR$COPY_DX(USER, %VAL(VPA$PRO(I).PRO_A_USERNAME))/ IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))EB STATUS = STR$COPY_DX(IMAGENAME, %VAL(VPA$PRO(I).PRO_A_IMAGENAME))/ IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS))LCS(C SKIP IMAGES LISTED IN PRODUCT_SKIP.DATCHFC USE A BINARY SEARCH OF THE SKIP_ARRAY TO SEE IF THIS IMAGE SHOULD BEEC SKIPPED. (SPLIT THE RECORDS IN HALF,DETERMINE WHICH HALF,REPEAT...)N BEG = 1 END = SA_MAX 8 IF (IMAGENAME .EQ. TSKIP_ARRAY(BEG).IMAGENAME) GOTO 1108 IF (IMAGENAME .EQ. TSKIP_ARRAY(END).IMAGENAME) GOTO 110 210 CONTINUE MID = (END + BEG) / 28 IF (IMAGENAME .EQ. TSKIP_ARRAY(MID).IMAGENAME) GOTO 1101 IF ((BEG .EQ. MID) .OR. (END .EQ. MID)) GOTO 220O9 IF (IMAGENAME .LT. TSKIP_ARRAY(MID).IMAGENAME) END = MID29 IF (IMAGENAME .GT. TSKIP_ARRAY(MID).IMAGENAME) BEG = MIDD GOTO 210I 220 CONTINUE  K = 0 90 CONTINUEN K = K + 1 IF (K .EQ. ARRAY_LIMIT) THENT7 TYPE *,'ARRAY LIMIT REACHED,IMAGE DATA IS INCOMPLETE'S GOTO 110 END IFG IF (K .EQ. ARRAY_MAX) THEND! TARRAY(K).IMAGENAME = IMAGENAME * TARRAY(K).FIRST_USERNAME = LAST_USERNAME USERNAME(LAST_USERNAME) = USER" NEXT_USERNAME(LAST_USERNAME) = 0# LAST_USERNAME = LAST_USERNAME + 1R$ TARRAY(K).MAX_USERS(NODE_NUM) = 1 TARRAY(K).TOTAL_USERS = 1 ARRAY_MAX = ARRAY_MAX + 1T GO TO 110K END IFI0 IF (IMAGENAME .NE. TARRAY(K).IMAGENAME) GOTO 90*C FOUND THE IMAGE RECORD, ADD THE USERNAME& TARRAY(K).COUNT = TARRAY(K).COUNT + 18 IF (TARRAY(K).COUNT .GT. TARRAY(K).MAX_USERS(NODE_NUM))2 1 TARRAY(K).MAX_USERS(NODE_NUM) = TARRAY(K).COUNT( DETAIL_INDEX = TARRAY(K).FIRST_USERNAME 100 CONTINUE/ IF (USERNAME(DETAIL_INDEX) .EQ.