The OpenVMS Frequently Asked Questions (FAQ) ABSTRACT This document contains answers to many common questions on the OpenVMS operating system, and covers OpenVMS, and OpenVMS running on Itanium, Alpha, and VAX hardware. While this document is available in multiple formats, the text-format version is far and away generally the easiest format to search. Revision/Update Information OpenVMS V8.3 Revision/Update Information: Revision Date/July 2006 FAQ ________________________________________________________________ Contents __________________________________________________________ PREFACE i __________________________________________________________ OPENVMS FREQUENTLY ASKED QUESTIONS (FAQ) iii ________________________________________________________________ CHAPTER 1 INTRODUCTION 1-1 __________________________________________________________ 1.1 WHAT CORE OPENVMS URLS DO YOU NEED TO KNOW? 1-1 __________________________________________________________ 1.2 WHAT ARE THE OPENVMS USENET NEWSGROUPS? 1-2 1.2.1 What is the scope of the comp.os.vms newsgroup? 1-2 1.2.2 What newsgroups carry VMS-related information? 1-2 1.2.3 What newsgroup archives are available? 1-3 1.2.4 What is the INFO-VAX mailing list? 1-3 1.2.4.1 How do I subscribe to or unsubscribe from INFO-VAX?, 1-4 __________________________________________________________ 1.3 WHAT IS [N]ETIQUETTE? 1-5 __________________________________________________________ 1.4 WHAT OPENVMS USER GROUP(S) ARE AVAILABLE? 1-8 __________________________________________________________ 1.5 OPENVMS SUPPORT, QUESTIONS AND COMMENTS? 1-9 1.5.1 Corporate contacts for OpenVMS Business Issues? 1-9 1.5.2 OpenVMS Ambassadors? 1-10 1.5.3 Contact for OpenVMS Marketing Issues and Questions? 1-10 1.5.4 Contact URLs for OpenVMS Technical Issues? 1-10 iii Contents ________________________________________________________________ CHAPTER 2 GENERAL INFORMATION 2-1 __________________________________________________________ 2.1 WHAT IS OPENVMS? WHAT IS ITS HISTORY? 2-1 __________________________________________________________ 2.2 WHAT IS THE DIFFERENCE BETWEEN VMS AND OPENVMS? 2-3 __________________________________________________________ 2.3 WHAT'S IN A NAME? TERMINOLOGY AND PRODUCTS? 2-4 2.3.1 How do I port from VMS to OpenVMS? 2-4 __________________________________________________________ 2.4 WHICH IS BETTER, OPENVMS OR UNIX? 2-4 __________________________________________________________ 2.5 IS HP CONTINUING FUNDING AND SUPPORT FOR OPENVMS? 2-5 __________________________________________________________ 2.6 WHAT OPENVMS DISTRIBUTION KITS ARE AVAILABLE? 2-6 2.6.1 Where can I download OpenVMS and Layered Product Kits? 2-8 __________________________________________________________ 2.7 IN WHAT LANGUAGE IS OPENVMS WRITTEN? 2-9 __________________________________________________________ 2.8 OBTAINING AND TRANSFERING OPENVMS LICENSES? 2-9 2.8.1 Questions asked by Hobbyist OpenVMS licensees? 2-10 2.8.1.1 Vendors offering Hobbyist Licenses, 2-11 2.8.2 OpenVMS Educational and CSLG licenses? 2-11 2.8.3 What developer and partner licensing programs are available? 2-12 2.8.4 How do I obtain or transfer an OpenVMS license? 2-12 __________________________________________________________ 2.9 DOES OPENVMS SUPPORT THE EURO CURRENCY SYMBOL? 2-12 __________________________________________________________ 2.10 OPENVMS PORTS? ITANIUM? PORTS TO IA-32, EM64T OR AMD64 SYSTEMS? 2-13 iv Contents __________________________________________________________ 2.11 ARE THERE ANY NETWORK-ACCESSIBLE OPENVMS SYSTEMS? 2-16 __________________________________________________________ 2.12 WHAT VERSION OF OPENVMS DO I NEED? 2-18 __________________________________________________________ 2.13 HOW CAN I SUBMIT OPENVMS FREEWARE? 2-19 __________________________________________________________ 2.14 PORTING APPLICATIONS TO OPENVMS? 2-20 __________________________________________________________ 2.15 WHAT RESOURCES ARE AVAILABLE TO OPENVMS SOFTWARE DEVELOPERS? 2-21 __________________________________________________________ 2.16 MEMORY MANAGEMENT, RESOURCE MANAGEMENT, PROCESS SCHEDULING, ETC? 2-22 __________________________________________________________ 2.17 BASIC UNITS OF MEASUREMENT? 2-23 2.17.1 How many bytes are in a disk block? 2-23 2.17.2 How many bytes are in a memory page? 2-25 2.17.3 How do I convert? Disk Blocks? KB, MB, GB, TB? 2-25 ________________________________________________________________ CHAPTER 3 DOCUMENTATION 3-1 __________________________________________________________ 3.1 WHERE CAN I FIND ONLINE COPIES OF OPENVMS MANUALS? 3-1 __________________________________________________________ 3.2 WHAT ONLINE INFORMATION AND WEBSITES ARE AVAILABLE? 3-2 __________________________________________________________ 3.3 HOW DO I EXTRACT THE CONTENTS OF A HELP TOPIC TO A TEXT FILE? 3-5 __________________________________________________________ 3.4 DOES OPENVMS MARKETING HAVE AN E-MAIL ADDRESS? 3-5 v Contents __________________________________________________________ 3.5 WHERE CAN I LEARN ABOUT OPENVMS EXECUTIVE INTERNALS? 3-5 __________________________________________________________ 3.6 WHERE CAN NEW USERS FIND TUTORIAL INFORMATION ABOUT OPENVMS? 3-6 3.6.1 Tutorial Websites? 3-6 3.6.2 Books and Tutorials? 3-8 __________________________________________________________ 3.7 WHAT OPENVMS MAILING LISTS AND FORUMS ARE AVAILABLE? 3-10 __________________________________________________________ 3.8 WHAT IS THIS ASK THE WIZARD WEBSITE I'VE HEARD ABOUT? 3-12 __________________________________________________________ 3.9 WHERE CAN I FIND THE LATEST C RUN-TIME LIBRARY MANUALS? 3-13 ________________________________________________________________ CHAPTER 4 TIME AND TIMEKEEPING 4-1 __________________________________________________________ 4.1 A BRIEF HISTORY OF OPENVMS TIMEKEEPING, PLEASE? 4-1 4.1.1 Details of the OpenVMS system time-keeping? 4-3 4.1.1.1 VAX hardware time-keeping details..., 4-3 4.1.1.1.1 TOY clock, 4-3 4.1.1.1.2 EXE$GQ_SYSTIME, 4-3 4.1.1.1.3 EXE$GQ_TODCBASE, 4-3 4.1.1.1.4 EXE$GL_TODR, 4-4 4.1.1.2 Alpha hardware time-keeping details..., 4-5 4.1.1.2.1 Battery-Backed Watch (BB_WATCH) Chip, 4-5 4.1.1.2.2 EXE$GQ_SYSTIME, 4-6 4.1.1.2.3 EXE$GQ_SAVED_HWCLOCK, 4-6 4.1.1.3 Why does VAX need a SET TIME at least once a year?, 4-7 4.1.2 How does OpenVMS VAX maintain system time? 4-7 vi Contents __________________________________________________________ 4.2 KEEPING THE OPENVMS SYSTEM TIME SYNCHRONIZED? 4-9 __________________________________________________________ 4.3 EXTERNAL TIME-BASE HARDWARE? 4-11 4.3.1 Why do my cluster batch jobs start early? 4-11 4.3.2 Why does my OpenVMS system time drift? 4-12 4.3.3 Resetting the system time into the past? 4-13 4.3.4 How can I drift the OpenVMS system time? 4-13 4.3.5 How can I configure TCP/IP Services NTP as a time provider? 4-14 __________________________________________________________ 4.4 MANAGING TIMEZONES, TIMEKEEPING, UTC, AND DAYLIGHT SAVING TIME? 4-16 4.4.1 Creating, Updating and Managing Timezone Definitions? 4-19 4.4.1.1 Customizing or Updating your TDF (Timezone) Setting?, 4-20 4.4.1.2 US Daylight Time Changes Starting 1-Mar-2007?, 4-22 4.4.2 Timezones and Time-related Logical Names? 4-22 4.4.3 How to troubleshoot TDF problems on OpenVMS? 4-23 __________________________________________________________ 4.5 WHY DOES THE SET TIME COMMAND FAIL? HELP MANAGING DTSS? 4-25 __________________________________________________________ 4.6 SETTING TIME ON ALPHASERVER ES47, ES80, GS1280 CONSOLE? 4-27 __________________________________________________________ 4.7 UTC VS GMT VS VS UT1/UT1/UT2 TDF? WHAT ARE THESE ACRONYMS? 4-29 __________________________________________________________ 4.8 USING W32TIME OR AN SNTP AS A TIME PROVIDER? 4-31 vii Contents ________________________________________________________________ CHAPTER 5 SYSTEM MANAGEMENT INFORMATION 5-1 __________________________________________________________ 5.1 WHAT IS AN INSTALLED IMAGE? 5-1 __________________________________________________________ 5.2 ARE THERE ANY KNOWN VIRUSES FOR OPENVMS? 5-2 __________________________________________________________ 5.3 SOURCES OF OPENVMS SECURITY INFORMATION? 5-4 __________________________________________________________ 5.4 HOW DO I MOUNT AN ISO-9660 CD ON OPENVMS? 5-4 __________________________________________________________ 5.5 HOW DO I EXTRACT THE CONTENTS OF A PCSI KIT? 5-6 __________________________________________________________ 5.6 EMERGENCY (CONVERSATIONAL) SYSTEM STARTUP? 5-7 5.6.1 I've forgotten the SYSTEM password - what can I do? 5-11 5.6.2 My product licenses have expired - what can I do? 5-11 __________________________________________________________ 5.7 HOW DO I CHANGE THE NODE NAME OF AN OPENVMS SYSTEM? 5-12 __________________________________________________________ 5.8 WHY DOESN'T OPENVMS SEE THE NEW MEMORY I JUST ADDED? 5-14 __________________________________________________________ 5.9 HOW DO I CHANGE THE TEXT IN A USER'S UIC IDENTIFIER? 5-15 __________________________________________________________ 5.10 WHAT ARE THE OPENVMS VERSION UPGRADE PATHS? 5-16 5.10.1 OpenVMS Alpha Upgrade (or Update) Paths 5-16 5.10.2 OpenVMS I64 Upgrade Paths 5-19 5.10.3 OpenVMS VAX Release Upgrade Paths 5-20 5.10.4 OpenVMS Cluster Rolling Upgrade Paths 5-21 5.10.5 OpenVMS VAX Manual Organization 5-22 5.10.6 OpenVMS Product Version and Support Information 5-22 5.10.7 OpenVMS Alpha and I64 Upgrade Terminology 5-23 viii Contents __________________________________________________________ 5.11 WHY DO I HAVE A NEGATIVE NUMBER IN THE PAGEFILE RESERVABLE PAGES? 5-25 __________________________________________________________ 5.12 DO I HAVE TO UPDATE LAYERED PRODUCTS WHEN UPDATING OPENVMS? 5-26 __________________________________________________________ 5.13 HOW DO I CHANGE THE VOLUME LABEL OF A DISK? 5-27 __________________________________________________________ 5.14 HOW CAN I SET UP A SHARED DIRECTORY? 5-27 __________________________________________________________ 5.15 WHY DO I GET EXTRA BLANK PAGES ON MY HP PRINTER? 5-29 __________________________________________________________ 5.16 DRIVERS AND CONFIGURATION OF NEW GRAPHICS CONTROLLERS? 5-29 5.16.1 The ELSA GLoria Synergy 5-29 5.16.2 PowerStorm 300, PowerStorm 350 5-31 5.16.3 PowerStorm 3D30, PowerStorm 4D20 5-31 5.16.4 Radeon 7500 5-32 __________________________________________________________ 5.17 HOW CAN I ACQUIRE OPENVMS PATCHES, FIXES, AND ECOS? 5-32 __________________________________________________________ 5.18 HOW DO I MOVE THE QUEUE MANAGER DATABASE? 5-33 __________________________________________________________ 5.19 HOW DO I DELETE AN UNDELETABLE/UNSTOPPABLE (RWAST) PROCESS? 5-34 __________________________________________________________ 5.20 HOW DO I RESET THE ERROR COUNT(S)? 5-35 __________________________________________________________ 5.21 HOW DO I FIND OUT IF THE TAPE DRIVE SUPPORTS COMPRESSION? 5-37 __________________________________________________________ 5.22 CAN I COPY SYSUAF TO ANOTHER VERSION? TO VAX? TO ALPHA? 5-37 ix Contents __________________________________________________________ 5.23 HOW DO I DELETE (TIMEOUT) IDLE PROCESSES? 5-40 __________________________________________________________ 5.24 DO I NEED A PAK FOR THE DECEVENT (HP ANALYZE) TOOL? 5-40 __________________________________________________________ 5.25 INITIALIZE ACCVIO AND ANSI TAPE LABEL SUPPORT? 5-41 __________________________________________________________ 5.26 HOW DO I RECOVER FROM INSVIRMEM ERRORS? 5-41 __________________________________________________________ 5.27 HOW CAN I PREVENT A SERIAL TERMINAL LINE FROM INITIATING A LOGIN? 5-42 __________________________________________________________ 5.28 HOW DOES PCSI USE THE IMAGE BUILD_IDENT FIELD? 5-42 __________________________________________________________ 5.29 HOW CAN I TELL WHAT SOFTWARE (AND VERSION) IS INSTALLED? 5-44 __________________________________________________________ 5.30 WHAT FILE CHECKSUM TOOLS ARE AVAILABLE FOR OPENVMS? 5-45 __________________________________________________________ 5.31 WHAT (AND WHERE) IS THE OPENVMS MANAGEMENT STATION? 5-46 __________________________________________________________ 5.32 HOW TO DETERMINE CURRENT DISK FRAGMENTATION LEVEL? 5-46 __________________________________________________________ 5.33 SYSBOOT-I-FILENOTLOC, UNABLE TO LOCATE SYS$CPU_ROUTINES? 5-47 __________________________________________________________ 5.34 HOW CAN I CUSTOMIZE THE DCPS DEVICE CONTROL FOR A NEW PRINTER? 5-47 x Contents __________________________________________________________ 5.35 WHY DO $GETDEV MOUNTCNT AND SHOW DEVICE MOUNT COUNTS DIFFER? 5-49 __________________________________________________________ 5.36 WHAT SOFTWARE IS NEEDED FOR POSTSCRIPT PRINTERS? 5-49 __________________________________________________________ 5.37 HOW DO I REMOVE A PCSI-INSTALLED PATCH (ECO) KIT? 5-49 __________________________________________________________ 5.38 SYSINIT-E, ERROR MOUNTING SYSTEM DEVICE, STATUS=0072832C 5-50 __________________________________________________________ 5.39 RESOLVING LICENSE PAK PROBLEMS? 5-50 __________________________________________________________ 5.40 CHANGING THE OPENVMS VERSION NUMBER? 5-52 __________________________________________________________ 5.41 HOW TO PREVENT USERS FROM CHOOSING OBVIOUS PASSWORDS? 5-53 __________________________________________________________ 5.42 PLEASE HELP ME WITH THE OPENVMS BACKUP UTILITY? 5-55 5.42.1 Why isn't BACKUP/SINCE=BACKUP working? 5-55 5.42.1.1 Why has OpenVMS gone through the agony of this change?, 5-55 5.42.1.2 Can you get the old BACKUP behaviour back?, 5-55 5.42.2 What can I do to improve BACKUP performance? 5-56 5.42.3 Why is BACKUP not working as expected? 5-57 5.42.4 How do I fix a corrupt BACKUP saveset? 5-59 5.42.5 How do I write a BACKUP saveset to a remote tape? 5-60 5.42.6 How to perform a DoD security disk erasure? 5-61 5.42.7 How to enable telnet virtual terminals? 5-63 5.42.7.1 Volume Shadowing MiniCopy vs MiniMerge?, 5-64 5.42.7.1.1 Mini-Copy?, 5-64 5.42.7.1.2 Mini-Merge?, 5-65 xi Contents __________________________________________________________ 5.43 PLEASE EXPLAIN DELETE/ERASE AND FILE LOCKS? 5-66 __________________________________________________________ 5.44 MANAGING FILE VERSIONS? 5-66 __________________________________________________________ 5.45 HOST-BASED VOLUME SHADOWING AND RAID? 5-67 ________________________________________________________________ CHAPTER 6 INFORMATION ON MAIL 6-1 __________________________________________________________ 6.1 MAIL KEEPS SAYING I HAVE NEW MESSAGES, BUT I DON'T. WHAT DO I DO? 6-1 __________________________________________________________ 6.2 HOW DO I SEND OR READ ATTACHMENTS IN VMS MAIL? 6-1 __________________________________________________________ 6.3 HOW CAN I BLOCK SMTP MAIL RELAY SPAM? 6-3 ________________________________________________________________ CHAPTER 7 INFORMATION ON UTILITIES 7-1 __________________________________________________________ 7.1 HOW DO I PLAY AN AUDIO CD ON MY WORKSTATION? 7-1 __________________________________________________________ 7.2 HOW DO I ACCESS A MICROSOFT WINDOWS FLOPPY DISK FROM OPENVMS? 7-2 __________________________________________________________ 7.3 HOW DO I PLAY SOUND FILES ON AN ALPHASTATION? DECSOUND DOESN'T WORK. 7-3 __________________________________________________________ 7.4 HOW DO I READ IBM EBCDIC TAPES ON OPENVMS? 7-3 __________________________________________________________ 7.5 HOW CAN I PATCH AN OPENVMS ALPHA IMAGE? 7-4 xii Contents ________________________________________________________________ CHAPTER 8 DCL DETAILS 8-1 __________________________________________________________ 8.1 DCL SYMBOLS AND OPENVMS LOGICAL NAMES? 8-1 __________________________________________________________ 8.2 HOW DO I RUN A PROGRAM WITH ARGUMENTS? 8-3 __________________________________________________________ 8.3 HOW CAN I CLEAR THE SCREEN IN DCL? 8-5 __________________________________________________________ 8.4 USING REPLY/LOG FROM DCL? DISABLING CONSOLE OPCOMS? 8-5 __________________________________________________________ 8.5 HOW DO I GENERATE A RANDOM NUMBER IN DCL? 8-6 __________________________________________________________ 8.6 WHAT DOES THE MCR COMMAND DO? 8-7 __________________________________________________________ 8.7 HOW DO I CHANGE THE OPENVMS SYSTEM PROMPT? 8-7 __________________________________________________________ 8.8 CAN I DO DECNET TASK-TO-TASK COMMUNICATION WITH DCL? 8-8 __________________________________________________________ 8.9 HOW CAN I GET THE WIDTH SETTING OF A TERMINAL? 8-9 __________________________________________________________ 8.10 WHY DOESN'T DCL SYMBOL SUBSTITUTION WORK? 8-9 __________________________________________________________ 8.11 HOW CAN I SUBSTITUTE SYMBOLS IN A PIPE? 8-10 __________________________________________________________ 8.12 USE OF RUN/DETACH, LOGINOUT, AND LOGICAL NAMES? 8-10 __________________________________________________________ 8.13 HOW TO USE ESCAPE AND CONTROL CHARACTERS IN DCL? 8-11 xiii Contents ________________________________________________________________ CHAPTER 9 FILES 9-1 __________________________________________________________ 9.1 HOW CAN I UNDELETE A FILE? 9-1 __________________________________________________________ 9.2 WHY DOES SHOW QUOTA GIVE A DIFFERENT ANSWER THAN DIR/SIZE? 9-1 __________________________________________________________ 9.3 HOW DO I MAKE SURE THAT MY DATA IS SAFELY WRITTEN TO DISK? 9-2 __________________________________________________________ 9.4 WHAT ARE THE LIMITS ON FILE SPECIFICATIONS AND DIRECTORIES? 9-3 __________________________________________________________ 9.5 WHAT IS THE LARGEST DISK VOLUME SIZE OPENVMS CAN ACCESS? 9-4 __________________________________________________________ 9.6 WHAT IS THE MAXIMUM FILE SIZE, AND THE RMS RECORD SIZE LIMIT? 9-7 __________________________________________________________ 9.7 HOW DO I WRITE CD-RECORDABLE OR DVD MEDIA ON OPENVMS? 9-8 9.7.1 CD and DVD notation, terminology? 9-11 9.7.2 Use of RRD42 and other older (embossed-media) CD drives? 9-13 9.7.3 Creating Bootable OpenVMS I64 CD or DVD Media? SYS$SETBOOT? 9-14 __________________________________________________________ 9.8 WHAT I/O TRANSFER SIZE LIMITS EXIST IN OPENVMS? 9-15 __________________________________________________________ 9.9 CAN I USE ODBC TO CONNECT TO OPENVMS DATABASE FILES? 9-15 __________________________________________________________ 9.10 IF MY DISKS ARE SHOWN AS VIOC COMPATIBLE, AM I USING XFC? 9-16 xiv Contents __________________________________________________________ 9.11 RMS SEQUENTIAL FILES AND PLATFORM PORTABILITY? 9-16 __________________________________________________________ 9.12 HOW TO READ LOCKED FILES? 9-17 ________________________________________________________________ CHAPTER 10 OPENVMS PROGRAMMING INFORMATION 10-1 __________________________________________________________ 10.1 MODULAR PROGRAMMING, FACILITY PREFIXES AND SYMBOL NAMING? 10-1 __________________________________________________________ 10.2 CAN I HAVE A SOURCE CODE EXAMPLE OF CALLING...? 10-2 __________________________________________________________ 10.3 HOW DO I GET THE ARGUMENTS FROM THE COMMAND LINE? 10-4 __________________________________________________________ 10.4 HOW DO I GET A FORMATTED ERROR MESSAGE IN A VARIABLE? 10-5 __________________________________________________________ 10.5 HOW DO I LINK AGAINST SYS$SYSTEM:SYS.STB ON AN ALPHA SYSTEM? 10-5 __________________________________________________________ 10.6 HOW DO I DO A SET DEFAULT FROM INSIDE A PROGRAM? 10-5 __________________________________________________________ 10.7 HOW DO I TURN MY FORTRAN COMMON INTO A SHAREABLE IMAGE ON ALPHA? 10-6 __________________________________________________________ 10.8 HOW DO I CONVERT BETWEEN IEEE AND VAX FLOATING DATA? 10-6 __________________________________________________________ 10.9 HOW DO I GET THE ARGUMENT COUNT IN A FORTRAN ROUTINE? 10-7 xv Contents __________________________________________________________ 10.10 HOW DO I GET A UNIQUE SYSTEM ID FOR LICENSING PURPOSES? 10-7 __________________________________________________________ 10.11 WHAT IS AN EXECUTABLE, SHAREABLE, SYSTEM OR UWSS IMAGE? 10-8 __________________________________________________________ 10.12 HOW DO I DO A FILE COPY FROM A PROGRAM? 10-10 __________________________________________________________ 10.13 WHAT IS A DESCRIPTOR? 10-10 __________________________________________________________ 10.14 HOW DO I CREATE A PROCESS UNDER ANOTHER USERNAME? 10-12 __________________________________________________________ 10.15 WHY DO LIB$SPAWN, LIB$SET_SYMBOL FAIL IN DETACHED PROCESSES? 10-13 __________________________________________________________ 10.16 WHERE CAN I OBTAIN BLISS, AND THE LIBRARIES AND SUPPORTING FILES? 10-14 __________________________________________________________ 10.17 HOW CAN I OPEN A FILE FOR SHARED ACCESS? 10-16 __________________________________________________________ 10.18 HOW CAN I HAVE COMMON SOURCES FOR MESSAGES, CONSTANTS? 10-16 __________________________________________________________ 10.19 HOW DO I ACTIVATE THE OPENVMS DEBUGGER FROM AN APPLICATION? 10-17 __________________________________________________________ 10.20 DEALING WITH ENDIAN-NESS? 10-17 __________________________________________________________ 10.21 HOW TO RESOLVE LINK-I-DATMISCH ERRORS? 10-18 __________________________________________________________ 10.22 HP C AND OTHER OPENVMS C PROGRAMMING CONSIDERATIONS? 10-18 10.22.1 Other common C issues 10-22 10.22.2 Other common C++ issues 10-24 xvi Contents __________________________________________________________ 10.23 STATUS OF PROGRAMMING TOOLS ON OPENVMS VAX? 10-26 __________________________________________________________ 10.24 CHOOSING A VERSION NUMBER FOR APPLICATION CODE? 10-27 __________________________________________________________ 10.25 SELECTING A PROCESS DUMP DIRECTORY? 10-28 __________________________________________________________ 10.26 ACCESS TO ITANIUM ASSEMBLER? 10-29 __________________________________________________________ 10.27 KERNEL-MODE CODING RESTRICTIONS? 10-29 __________________________________________________________ 10.28 DECODING AN ACCESS VIOLATION (ACCVIO) ERROR? 10-30 __________________________________________________________ 10.29 GENERATING AN AUTODIN-II CRC32? 10-32 __________________________________________________________ 10.30 ENABLING BUILT-IN TRACING? 10-32 ________________________________________________________________ CHAPTER 11 DECWINDOWS 11-1 __________________________________________________________ 11.1 HOW DO I LET SOMEONE ELSE DISPLAY SOMETHING ON MY WORKSTATION? 11-1 __________________________________________________________ 11.2 HOW DO I CREATE A DISPLAY ON ANOTHER WORKSTATION? 11-3 __________________________________________________________ 11.3 HOW CAN I GET THE INFORMATION FROM SHOW DISPLAY INTO A SYMBOL? 11-3 __________________________________________________________ 11.4 HOW DO I GET A LOG OF A DECTERM SESSION? 11-4 __________________________________________________________ 11.5 WHY IS DECWINDOWS MOTIF NOT STARTING? 11-4 xvii Contents __________________________________________________________ 11.6 HOW DO I SET THE TITLE ON A DECTERM WINDOW? 11-6 __________________________________________________________ 11.7 HOW DO I CUSTOMIZE DECWINDOWS, INCLUDING THE LOGIN SCREEN? 11-7 11.7.1 How do I customize DECwindows keymapping? 11-10 11.7.2 Why does the DELETE key delete forward instead of backward? 11-10 __________________________________________________________ 11.8 WHY DOESN'T XTAPPADDINPUT() WORK ON OPENVMS? 11-12 __________________________________________________________ 11.9 WHY DO THE KEYBOARD ARROW KEYS MOVE THE DECWINDOWS CURSOR? 11-13 __________________________________________________________ 11.10 WHY DOES HALF MY DECWINDOWS DISPLAY BLANK? 11-13 __________________________________________________________ 11.11 %DECW-W-NODEVICE, NO GRAPHICS DEVICE FOUND ON THIS SYSTEM? 11-14 __________________________________________________________ 11.12 HOW CAN I RESET THE WARNING BELL VOLUME? 11-16 __________________________________________________________ 11.13 HOW CAN I ALTER THE DECWINDOWS CDE BACKDROP? 11-17 __________________________________________________________ 11.14 HOW CAN I ENABLE THE DECWINDOWS TCP/IP TRANSPORT 11-17 __________________________________________________________ 11.15 CAN I USE DECWINDOWS 1.2-* ON OPENVMS V7.3-2 OR LATER? 11-17 __________________________________________________________ 11.16 HOW TO ADD FONTS INTO DECWINDOWS? 11-18 xviii Contents ________________________________________________________________ CHAPTER 12 MISCELLANEOUS INFORMATION 12-1 __________________________________________________________ 12.1 WHERE CAN I FIND INFORMATION ON ESCAPE AND CONTROL SEQUENCES? 12-1 __________________________________________________________ 12.2 DOES DECPRINT (DCPS) WORK WITH THE LRA0 PARALLEL PORT? 12-3 __________________________________________________________ 12.3 HOW DO I CHECK FOR FREE SPACE ON A (BACKUP) TAPE? 12-3 __________________________________________________________ 12.4 CORRECTLY USING LICENSE PAKS AND LMF? 12-4 ________________________________________________________________ CHAPTER 13 FINDING AND USING SOFTWARE 13-1 __________________________________________________________ 13.1 WHERE CAN I FIND FREEWARE/SHAREWARE/SOFTWARE FOR OPENVMS? 13-1 __________________________________________________________ 13.2 WHERE CAN I FIND UNIX TOOLS FOR OPENVMS? 13-15 13.2.1 C system and library routines 13-15 13.2.2 X Windows utilities and routines 13-16 13.2.3 TCP/IP Tools and Utilities for OpenVMS? 13-16 13.2.4 The vi text editor 13-17 13.2.5 The Emacs Text Editor 13-17 13.2.6 GNV: Various GNU tools 13-17 13.2.6.1 GCC compiler, 13-18 __________________________________________________________ 13.3 WHAT IS THE STATUS OF PL/I ON OPENVMS? 13-19 __________________________________________________________ 13.4 WHERE CAN I GET THE MOZILLA WEB BROWSER? 13-19 __________________________________________________________ 13.5 WHERE CAN I GET JAVA FOR OPENVMS? 13-20 __________________________________________________________ 13.6 OBTAINING USER INPUT IN DCL CGI SCRIPT? 13-21 xix Contents __________________________________________________________ 13.7 HOW CAN A BATCH JOB GET ITS OWN BATCH ENTRY NUMBER? 13-22 __________________________________________________________ 13.8 HOW DO I CONVERT TO NEW CMS OR DTM LIBRARIES? 13-22 __________________________________________________________ 13.9 WHERE CAN I GET PERL FOR OPENVMS? 13-23 __________________________________________________________ 13.10 OBTAINING THE DECMIGRATE (AEST OR VEST, AND TIE) TRANSLATOR? 13-25 __________________________________________________________ 13.11 WHERE CAN I GET ZIP, UNZIP, SELF-EXTRACTING ZIP, ETC? 13-26 __________________________________________________________ 13.12 ARE VAX HARDWARE EMULATORS AVAILABLE? 13-27 ________________________________________________________________ CHAPTER 14 HARDWARE INFORMATION 14-1 __________________________________________________________ 14.1 WHAT ARE THE OPENVMS DIFFERENCES AMONG VAX, ALPHA, AND IA-64? 14-1 __________________________________________________________ 14.2 SEEKING PERFORMANCE INFORMATION FOR ALPHA (AND VAX) SYSTEMS? 14-3 __________________________________________________________ 14.3 CONSOLE COMMANDS, SERIAL LINES, AND CONTROLS? 14-3 14.3.1 What commands are available in the Alpha SRM console? 14-4 14.3.2 What does SRM mean? What is PALcode? 14-4 14.3.3 Alpha COM ports and VAX console serial line information? 14-5 14.3.3.1 Which terminal device name is assigned to the COM ports?, 14-5 14.3.3.2 Which serial port is the console on the MicroVAX 3100?, 14-5 14.3.3.3 How can I set up an alternate console on a VAXstation?, 14-6 xx Contents 14.3.3.4 Please explain the back panel of the MicroVAX II, 14-6 14.3.4 What are Alpha console environment variables? 14-8 14.3.5 What are the boot control flag values? 14-9 14.3.5.1 What are the I64 IPB boot flag values?, 14-9 14.3.5.2 What are the Alpha APB boot flag values?, 14-10 14.3.5.3 What are the VAX VMB boot flag values?, 14-12 14.3.6 How do I boot an AlphaStation without monitor or keyboard? 14-15 14.3.7 Downloading and using SRM console Firmware? 14-16 14.3.7.1 Where can I get updated console firmware for Alpha systems?, 14-16 14.3.7.2 How do I reload SRM firmware on a half-flash Alpha system?, 14-17 14.3.7.3 How do I switch between AlphaBIOS/ARC and SRM consoles?, 14-18 14.3.8 Console Management Options 14-21 14.3.9 Why do my EFI Boot Aliases Fail? 14-22 14.3.10 Can OpenVMS access the EFI console Boot Aliases? 14-22 14.3.11 Downloading and using EFI Console Firmware? 14-22 __________________________________________________________ 14.4 WHAT PLATFORMS WILL OPENVMS OPERATE ON? 14-24 14.4.1 on the Alpha Multia? 14-26 14.4.2 on AlphaPC 164LX? AlphaPC 164SX? 14-28 14.4.2.1 on the NoName AXPpci33 system?, 14-28 14.4.3 on the Alpha XL series? 14-29 14.4.4 OpenVMS on the Personal Workstation -a and -au series? 14-29 14.4.4.1 OpenVMS on the Whitebox Windows-Only series Alpha?, 14-31 14.4.4.2 OpenVMS and Personal Workstation ATA (IDE) bootstrap?, 14-32 14.4.5 On the Intel Itanium IA-64 platform? 14-32 14.4.5.1 Where can I get Intel Itanium information?, 14-33 xxi Contents __________________________________________________________ 14.5 WHAT IS THE LEAST EXPENSIVE SYSTEM THAT WILL RUN OPENVMS? 14-34 __________________________________________________________ 14.6 WHERE CAN I GET MORE INFORMATION ON ALPHA SYSTEMS? 14-35 __________________________________________________________ 14.7 DESCRIBE ALPHA INSTRUCTION EMULATION AND INSTRUCTION SUBSETS? 14-36 __________________________________________________________ 14.8 SO HOW DO I OPEN UP THE DEC 3000 CHASSIS? 14-38 __________________________________________________________ 14.9 WHAT IS BYTE SWIZZLING? 14-38 __________________________________________________________ 14.10 WHAT IS THE LAYOUT OF THE VAX FLOATING POINT FORMAT? 14-40 __________________________________________________________ 14.11 WHERE CAN I FIND MORE INFO ABOUT VAX SYSTEMS? 14-41 __________________________________________________________ 14.12 WHERE CAN I FIND INFORMATION ON NETBSD FOR VAX SYSTEMS? 14-41 __________________________________________________________ 14.13 WHAT SYSTEM DISK SIZE LIMIT ON THE MICROVAX AND VAXSTATION 3100? 14-41 __________________________________________________________ 14.14 WHAT ARE THE VAX PROCESSOR (CPU) CODES? 14-43 __________________________________________________________ 14.15 WHERE CAN I GET SOFTWARE AND HARDWARE SUPPORT INFORMATION? 14-44 __________________________________________________________ 14.16 WHERE CAN I GET HARDWARE SELF-MAINTENANCE SUPPORT ASSISTANCE? 14-45 __________________________________________________________ 14.17 WHY DOES MY SYSTEM HALT WHEN I POWER-CYCLE THE CONSOLE TERMINAL? 14-45 xxii Contents __________________________________________________________ 14.18 CAN I REUSE OLD KEYBOARDS, MICE AND MONITORS WITH A PC? 14-46 __________________________________________________________ 14.19 WHICH VIDEO MONITOR WORKS WITH WHICH GRAPHICS CONTROLLER? 14-48 __________________________________________________________ 14.20 WHERE CAN I GET INFORMATION ON STORAGE HARDWARE? 14-49 __________________________________________________________ 14.21 WHY DOES MY LK401 KEYBOARD UNEXPECTEDLY AUTOREPEAT? 14-50 __________________________________________________________ 14.22 PROBLEM - MY LK411 SENDS THE WRONG KEYCODES OR SOME KEYS ARE DEAD 14-51 __________________________________________________________ 14.23 WHICH DE500 VARIANT WORKS WITH WHICH OPENVMS VERSION? 14-51 __________________________________________________________ 14.24 HOW DO I SET THE SPEED AND DUPLEX ON OPENVMS I64? 14-53 __________________________________________________________ 14.25 THIRD-PARTY OR UNSUPPORTED DISK/TAPE/CONTROLLERS/SCSI/WIDGETS? 14-53 14.25.1 Lists of third-party widgets on OpenVMS? 14-56 14.25.2 Are the 2X-KZPCA-AA and SN-KZPCA-AA LVD Ultra2 SCSI? 14-57 14.25.3 Resolving DRVERR fatal device error? 14-57 __________________________________________________________ 14.26 LOOKING FOR CONNECTOR WIRING PIN-OUTS? 14-57 __________________________________________________________ 14.27 WHAT CONNECTORS AND WIRING ADAPTERS ARE AVAILABLE? 14-60 __________________________________________________________ 14.28 WHAT IS FLOW CONTROL AND HOW DOES IT WORK? 14-63 xxiii Contents __________________________________________________________ 14.29 CD AND DVD DEVICE REQUIREMENTS? 14-64 __________________________________________________________ 14.30 OFFICE-FRIENDLY (QUIETER) INTEGRITY RX2620 SERIES? 14-66 __________________________________________________________ 14.31 KVM SWITCHES FOR ALPHASERVER AND INTEGRITY SERVERS? 14-67 ________________________________________________________________ CHAPTER 15 INFORMATION ON NETWORKS AND CLUSTERS 15-1 __________________________________________________________ 15.1 HOW TO CONNECT OPENVMS TO A MODEM? 15-1 __________________________________________________________ 15.2 OPENVMS AND IP NETWORKING? 15-1 15.2.1 How to connect OpenVMS to the Internet? 15-1 15.2.2 Connecting to an IP Printer? 15-2 15.2.3 How do I connect a PostScript printer via TCP/IP? 15-3 15.2.4 How do I set a default IP route or gateway on OpenVMS? 15-4 15.2.5 How can I set up reverse telnet (like reverse LAT)? 15-4 15.2.6 Why can't I use PPP and RAS to connect to OpenVMS Alpha? 15-4 __________________________________________________________ 15.3 OPENVMS AND DECNET NETWORKING? 15-5 15.3.1 Can DECnet-Plus operate over IP? 15-5 15.3.2 What does "failure on back translate address request" mean? 15-5 15.3.3 Performing SET HOST/MOP in DECnet-Plus? 15-6 15.3.4 How to flush the DECnet-Plus session cache? 15-6 xxiv Contents __________________________________________________________ 15.4 HOW TO DETERMINE THE NETWORK HARDWARE ADDRESS? 15-7 15.4.1 How do I reset the LAN (DECnet-Plus NCL) error counters? 15-9 15.4.2 How do I install DECnet Phase IV on VMS 7.1? 15-9 __________________________________________________________ 15.5 HOW CAN I SEND (RADIO) PAGES FROM MY OPENVMS SYSTEM? 15-11 __________________________________________________________ 15.6 OPENVMS, CLUSTERS, VOLUME SHADOWING? 15-11 15.6.1 OpenVMS Cluster Communications Protocol Details? 15-12 15.6.1.1 OpenVMS Cluster (SCS) over DECnet? Over IP?, 15-12 15.6.1.2 Configuring Cluster SCS for path load balancing?, 15-13 15.6.1.2.1 Cluster Terminology?, 15-13 15.6.1.2.2 Cluster Communications Control?, 15-14 15.6.1.2.3 Cluster Communications Control Tools and Utilities?, 15-15 15.6.2 Cluster System Parameter Settings? 15-16 15.6.2.1 What is the correct value for EXPECTED_VOTES in a VMScluster?, 15-16 15.6.2.1.1 Why no shadowing for a Quorum Disk?, 15-19 15.6.2.2 Explain disk (or tape) allocation class settings?, 15-19 15.6.2.2.1 How to configure allocation classes and Multi-Path SCSI?, 15-20 15.6.3 Tell me about SET HOST/DUP and SET HOST/HSC 15-21 15.6.4 How do I rename a DSSI disk (or tape?) 15-23 15.6.5 Where can I get Fibre Channel Storage (SAN) information? 15-24 15.6.6 Which files must be shared in an OpenVMS Cluster? 15-24 15.6.7 How can I split up an OpenVMS Cluster? 15-25 15.6.8 Details on Volume Shadowing? 15-27 15.6.8.1 Does volume shadowing require a non-zero allocation classes?, 15-27 xxv Contents ________________________________________________________________ INDEX ________________________________________________________________ TABLES 1-1 Core Websites 1-1 1-2 INFO-VAX Mail Server Commands 1-4 2-1 OpenVMS Alpha Media Kits 2-6 2-2 OpenVMS I64 Order Numbers 2-7 2-3 OpenVMS I64 Media Suffix 2-7 2-4 OpenVMS Source Listings Kits 2-8 2-5 OpenVMS Alpha Version Rule-Of-Thumb 2-18 3-1 OpenVMS Websites 3-2 3-2 OpenVMS Tutorial and Documentation Websites 3-6 3-3 DP Books 3-8 3-4 OpenVMS Mailing Lists 3-10 3-5 OpenVMS Discussion Forums 3-11 5-1 PCSI Generation Number 5-44 11-1 X Windows Display Commands 11-1 14-1 I64 Conversational Bootstrap Flags 14-10 14-2 Alpha Conversational Bootstrap Flags 14-11 14-3 VAX Conversational Bootstrap Flags 14-12 14-4 DE500 Speed and Duplex Settings 14-52 14-5 DEC MMJ Pin-out 14-57 14-6 PC DB9 Pin-out 14-59 14-7 MicroVAX DB9 Pin-out 14-59 14-8 DECconnect MMJ Connectors and Adapters 14-61 15-1 Cluster Common Shared Files 15-24 xxvi ________________________________________________________________ Preface i ________________________________________________________________ OpenVMS Frequently Asked Questions (FAQ) This is the OpenVMS Frequently Asked Questions (FAQ) posting for the comp.os.vms and comp.sys.dec usenet newsgroups. Suggestions and Updates Welcome! Please send your suggestions for changes, additions, or corrections directly to FAQ Editor (hoff{atsign}hp{period}com) No Support Questions, Please Please do not send technical questions to the FAQ Editor (hoff{atsign}hp{period}com) . The FAQ Editor (hoff{atsign}hp{period}com) is not in a position to answer general questions, nor to provide general product support. Rather, please post your questions to the appropriate newsgroup, or please contact your preferred hardware and/or software support organization(s) directly. Your understanding in this matter is greatly appreciated. If you believe any particular discussion worthy of inclusion in a future edition of the FAQ and particularly once you have or know both the question and the answer, please then send the entire discussion along to the FAQ Editor (hoff{atsign}hp{period}com) for potential inclusion. Do note that the FAQ Editor (hoff{atsign}hp{period}com) takes URL link continuity seriously, and strives to maintain current links. This is, however, a large task, and it is only becoming more difficult. URL link continuity is also something that you can assist with, of course. If you should find a dead link or a stale URL pointer, please notify the FAQ Editor (hoff{atsign}hp{period}com) . If you have or can find the current, correct or updated URL, of course, that greatly assists the FAQ Editor iii OpenVMS Frequently Asked Questions (FAQ) (hoff{atsign}hp{period}com) in maintaining the most current set of links. Thank you! Post to Newsgroups With Care! Please consider reading Section 1.3 before posting to the comp.os.vms or any other newsgroups. (What you post can come back to haunt you.) _____________________________ Contributors Many people have contributed to this FAQ, directly and/or indirectly. In many cases, part or all of an answer included in the FAQ has been adapted from one or more postings from the comp.os.vms or other newsgroup-this though individual citations and specific quotations are generally not included in this FAQ. (The FAQ Editor (hoff{atsign}hp{period}com) wishes to thank to all of those folks who post answers to the newsgroups, and that have contributed to the contents of and to the general improvements of this FAQ.) The following is an incomplete list of the folks that have contributed directly or indirectly to the contents of the OpenVMS FAQ. Additions, corrections, and updates to this list of contributors and to the contents of the FAQ itself are welcome, and all omissions and misspellings are unintentional. Thanks to each of the contributors here, and to all of the folks that have participated in the FAQ and in the newsgroups. Jim Agnew, Paul Anderson, Jason Armistead, Zoltan Arpadffy, John AtoZ, Bailey, Gary Barclay, (The) Beav, Jeremy Begg, Colin Blake, Fabrice Blanquart, Ken Blaylock, Kenneth Block, Bol, Craig Berry, Mark Berryman, Jim Becker, Verell Boaen, Bol, Jim Brankin, Richard Brodie, Colin Butcher, Robert Alan Byer, Jeff Campbell, Scott Campbell, Antonio Carlini, Keith Cayemberg, Ken Chaney, Cristy, John Croll, David J. Dachtera, Robert Deininger, Dale Dellutri, Leo Demers, Sue Denham, Thomas Dickey, Eric Dittman, Mike Duffy, Jim Dunham, Eric, Glenn Everhart, Ken Fairfield, Yaacov iv OpenVMS Frequently Asked Questions (FAQ) Fenster, Gunther Froehlin, Harry Garonzik, Derek Garson, John Gillings, Andy Goldstein, Clair Grant, Hunter Goatley, Ruth Goldenberg, Vance Haemmerle, Ki Suk Hahn, SHarris, Rich Hearn, Fletcher Hearns, Phillip Helbig, Hein van den Heuvel, Stephen Hoffman, Eberhard Heuser-Hofmann, Sue Holt, Mark Hopkins, Horn, Jaf, Leif Jansson, Kevin Jenkins, Don R. Jones, Henry Juengst, inazu_k, Geoff Kingsmill, Fred Kleinsorge, Felix Kreisel, Veli Korkko, Ruslan R. Laishev, Peter "EPLAN" Langstoeger, Norm Lastovica, p_lee, Jerry Leichter, Richard Levitte, Tom Linden, Steve Lionel, Denis Maillard, Kerry Main, John E. Malmberg, David Mathog, Dale Miller, Ian Miller, Dick Munroe, Patrick Moreau, Morrison, otis, George Pagliarulo, Keith Parris, Plass, pvhp, David Rabahy, Stan Rabinowitz, Mike Raspuzzi, Steve Reece, Neil Rieck, Ian Ring, Aaron Sakovich, Warren Sander, Mark Schafer, Brian Schenkenberger, Atlant Schmidt, Wayne Sewell, Steven Shamlian, Sue Skonetski, Scott Snadow, Sue Sommer, Scott Squires, stfp, Dave Sweeney, Mike Thompson, Arne Vajhøj, Martin Vorländer, Peter Weaver, William Webb, Williams, Paul Winalski, Uwe Zinser. Again, any omission from this list and any errors or misspellings are entirely unintentional. Please notify the FAQ Editor (hoff{atsign}hp{period}com) of any omissions, corrections, or updates that might be needed within this list. And thanks to each of these individuals for their assistance and for their contributions, and particularly for sharing their expertise. __________________________________________________________ FAQ Archives and FAQ Locations The OpenVMS FAQ is archived in (at least) the following locations: o http://www.hp.com/go/openvms/faq/ o ftp://rtfm.mit.edu/pub/usenet/comp.os.vms/ o news:comp.answers o news:news.answers o http://www.faqs.org/ v OpenVMS Frequently Asked Questions (FAQ) o http://www.google.com/ o http://eisner.decus.org/vms/faq.htm o http://www.hoffmanlabs.org Other internet FAQs are generally available in these locations: o news://comp.answers o news://news.answers o ftp://rtfm.mit.edu/pub/usenet/ o http://www.faqs.org/ o http://www.google.com/ __________________________________________________________ FAQ File Formats and Production Information This FAQ is available in ASCII text, Postscript, Bookreader, and HTML, and potentially in other file formats. Certain formats, such as the Adobe Acrobat PDF conversion from the Postscript format, are provided downstream from the FAQ text formatting, and are provided and maintained by others. As the HTML-format FAQ is not a single monolithic (and accordingly large) HTML file, it is the most difficult format to search using the most common standard (platform-local) tools. Accordingly, the FAQ Editor (hoff{atsign}hp{period}com) recommends downloading, using and searching the ASCII text FAQ format. The OpenVMS FAQ is maintained in DECdocument SDML format and all FAQ maintenance and the primary output file format conversions are performed on OpenVMS systems. For information on the DECdocument product, please contact Touch Technologies. vi OpenVMS Frequently Asked Questions (FAQ) __________________________________________________________ Old FAQ Section Notations Available in Index For the folks that are familiar with older editions of this FAQ and specifically for those folks looking for the older section name keywords, please see the index entries located under FAQ Sections (Old). These older section names include the prefixes DCL, DECW, DOC, FILES, MISC, MGMT, INTRO, SOFT, VMS, etc., followed by the section number. __________________________________________________________ The Fine Print Corrections and suggestions are welcome. Should you believe you can provide better stewardship of this FAQ, or should you have strong feelings over the content, structure, organization or implementation of the FAQ, do realize you may be offered the editorship. The editor maintains this document as a free service to the OpenVMS community. While the information contained here is believed correct, the use of any and all information acquired from this document is entirely at the risk of the user(s). If your system should crash or your data should become corrupted or the answer(s) found here should be found erroneous, that is solely your risk and your responsibility. Though the editor of this FAQ is an employee of Hewlett-Packard Company (HP), this posting and the information contained within this FAQ are is not an official statement of HP, nor a commitment by HP. All information, comments or opinions included, cited or otherwise referenced here may or may not reflect the stated opinions of HP, of the editor, or of any other entity. All trademarks, registered trademarks, servicemarks and registered servicemarks used or referenced here are the properties of their respective owner(s) or holders. Please route any corrections, requests or related updates to the FAQ Editor (hoff{atsign}hp{period}com) vii OpenVMS Frequently Asked Questions (FAQ) The redistribution, reposting and/or the web-serving of complete and unaltered copies of this FAQ document is permitted. Other uses only with prior permission. The master copy of this FAQ is posted at o http://www.hp.com/go/openvms/faq Translations of this FAQ into various languages may be available, please contact the maintainer(s) of any translated document for assistance or feedback involving the particular translated edition of this FAQ. viii _______________________________________________________ 1 Introduction __________________________________________________________ 1.1 What core OpenVMS URLs do you need to know? If you have no other OpenVMS URLs bookmarked, you will want to be familiar with the URLs listed in Table 1-1: ________________________________________________________________ Table 1-1 Core Websites ________________________________________________________________ URL_______Contents______________________________________________ Core OpenVMS Information, including roadmaps and release schedules http://www.hp.com/go/openvms/ OpenVMS and Core Layered Product Documentation http://www.hp.com/go/openvms/doc/ Core OpenVMS Support Search Engine URLs, the ITRC support and discussion forums, and the ITRC FTP-accessable Patch Area http://www2.itrc.hp.com/service/james/CPQhome.do (formerly the NLSA Natural Language Search Assistant, and formerly AskQ.) http://www.itrc.hp.com/ ftp://ftp.itrc.hp.com/openvms_patches/ The OpenVMS Freeware http://www.hp.com/go/openvms/freeware/ The OpenVMS Hobbyist License Program http://www.openvmshobbyist.org/ 1-1 Introduction ________________________________________________________________ Table 1-1 (Cont.) Core Websites ________________________________________________________________ URL_______Contents______________________________________________ http://h71000.www7.hp.com/openvms/license_software_ __________programs/index.html___________________________________ __________________________________________________________ 1.2 What are the OpenVMS Usenet Newsgroups? There are a huge number of newsgroups available, some of which discuss topics of interest to folks using OpenVMS operating system. Key among these are the comp.os.vms newsgroup and the vmsnet.* heirarchy of newsgroups. _____________________________ 1.2.1 What is the scope of the comp.os.vms newsgroup? The comp.os.vms newsgroup is the primary newsgroup for discussion of the HP OpenVMS operating system and the computer systems on which it runs. Questions about layered products which run on OpenVMS are also welcome, though many of them (in particular, language compilers and database systems) have more specific newsgroups. If a question has some relationship to OpenVMS, it belongs in comp.os.vms/. _____________________________ 1.2.2 What newsgroups carry VMS-related information? The vmsnet.* hierarchy is operated by the Encompass users group (formerly known as DECUS), and contains various newsgroups of interest, including vmsnet.misc and vmsnet.alpha. Sprechen Sie Deutsch? Besuchen Sie bitte den newsgroup de.comp.os.vms. The comp.sys.dec newsgroup carries general discussions about various HP computer systems, and specifically systems that were acquired by HP as part of the acquisition of Compaq, systems which had previously been acquired by Compaq as part of the acquisition of Digital Equipment Corporation (DIGITAL). 1-2 Introduction Also of interest are resources and conferencing systems including Encompasserve (formerly known as DECUServe) and Ken Farmer's OpenVMS.Org forums: o telnet://eisner.decus.org/ o http://www.openvms.org/ _____________________________ 1.2.3 What newsgroup archives are available? Extensive archives of INFO-VAX mailings and comp.os.vms postings are archived and available at SRI International: http://mvb.saic.com/freeware/info-vax/ Google also has extensive newsgroup archives available at o http://www.google.com/ _____________________________ 1.2.4 What is the INFO-VAX mailing list? INFO-VAX is a mailing list which is bidirectionally gatewayed to the comp.os.vms newsgroup. This means that postings to comp.os.vms get automatically sent to INFO- VAX subscribers and messages sent to the INFO-VAX list are automatically posted to comp.os.vms INFO-VAX can be a useful way to participate in the newsgroup if you can't access the newsgroup directly through a newsreader. Note that INFO-VAX is a closed mailing list, which means that only subscribers may post to it. Please see Section 1.2.4.1 for information on how to subscribe, and how you can subscribe such that you can post from multiple addresses but still receive no more than one copy of the mailings. Please remember that propogation delays can and do vary, meaning that mailings and postings may be delayed or even lost. It is quite possible that postings may not be delivered for several days, and that some postings will appear out of the expected order. For details on the available archives, please see Section 1.2.3. 1-3 Introduction _____________________________ 1.2.4.1 How do I subscribe to or unsubscribe from INFO-VAX? The address for subscription requests is Info-VAX- Request[at]Mvb.Saic.Com. Subscription requests are handled automatically by a mail server. This mail server ignores the subject line and processes each line of the message as a command. The syntax for subscribing and unsubscribing, as well as setting various parameters on your subscription, is: ________________________________________________________________ Table 1-2 INFO-VAX Mail Server Commands _______________________________________________________ Command____________________Description_________________ HELP Acquire information on mail server SUBSCRIBE INFO-VAX Join to the mailing list UNSUBSCRIBE INFO-VAX Leave the mailing list SET INFO-VAX DIGEST Select periodic omnibus mail messages from the mail server, rather than multiple individual messages for each posting. SET INFO-VAX NODIGEST Separate mail delivery of each message posted SET INFO-VAX NOMAIL Establish an email address for posting, though not for receiving, mail. SET INFO-VAX MAIL Establish an email address for both posting and for receiving mail from the ____________________________________mailing_list._______________ The mail server is not case-sensitive; case is irrelevant. Settings and policies can be retrieved from the mail server, typically using HELP. The INFO-VAX moderator can be contacted directly at the email address Mark.Berryman[at]Mvb.Saic.Com. 1-4 Introduction __________________________________________________________ 1.3 What is [n]etiquette? Before posting or emailing a question, please use the available local resources, such as the OpenVMS manuals, the HELP, and the resources and information in and referenced by this FAQ. Please use these first. Also please specifically read the release notes and (if appropriate) the cover letter for the product you are using. (The release notes are generally placed in SYS$HELP:.) Quite often, these simple steps will allow you to quickly find the answer to your own question-and more quickly than waiting for a response to question posted to a newsgroup, too. These steps will save you time, and will also help ensure you have a good reputation with the folks that might be included to answer one of your future questions, a question not covered in these resources. Put another way, if you do not want your questions to be ignored in the future- and please remember that the folks in the newsgroups do not have to answer your questions-you won't want to "annoy the natives" by asking a question that has already been answered far more times more than you might have realized, or a question whose answer is readily available had you made a small effort. When posting, please consider the following suggestions: o There is no particularly reliable way to recall, erase, delete, or otherwise hide a message once it is emailed or once posted. Once your message has reached an external email server or multiple news servers, the entire text is effectively a permanent fixture of the network. And using the available search engines, a fixture that is easy to locate and to correlate. (Do not assume that all tools or archives will honor the do-not-cache attributes, either-postings marked as such can be among the most interesting ones to cache, after all.) For details on some of the many available archives, please see Section 1.2.3. 1-5 Introduction o Include a valid e-mail address in the text of your posting or in a "signature" appended to the end. Reply-to addresses in headers often get garbled. Anonymous addresses can also simply be ignored, as fake addresses are regularly used by folks that are "trolling" and by folks that are spamming. (Though to avoid spam-harvesting of your email address, consider adding characters or a field into the address-but remember to include details around which characters or fields should be removed or altered if you decide to be particularly clever here.) o If you are submitting a question, please be as specific as you can. Include relevant information such as processor type, product versions (OpenVMS and layered products that apply), error message(s), DCL command(s) used, and a short, reproducible example of problems. Say what you've tried so far, so that effort isn't duplicated. Keep in mind that there's not yet a telepathy protocol for the Internet. (The more detailed your description, the better that people can help you with your question.) o If responding to a posting, include in your reply only as much of the original posting as is necessary to establish context. As a guideline, consider that if you've included more text than you've added, you've possibly included too much. Never include signatures and other irrelevant material. o Please be polite. If the question isn't worded the way you think is correct or doesn't include the information you want, try to imagine what the problem might be if viewed from the poster's perspective. Requests for additional detailed information are often better sent through mail rather than posted to the newsgroup. o If you have a problem with HP (or any other vendor's) product, please use the appropriate support channel. Do not assume that newsgroup postings will get read, will be responded to by the appropriate developers, or will be later followed up upon. 1-6 Introduction o If you are posting from a web browser, news reader or if you are posting via email sent to INFO-VAX, please turn off MIME, vcard, attachments, and other mechanisms that assume anyone reading the post has the corresponding capability-use the text-only option of your web browser, news reader, or mailer. Usenet is traditionally a text-only medium, and many comp.os.vms participants will use tools that have this support disabled, or that do not have this support. If the message uses MIME or attachments or such, the text of your message will be buried in a large pile of gibberish, and some tools will send multiple copies of the text within a single posting. o If you find that the postings of a particular user are uninteresting, annoying, or off-topic, most newsreaders include a filter or killfile mechanism, and many mail clients have similar filtering capabilities. Please do not "flame"-to email or to post vitriol - any individual that might annoy you, please enable and filter all of that user's postings. Posting of vitriol and of "flames" will eventually come back to haunt you; netizens and the net itself have a very large and a very long memory. Similarly, readers that decide that your postings are not worthy of reading will similarly tend to filter or to killfile all of your postings. Please play nice, in other words. Before posting your question to the comp.os.vms newsgroup or sending your message to the INFO-VAX list, also please take the time to review available etiquette information, such as that included in the following documents: widftp://rtfm.mit.edu/pub/usenet/ news.answers/usenet/primer/part1 widftp://rtfm.mit.edu/pub/usenet/ news.answers/usenet/faq/part1 widftp://rtfm.mit.edu/pub/usenet/ news.answers/usenet/emily-postnews/part1 1-7 Introduction widftp://rtfm.mit.edu/pub/usenet/ news.answers/usenet/writing-style/part1 widftp://rtfm.mit.edu/pub/usenet/ news.answers/usenet/posting-rules/part1 This information will document the etiquette of newsgroups, as well as providing you with the knowledge the vast amount of newsgroup-related information that is readily available to you, and where to find it... Note Please do not post security holes or system crashers Rather, please report these problems directly to HP. Why? So that HP has a chance to resolve and distribute a fix before other customer sites can be affected. Most folks in the newsgroups are honest and deserve to know about potential security problems, but a few folks can and will make nefarious use of this same information. Other sites will hopefully return the courtesy, and will not post information that will potentially compromise your site and your computer environment. __________________________________________________________ 1.4 What OpenVMS user group(s) are available? Encompass, the Enterprise Computing Association, is a user group comprised of information technology professionals that are interested in the Enterprise- oriented products, services, and technologies of Compaq and of the former DIGITAL. Encompass offers newsletters, the Encompass website, and offers various gatherings and related services, including symposia events and local users group meetings. Encompass is a descendent of the organization known as DECUS, the Digital Equipment Computer Users Society. 1-8 Introduction For more information on Encompass, please visit the Encompass web site: o http://www.encompassus.org/ The organization comprised of customers of Hewlett- Packard Company (HP) that is probably most analogous to the Encompass organization is Interex: o http://www.interex.org/ Like Encompass, Interex offers various services and events of interest to folks that presently work with and/or that wish to learn about HP products and offerings. Please see the Interex website for details. __________________________________________________________ 1.5 OpenVMS Support, Questions and Comments? The following section includes contacts for OpenVMS Feedback, and information on how to obtain technical support information. _____________________________ 1.5.1 Corporate contacts for OpenVMS Business Issues? The HP corporate contact for OpenVMS business issues is Ann McQuaid, the HP General Manager directly in charge of OpenVMS and OpenVMS Engineering, while feature requests and other related matters should be routed to MaryJane Vazquez, the OpenVMS Business Manager. Ann and MaryJane will quite obviously respond best to cogently-worded OpenVMS corporate-level business issues or requests. With all due respect to all involved, neither Ann nor MaryJane are appropriate contacts for technical support matters nor for technical support requests, nor for any other non-corporate-related, non- business-related issues-these questions are best routed to the local or regional customer support center; to the support, technical and engineering teams. To reach Ann or MaryJane via electronic mail, place a dot between the first and the surname, and append the expected HP.COM domain. 1-9 Introduction _____________________________ 1.5.2 OpenVMS Ambassadors? The OpenVMS Ambassadors are senior HP engineers with advanced technical knowledge and advanced training in OpenVMS, with detailed knowledge of current and future OpenVMS releases and product plans, and with contacts directly with the HP and ISV hardware and software engineering organizations developing OpenVMS and OpenVMS hardware platforms, as well as layered products and tools. Further, Ambassadors are experienced with integrating HP OpenVMS and application-specific products and ISV applications to solve specific business requirements. OpenVMS Ambassadors are based throughout the world. Your HP sales representative or HP reseller will be able connect you with your local OpenVMS Ambassador. _____________________________ 1.5.3 Contact for OpenVMS Marketing Issues and Questions? Please see Section 3.4. _____________________________ 1.5.4 Contact URLs for OpenVMS Technical Issues? For formal technical issues and technical support, please contact your software support organization, or your local HP Customer Support Center or HP Reseller. In North America, you can call 1-800-HP-INVENT. For informal (free) support resources, see the newsgroups including comp.os.vms ( news://comp.os.vms/ comp.os.vms ), see the ITRC discussion forums, the James support database search engine (search assistant tool) ( http://www2.itrc.hp.com/service/james/CPQhome.do ), and see sections of this document including the platform support information in Section 14.4, sources of software and hardware support in Section 14.15, information on third-party devices and unsupported hardware in Section 14.25, and the many other sections of this document. 1-10 Introduction Please remember to review and to bookmark the following support URLs: o http://www.hp.com/go/openvms/ o http://www2.itrc.hp.com/service/james/CPQhome.do o http://www.hp.com/go/openvms/wizard/ (reference only; use ITRC forums for new questions) o ftp://ftp.itrc.hp.com/openvms_patches/ 1-11 _______________________________________________________ 2 General Information __________________________________________________________ 2.1 What is OpenVMS? What is its history? OpenVMS, originally called VMS (Virtual Memory System), was first conceived in 1976 as a new operating system for the then-new, 32-bit, virtual memory line of computers, eventually named VAX (Virtual Address eXtension). The first VAX model, the 11/780, was code-named "Star", hence the code name for the VMS operating system, "Starlet", a name that remains to this day the name for the system library files (STARLET.OLB, etc.). VMS version X0.5 was the first released to customers, in support of the hardware beta test of the VAX-11/780, in 1977. VAX/VMS Version V1.0 shipped in 1978, along with the first revenue-ship 11/780s. OpenVMS was designed entirely within HP and specifically within the former Digital Equipment Corporation (DIGITAL). Two of the principal designers were Dave Cutler and Dick Hustvedt, though with a wide variety of other contributors. OpenVMS was conceived as a 32-bit, virtual memory successor to the RSX- 11M operating system for the PDP-11. Many of the original designers and programmers of OpenVMS had worked previously on RSX-11M, and many concepts from RSX-11M were carried over to OpenVMS. OpenVMS VAX is a 32-bit, multitasking, multiprocessing virtual memory operating system. Current implementations run on VAX systems from HP and other vendors, as well as on hardware emulators; for additional information on emulators, please see Section 13.12 and 2-1 General Information OpenVMS Alpha is a 64-bit multitasking, multiprocessing virtual memory operating system. Current implementations run on Alpha systems from HP, and other vendors. OpenVMS has also been ported to the Intel IA-64 architecture, and specifically to HP Integrity systems using microprocessors from the Intel Itanium Processor Family. This implementation of OpenVMS is officially known as "HP OpenVMS for Integrity Servers" and more commonly as "OpenVMS I64", and it operates in the native Itanium IA-64 architecture and 64- bit environment. OpenVMS I64 provides support for applications requiring 32- or 64-bit virtual addressing capabilities entirely within the native 64-bit Itanium execution environment. (For details on this and related terminology, please see Section 14.4.5.) For more details on OpenVMS and its features, please read the OpenVMS Software Product Description at: o http://h18000.www1.hp.com/info/spd/ OpenVMS typically uses SPD 25.01.xx, SPD 41.87.xx, and SPD 82.35.xx. Additional information on the general features of various OpenVMS releases, release dates, as well as the development project code names of specific releases, is available at: o http://www.openvms.compaq.com/openvms/os/openvms- release-history.html Additional historical information-as well as pictures and a variety of other trivia-is available in the VAX 20th anniversary book: o http://www.openvms.compaq.com/openvms/20th/vmsbook.pdf For information on the FreeVMS project, and on hobbyist and educational versions of OpenVMS, please see: o http://www.systella.fr/~bertrand/FreeVMS/indexGB.html o http://en.wikipedia.org/wiki/FreeVMS o http://www.openvmshobbyist.org/ 2-2 General Information o http://www.openvmsedu.com/ Also please see the related software licensing topics Section 2.8.4, Section 2.8.1, and Section 2.15, and (for developers working on commercial applications for OpenVMS) Section 2.8.3. __________________________________________________________ 2.2 What is the difference between VMS and OpenVMS? VMS and OpenVMS are two names for the same operating system. Originally, the operating system was called VAX-11/VMS; it changed to VAX/VMS at around VAX/VMS V2.0. When the VMS operating system was ported to the Alpha platform, it was renamed OpenVMS, for both VAX and Alpha (and for the Itanium Processor Family), in part to signify the high degree of support for industry standards such as POSIX, which provides many features of UNIX systems. For those versions with POSIX, an OpenVMS license allows you to install and run POSIX for OpenVMS at no additional charge; all you need is the media and documentation which can be found on the Consolidated Distribution and On-Line Documentation CD-ROMs. Support for the POSIX package on more recent OpenVMS releases is not available, various parts of POSIX such as calls from the API are being integrated more directly into OpenVMS. For more information on POSIX for VMS see question SOFT2 What became confusing is that the OpenVMS name was introduced first for OpenVMS AXP V1.0 causing the widespread misimpression that OpenVMS was for Alpha AXP only, while "regular VMS" was for VAX. In fact, the official name of the VAX operating system was changed as of V5.5, though the name did not start to be actually used in the product until V6.0. 2-3 General Information __________________________________________________________ 2.3 What's in a Name? Terminology and Products? The proper names for OpenVMS on the various platforms are "OpenVMS VAX", "OpenVMS Alpha", and "OpenVMS I64". Use of "OpenVMS AXP" and of "VAX/VMS" are deprecated. The VAX and Alpha terms are largely interchangeably used as the names of platforms, of processor or microprocessor implementations, and of the respective computing architectures. Somewhat confusing to long-time OpenVMS users, Intel IA-32, IA-64, and EM64T, and AMD AMD64 are the names of various computing architectures and of architectural extensions. Only. These are not the names of any implementations, nor of any platforms. Intel Itanium is the name of a family of microprocessor implementations of the Intel IA-64 architecture, as Intel Pentium and Xeon are the names of families of microprocessor implementations of Intel IA-32 and (potentially) of the EM64T extensions. I64 is the generic name for the various HP Integrity platforms supported by HP OpenVMS for Integrity Servers (and more commonly as "OpenVMS I64"); for the platforms supported by OpenVMS I64. (For additional related terminology, please see Section 14.4.5.) _____________________________ 2.3.1 How do I port from VMS to OpenVMS? You already did. Wasn't that easy? Please see Section 2.2 for details. __________________________________________________________ 2.4 Which is better, OpenVMS or UNIX? This question comes up periodically, usually asked by new subscribers and new posters who are long-time UNIX or Linux users. Sometimes, the question is ignored totally; other times, it leads to a long series of repetitive messages that convince no one and usually carry little if any new information. Please do everyone a favor and avoid re-starting this perpetual, fruitless debate. 2-4 General Information That said, OpenVMS and the better implementations of UNIX are all fine operating systems, each with its strengths and weaknesses. If you're in a position where you need to choose, select the one that best fits your own requirements, considering, for example, whether or not the layered products or specific OS features you want are available, and considering the expected cost-of-ownership over the lifetime of the system installation. If you are asking this question, you are probably comparing OpenVMS to UNIX. It was once certainly true that OpenVMS and UNIX were quite different. In more recent times, there are tools and C APIs on OpenVMS that directly provide or that easily support porting UNIX programs and commands, and there are equivalent packages bringing various OpenVMS features and mechanisms to UNIX platforms. If you seek UNIX tools on OpenVMS rather than the more philosophical discussion found in this section, please see the GNV package and other GNU discussions in Section 13.2.6, and please see the plethora of C calls currently available in the HP C Run-Time Library documentation, briefly discussed over in Section 13.2.1. __________________________________________________________ 2.5 Is HP continuing funding and support for OpenVMS? Yes. Active development of new OpenVMS releases is underway, as well as the continuation of support. Please see the following URLs for details, roadmaps, and related information: o http://www.hp.com/go/openvms/ 2-5 General Information __________________________________________________________ 2.6 What OpenVMS distribution kits are available? Various distributions are available. For the most current information on the available part numbers and current products (OpenVMS distribution kits, media, documentation, etc) and the most current associated licensing information, please see the current OpenVMS Software Product Description (SPD) document, available at: o http://h18000.www1.hp.com/info/spd/ OpenVMS typically uses SPD 25.01.xx, SPD 41.87.xx, and SPD 82.35.xx. The CD-ROMs listed in Table 2-1 contain just the OpenVMS Alpha operating system. The operating system distribution kits are bootable, and can be used to run BACKUP from the optical media, as well as performing an installation or upgrade. ________________________________________________________________ Table 2-1 OpenVMS Alpha Media Kits _______________________________________________________ Part______________Description__________________________ QA-MT1AG-H8 OpenVMS Alpha V6.2-1H3 hardware release CD-ROM; also requires QA- MT1AA-H8.6.2 QA-MT1AR-H8 OpenVMS Alpha V7.1-2 maintenance release CD-ROM QA-MT1AT-H8 OpenVMS Alpha V7.2-1 maintenance release CD-ROM QA-MT1AU-H8 OpenVMS Alpha V7.2-2 maintenance release CD-ROM QA-MT3AA-H8 OpenVMS Alpha and VAX products and documentation on CD-ROM QA-MT3AE-H8 OpenVMS Alpha and VAX documentation ___________________________on_CD-ROM____________________________ OpenVMS I64 is distributed on DVD-ROM media, and is bootable. OpenVMS I64 licensing is implemented on a per-processor-socket basis, with the classic license 2-6 General Information tiers based on the numbers of processor sockets that can be present. Further, three general product and licensing groupings are optionally available with OpenVMS I64, the Foundation Operating Environment (FOE), the Enterprise Operating Environment (EOE), and (as/when/if available) the Mission Critical Operating Environment (MCOE). Seperate per-product licenses are generally also available for various of the products within the Operating Environment groups. ________________________________________________________________ Table 2-2 OpenVMS I64 Order Numbers _______________________________________________________ Part______________Description__________________________ BA322AA#??? OpenVMS I64 FOE Product BA323AA#??? OpenVMS I64 EOE Product _________BA324AA#???_______OpenVMS_I64_MCOE_Product_____________ The product suffix required for the order numbers listed in Table 2-2 can be found in Table 2-3. ________________________________________________________________ Table 2-3 OpenVMS I64 Media Suffix _______________________________________________________ Suffix____________Description__________________________ A18 OpenVMS I64 FOE V8.2 DVD media AJR OE media kit on DVD media _________0D1_______________Factory_installation_________________ The OpenVMS VAX, OpenVMS Alpha and OpenVMS I64 source listings sets referenced in Table 2-4 include the source listings of most of OpenVMS, and these machine- readable distributions are invaluable for any folks working directly with OpenVMS internals, as well as for folks interested in seeing examples of various OpenVMS programming interfaces. 2-7 General Information ________________________________________________________________ Table 2-4 OpenVMS Source Listings Kits _______________________________________________________ Part______________Description__________________________ QB-MT1AB-E8 OpenVMS Alpha Source Listings kit and license QT-MT1AB-Q8 OpenVMS Alpha Source Listings Updates BA422AA OpenVMS I64 Source Listings kit and license QB-001AB-E8 OpenVMS VAX Source Listings kit and license QT-001AB-Q8 OpenVMS VAX Source Listings Updates BA422AA OpenVMS I64 source listings kit and ___________________________license______________________________ Additional OpenVMS packages and technologies including NetBeans, XML, SOAP, UDDI, JDK, Perl, Tomcat, SSL and such are discussed within the OpenVMS e-Business Infrastructure Package SPD 80.58.xx. Again, please see the OpenVMS SPD and the documents and parts referenced there for the most current information. For information on non-commercial software distributions for use by and for OpenVMS Hobbyists, please see Section 2.8.1. _____________________________ 2.6.1 Where can I download OpenVMS and Layered Product Kits? HP customers with commercial licenses and support contracts can download software product distribution kits from the following HP website: o http://www1.sqp.com/ You can also find pointers to the Software Rollout Report and to the OpenVMS SPD listings via the above SQP website. 2-8 General Information Information on obtaining and transfering licenses is available in Section 2.6 and Section 2.8.4, while information on the OpenVMS Hobbyist licensing program and on obtaining hobbyist product distribution kits is in Section 2.8.1. __________________________________________________________ 2.7 In what language is OpenVMS written? OpenVMS is written in a wide variety of languages. In no particular order, OpenVMS components are implemented using Bliss, Macro, Ada, PLI, VAX and DEC C, Fortran, UIL, VAX and Alpha SDL, Pascal, MDL, DEC C++, DCL, Message, and Document. And this is certainly not a complete list. However, the rumor is NOT true that an attempt was made to write pieces of OpenVMS in every supported language so that the Run-Time Libraries could not be unbundled. (APL, BASIC, COBOL and RPG are just some of the languages NOT represented!) There are a large variety of small and not-so-small tools and DCL command procedures that are used as part of the OpenVMS build, and a source code control system capable of maintaining over a hundred thousand source files across multiple parallel development projects, and overlapping releases. __________________________________________________________ 2.8 Obtaining and Transfering OpenVMS licenses? The following sections describe hobbyist and educational license programs, as well as information on commercial licenses and transfers. For information on the available commercial OpenVMS licenses and for information on license transfers, please see Section 2.8.4. OpenVMS Hobbyist licenses are discussed in Section 2.8.1. For information on the licensing implementation, troubleshooting licensing problems, on the License Unit Requirements Table (LURT), and other related details, please see Section 5.39. For configuring and troubleshooting LMF, see Section 12.4. 2-9 General Information _____________________________ 2.8.1 Questions asked by Hobbyist OpenVMS licensees? If you are a member of an HP-recognized user group (eg: Encompass, Enterex, DECUS), and are considering acquiring and using a VAX, Alpha or (soon) IA-64 system for hobbyist (non-commercial) use, (free) license product authorization keys (PAKs) for OpenVMS VAX, OpenVMS Alpha, and (reportedly) OpenVMS I64, and layered products are available. In addition to the license keys, OpenVMS VAX and Alpha distribution CD-ROM distribution kits are available with OpenVMS, DECwindows Motif, DECnet and TCP/IP networking, compilers, and a variety of layered products. (A hobbyist distribution for OpenVMS I64 is expected.) (While the hobbyist CD- ROM distributions are intended for and tailored for OpenVMS Hobbyists, the contents and capabilities of the Hobbyist installation kits included within the OpenVMS Hobbyist distribution do not differ from the standard distribution installation kits. The products are chosen to reflect the most popular products and the space available on the media.) If you have questions on what else is authorized by the license agreement and on what other distribution media is available to you, well, please read the applicable software license agreement(s). For further information, please link to: o http://www.openvmshobbyist.org/ On the OpenVMS Hobbyist license registration form at the above website (as of August 2005), you are offered the choice of the "OpenVMS VAX" license(s), the "OpenVMS Alpha" license(s), and the "Layered Products" licenses. You will want the operating system license for your particular OpenVMS platform and you will want the "Layered Products" licenses. You will want to select and to acquire two sets of license PAKs. For vendors wishing to license products specifically for hobbyist use (and to not issue hobbyist PAKs), the program provides hobbyists with the license PAK OPENVMS-HOBBYIST. 2-10 General Information If you plan to use a hardware emulator (eg: VAX emulator) on a Microsoft Windows platform, make sure you have an OpenVMS distribution kit that can be installed and/or booted with the particular emulator package you plan to use. For additional information on emulators, please see Section 13.12 and particularly please see the emulator-related documentation. _____________________________ 2.8.1.1 Vendors offering Hobbyist Licenses o GrayMatter Software http://www.graysoft.com/GSCHobbyPR.html http://www.graysoft.com/GSCHobbyPR.html o Argent Software http://jams.argent-software.com/hobby.html o Kednos http://www.kednos.com/ o LJK http://ljk.com o Process Software http://www.process.com/openvms/hobbyist.html o Raxco http://www.raxco.com/hobbyist/ o Software Resources International (SRI) http://www.softresint.com/charon-vax/Tools_and_ tips.htm Hobbyist license product additions, and any updates for products already listed here are welcome. Please contact the FAQ Editor (hoff{atsign}hp{period}com) _____________________________ 2.8.2 OpenVMS Educational and CSLG licenses? For information on OpenVMS licenses for educational customers, please see the HP Campus Software License Grant (CSLG) license program and the OpenVMS Educational license program: o http://www.openvmsedu.com/ 2-11 General Information _____________________________ 2.8.3 What developer and partner licensing programs are available? Commercial software developers can join the HP DSPP program, and can (potentially) receive discounts on various software product licenses and software distributions, as well as on hardware purchases. o http://www.hp.com/go/dspp/ The DSPP program is the descendent of the DIGITAL ISVN and DIGITAL ASAP programs and the Compaq CSA program, and the analogous developer and partner programs at HP. One of the benefits available is a (free) license product authorization key (PAK) that enables the generation of license PAKs-the so-called PAKGEN PAK generator license PAK. An example of this is available on the OpenVMS Freeware V8.0 distribution. (And no, you can't use the Freeware PAKGEN PAK to generate any license PAK you might want.) Please see Section 2.8.3 for additional details on the DSPP program. For information on the OpenbVMS Hobbyist and OpenVMS Educational license programs, please see Section 2.8.1. _____________________________ 2.8.4 How do I obtain or transfer an OpenVMS license? To transfer a commercial OpenVMS license from one owner to another, or to purchase a commercial license, you can contact HP at regional sales office or reseller. For information on the hobbyist license program, please see Section 2.8.1. __________________________________________________________ 2.9 Does OpenVMS support the Euro currency symbol? OpenVMS can generate the %xA4 character code used for the Euro, and the DECwindows DECterm can display the glyph. Please check with the vendor of your terminal or terminal emulator for additional details. 2-12 General Information __________________________________________________________ 2.10 OpenVMS Ports? Itanium? Ports to IA-32, EM64T or AMD64 systems? OpenVMS has been ported to and is operational on four architectures: VAX, Alpha, IA-64, and IA-32. The first three have available native ports of OpenVMS, the fourth is available via emulation. VAX is the oldest architecture, and limited to 32-bit virtual and up to 34-bit physical addressing. The Alpha and IA-64 architectures are both 64-bit architectures, with 64-bit virtual addressing available. The available IA-32 emulation is provided for the OpenVMS VAX and other VAX operating systems, and provides a 32-bit VAX environment. For additional information on the emulation, please see Section 13.12. As for (the lack of) a native port for IA-32, OpenVMS Engineering presently and continues to believe that there would be insufficient market (read: profit, customer interest) to justify the cost involved in a native port of OpenVMS to systems using the Intel IA-32 architecture. In addition to the direct costs involved in any port and in addition to the substantial effort involved in moving backwards from a 64-bit environment on Alpha and on IA-64 to a 32-bit platform (such as IA-32), and the exceedingly non-trivial device qualification costs and the costs in moving backwards into older PCI and I/O environments (IA-32 systems more than a few years old have equivalently aged I/O support and buses), each organization and each person maintaining a product or a package for OpenVMS will have to justify a port to "OpenVMS IA-32", "OpenVMS EM64T" or "OpenVMS AMD64", akin to the decisions and the effort involved in porting a product from OpenVMS VAX to OpenVMS Alpha, or the port to OpenVMS I64. Platform ports of many of the various products can be easy, and many of the ports of applications using documented OpenVMS features are expected to require little more than a source rebuild. Other products can and do depend on platform-specific or undocumented features, and the associated ports can be more involved. Regardless, ports of operating systems are very large and involved projects. The prerequisite 2-13 General Information product requirements for an OpenVMS operating system port are also non-trivial, as well-compilers in particular are obviously required, and the suite of compilers provided must maintain a very high degree of source-level compatibility across the platforms. In the case of the HP Integrity port, OpenVMS I64 V8.0 used cross-compilers and cross-tools operating on OpenVMS Alpha systems, while V8.2 and later have various native compilers available. The OpenVMS I64 port was centrally built using the existing OpenVMS Alpha environment and around the work and the knowledge from the OpenVMS Alpha port, and OpenVMS Engineering fully expects that customers and ISVs will use and will continue to use OpenVMS Alpha systems to assist with their own ports to OpenVMS I64. OpenVMS Engineering fully expects to see customers using mixed-architecture clusters and fully shared file systems, as well. OpenVMS Engineering is well aware of the AMD AMD64 (64-bit) platform and processors. (At least one of the available VAX emulators can reportedly utilize parts of the AMD64 instruction set, please contact the VAX emulator vendor(s) or maintainer(s) for assistance and details on their products.) OpenVMS Engineering is also well aware of the Intel EM64T platform and processors. There are no plans to provide a native port of HP OpenVMS for any systems based on the AMD AMD64 nor Intel EM64T architectures. As part of the work leading to the Itanium port, senior engineers had extensively evaluated the products and the architectures available across the high-end 64-bit computing space, and chose to target Itanium for 64-bit environments-this while under the Compaq organization. This included looking at IA-32. HP (a co-developer of Itanium with Intel) had seperately chosen to target Intel Itanium for its high-end computer products. Compaq then announced plans for the future of Alpha through EV7-series products and platforms, and HP (entirely seperately) announced plans for PA-RISC products and platforms. The Itanium target has been maintained consistently since the Itanium port was 2-14 General Information announced by Compaq, and has also been consistently maintained by HP and by the combined company. For those folks prefering to follow the schedules and the product deliveries, OpenVMS Engineering had OpenVMS I64 V8.0 ready (internally) ahead of schedule-and with more features available within the release than had been originally planned for the release. (For information on and for schedules of future OpenVMS releases, please see the roadmap that is available at the OpenVMS website.) OpenVMS I64 itself does not require and does not plan to utilize the Itanium IA-32 32-bit environment for the operation of OpenVMS itself. OpenVMS I64 V8.0 and later run natively on the Itanium processor family, with no use of IA-32 instructions. While OpenVMS can and does support 32-bit OpenVMS applications and addressing on Itanium, this is done with sign- extension addressing techniques entirely analogous to what was done with 32-bit applications operating in the 64-bit Alpha environment. Both OpenVMS 32-bit and 64-bit applications operate within the native Itanium instruction set and run-time environment, and do not use the Itanium IA-32 environment. But yes, a native IA-32 port or a native AMD AMD64 or Intel EM64T port of OpenVMS would certainly be nice to have-this, of course, following the traditional Linux preference for having a Linux port available for most (all?) computer architectures known, and even for certain high-end refrigerators and toasters, and similar appliance-like devices. (The downside of this all-encompassing approach: this requires near-infinite engineering and support costs from the various vendors involved, and the qualification efforts and costs of most everything-everywhere. Or reduced or eliminated testing and support efforts. Or an unfortunate combination of these two. These costs are huge, and the benefits derived from the work are comparatively small when given the comparable costs of more targeted (and thus supported and supportable) hardware configurations-the platform targets are and must be carefully selected and considered by each vendor. Put another way, there are no plans to provide 2-15 General Information a native port of HP OpenVMS for systems based on Intel IA-32 processors, nor for systems based on AMD AMD64 nor Intel EM64T architectures and processors. All this material having been written, have you looked at the system configurations and pricing of the available HP Integrity Intel Itanium systems? Low- end computer hardware is clearly a commodity product, and the systems are priced, serviced, upgraded, and replaced accordingly. Intel Itanium is a commodity microprocessor presently used in platforms available from various hardware vendors, including (obviously) from HP. Further, Itanium is a microprocessor available from and supported by Intel, a semiconductor vendor known for exceedingly high-volume microprocessor fabrication process and production capabilities. For information on supported platforms and processors, please see the OpenVMS Software Product Description (SPD) at: o http://h18000.www1.hp.com/info/spd/ OpenVMS typically uses SPD 25.01.xx, SPD 41.87.xx, and SPD 82.35.xx. Please see Section 14.4.5 for Intel Itanium terminology. __________________________________________________________ 2.11 Are there any network-accessible OpenVMS systems? Yes, though various restrictions can and do apply. o Hobbes Hobbes is a MicroVAX 3100 Model 40 for which free access and accounts are available to OpenVMS enthusiasts. This system has BASIC, Pascal, Fortran, and C compilers installed. If you would like an account on Hobbes, please see the FAQ at o http://www.hobbesthevax.com/ o OpenVMS Galaxy Test-Drive HP currently offers an OpenVMS Galaxy Test-Drive system, based on an AlphaServer 4100 series 2-16 General Information configured as two instances of the OpenVMS operating system. For details, please visit: o http://www.testdrive.hp.com/ o HP DSPP Test-Drive The HP DSPP program offers various test-drive systems, including an HP Integrity Itanium development system and an HP OpenVMS I64 installation on an HP Integrity rx2600 server. For details on the DSPP program and on the test-drive systems, please see section Section 2.8.3 and please visit: o http://www.testdrive.hp.com/ o http://www.hp.com/dspp/ The test-drive systems do require registration, though access to the systems is free. o Encompasserve Encompasserve offers free access an OpenVMS Alpha system. o telnet://eisner.decus.org/ o OpenECS OpenECS offers free access to a VAX 6000 model 530 system. If interested, please visit: o http://vax6k.openecs.org/ o The Deathrow Cluster The maintainers of the Deathrow Cluster offer access to an OpenVMS VAX and an OpenVMS Alpha system, configured in a cluster. o telnet://deathrow.vistech.net o The Preatorian Public OpenVMS Cluster The maintainers of the Deathrow Cluster offer access to an OpenVMS Alpha cluster. Details are at the website listed below: o http://www.preatorian.net 2-17 General Information __________________________________________________________ 2.12 What version of OpenVMS do I need? For information on supported platforms, please see the OpenVMS Software Product Description (SPD) for the particular OpenVMS version of interest. o http://h18000.www1.hp.com/info/spd/ OpenVMS typically uses SPD 25.01.xx, SPD 41.87.xx, and SPD 82.35.xx. For a table of the minimum and (as applicable) maximum OpenVMS versions required for various platforms, please see the hardware support chart at HP OpenVMS website and (as available) the following (potentially volatile; intra-website) link: o http://h71000.www7.hp.com/openvms/hw_ supportchart.html For information on the Multia, related Alpha single-board computers, or other officially unsupported systems, please see Section 14.4.1 and Section 14.4.2.1. The following is a rule-of-thumb for Alpha platform support. The table Table 2-5 contains the earliest OpenVMS Alpha release with support for a particular series of Alpha microprocessors: ________________________________________________________________ Table 2-5 OpenVMS Alpha Version Rule-Of-Thumb _______________________________________________________ MicroprocessorOpenVMS Generic_____Generation____Version_____General_Comments_ EV4 21064 V1.0 few systems; most EV4 require later; upgrade available EV5 21164 V6.2 subsequent upgrade available 2-18 General Information ________________________________________________________________ Table 2-5 (Cont.) OpenVMS Alpha Version Rule-Of-Thumb _______________________________________________________ MicroprocessorOpenVMS Generic_____Generation____Version_____General_Comments_ EV56 21164A V6.2-1H3 subsequent upgrade to V7.1 and later EV6 21264 V7.1-2 subsequent upgrade typically to V7.2-1 or later EV67 21264A V7.1-2 subsequent upgrade typically to V7.2-1 or later EV68 21264B, C V7.2-1 believed/probable; and D currently an unconfirmed _______________________________________________expectation______ Specific hardware present and various system configurations can require OpenVMS Alpha releases later than those referenced in Table 2-5. __________________________________________________________ 2.13 How can I submit OpenVMS Freeware? For the guidelines and submission info, please visit the URL: o http://www.hp.com/go/openvms/freeware/ To order the current OpenVMS Freeware CD-ROM kit (shipping and handling charges apply), please request part number QA-6KZAA-H8. 2-19 General Information __________________________________________________________ 2.14 Porting applications to OpenVMS? Porting can range from simple to rather complex, and depends on the features used on the original platform. This section covers generic porting, and porting among OpenVMS VAX OpenVMS Alpha, and OpenVMS I64. (Porting among OpenVMS VAX, OpenVMS Alpha and OpenVMS I64 is often quite simple and involves little more than rebuilding from source, though a few applications using features specific to the platform or the architecture, or using undocumented or unsupported interfaces can and likely will require some additional effort to port.) Several manuals on porting from OpenVMS VAX to OpenVMS Alpha are available in the OpenVMS documentation set, including information on porting VAX Macro32 assembler code to the Macro32 compiler on OpenVMS Alpha, on management differences, on upgrading privileged code, and application migration: o http://www.hp.com/go/openvms/doc/ Documentation on porting to OpenVMS I64 is available, as well. Details on the C programming environment are available at: o http://www.openvms.compaq.com/commercial/c/c_ index.html Details on porting VAX C to HP C are are available at: o http://www.openvms.compaq.com/commercial/c/index_ vax.htm An OpenVMS Porting Library is available at: o http://www.openvms.compaq.com/ebusiness/Technology.html Information on the Enterprise Toolkit, a Visual-based development environment for developing applications for OpenVMS using a Microsoft platform, is available at: o http://www.openvms.compaq.com/commercial/et/et_ index.html 2-20 General Information Details on DCE, CORBA, BridgeWorks, and COM/DCOM middleware is available at: o http://www.openvms.compaq.com/commercial/middleware.html Information on the COE standards is available at: o http://diicoe.disa.mil/coe/ A wide variety of programming development tools and middleware are available as commercial products (eg: DECset, IBM WebSphere MQ-formerly MQseries), and various tools are also available as shareware or as Freeware. Please see other sections of this FAQ, and please see: o http://www.hp.com/go/dspp_catalog __________________________________________________________ 2.15 What resources are available to OpenVMS software developers? The HP Developer and Software Product Partner (DSPP) program is open to and intended to support and to assist HP OpenVMS software partners, consultants, and service providers: o http://www.hp.com/dspp/ DSPP provides members with various benefits, please see the website for details. For those not familiar with the DSPP program or with its history, the DIGITAL Association of Software and Application Partners (ASAP) program and the DIGITAL Independent Software Vendors Network (ISVN) program were incorporated into the Compaq CSA program, and the CSA program has subsequently been incorporated into the HP DSPP program. Please see Section 2.8.3 for additional details on the DSPP program. 2-21 General Information __________________________________________________________ 2.16 memory management, resource management, process scheduling, etc? So you have been instructed to write a school research paper on OpenVMS, and you need technical content on the OpenVMS Virtual Memory System, on any memory segmentation, on OpenVMS Resource Management, on the OpenVMS File System, on the OpenVMS user interface, etc. Invariably, your professor/instructor/teacher will ask you a series of questions. Most commonly, the questions will request descriptions of one or more of the following items, and at varying levels of detail: o process scheduling algorithm(s) o Interprocess comunications o Process or system synchronization constructs o Memory management and/or virtual memory implementation o RMS or XQP file structures o Resource management o History of HP OpenVMS o History of Compaq and/or of Digital Equipment Corporation (DEC) Any particular presentation or research paper, and particularly a scholastic presentation, can have many different potential target audiences, and very different presentation levels. Further, the usual underlying reason for scholastic presentations and scholastic research projects really has little to do with the subject matter, it is a task specifically intended to teach the student(s) (eg: you) how to perform the research. The instructor already knows most of (all of?) the information that you have been asked to collect. 2-22 General Information For very technical details on OpenVMS and OpenVMS internals, the book you want is the Internals and Data Structures Manual (IDSM), available in your school or computing center library, and the IDSM can also be purchased. Additional technical details of the Alpha microprocessor are available in the Alpha Architecture Reference Manual documentation that is available for download. (Pointers to Alpha technical documentation are available in Section 14.6, and elsewhere.) For higher-level (less technical) details, the OpenVMS documentation set is available on-line. The Programming Concepts and the File Systems manual are probably the best manuals to start with, depending on the particular level of detail the research requires. And please understand the hesitation of various folks to provide you with a completely-written research report on your topic. Why? We might have to work with you after you graduate-you need to know how to perform at least basic research on your own, regardless of the topic. __________________________________________________________ 2.17 Basic Units of Measurement? OpenVMS and the underlying hardware use various units of measurement for disk and memory storage, and related abbreviations also typically exist. This section covers the most common units, and the associated abbreviations. _____________________________ 2.17.1 How many bytes are in a disk block? A disk block is the minimum unit of disk storage allocation in OpenVMS. Under OpenVMS VAX and OpenVMS Alpha, the disk volume block size is consistent, with each block containing 512 bytes. The minimum disk allocation granularity actually permissible (in the ODS-2 and ODS-5 volume structures commonly used on OpenVMS) is determined on a per-volume basis, and is typically based on a combination of the 2-23 General Information total number blocks on the disk volume and the total size of the volume storage bitmap. The allocation granularity is known as the volume cluster factor- the cluster factor is the number of blocks in a disk cluster, and it is the smallest number of blocks that can be allocated on a particular disk volume. Prior to OpenVMS V7.2, the maximum permissible size of the bitmap requires larger cluster factors as volume sizes increase. Starting with V7.2, the bitmap can be larger, and cluster factors as small as one block can be used. The number of bytes in a file can be determined by multiplying the number of blocks allocated for the file times the number of bytes in a block. For sequential files (only), the FFB (XAB$W_FFB, in the File Header XAB) value can be used to find out how much of the last (XAB$L_EBK) block is used. FFB and EBK are meaningful only for sequential files, and only in a limited context-partial block allocations are not permitted. For other file formats, the EOF marker is not meaningful. Disk allocations always occur only in units of the cluster factors, which can be from one block up to (potentially) clusters of eighteen blocks or more, depending on the volume cluster factor. (OpenVMS V7.2 and later optionally provide for a cluster factor of one up to volumes of approximately 137 gigabytes.) OpenVMS assumes that the device driver and the underlying storage device will present the file system with addressable units of storage of 512 bytes in size, or the appearance of same. Various third-party CD-ROM devices, for instance, support only 2048 byte blocks, and such devices are incompatible with the standard OpenVMS device drivers. To determine the number of bytes required for a file from DCL, one option uses the f$file_attributes item EOF, multiplied by the size of a block in bytes (512). This does not account for the unused space in the last block of a sequential file, but it also does not have to differentiate sequential files from other files. 2-24 General Information _____________________________ 2.17.2 How many bytes are in a memory page? A memory page is the minimum unit of memory allocation in OpenVMS. With OpenVMS VAX, the memory page size matches the disk block size: it is always 512 bytes. With OpenVMS Alpha, the memory page size is variable, and it can range from 8192 bytes (8 kilobytes) up to 64 kilobytes. The current system page size can be determined using the sys$getsyi or f$getsyi PAGE_SIZE item. Programs with hardcoded constants for the memory page size (or page alignment) should always assume a page size of 64 kilobytes. On OpenVMS I64, the memory page size is also variable, ranging from 4096 bytes (4 kilobytes) up to 256 megabytes (MB) and potentially up to 4 gigabytes (GB). As with OpenVMS Alpha, sys$getsyi and f$getsyi and the PAGE_SIZE itemcode can and should be used to determine the current system page size. In general, OpenVMS I64 will use a page size of 8 kilobytes, or larger. On OpenVMS Alpha and on OpenVMS I64, a 512 byte area of memory- equivalent in size to an OpenVMS VAX memory page-is often refered to as a "pagelet". _____________________________ 2.17.3 How do I convert? Disk Blocks? KB, MB, GB, TB? The smallest granularity of disk storage addressing is called a disk block, or sometimes a disk sector. Groups of disk blocks are usually organized together into the smallest unit of storage that can be allocated, and this unit is called a disk cluster. The number of blocks in a cluster is the cluster factor, and is established when the disk volume is initialized. Each individual disk block is composed of five hundred twelve (512) bytes, or one-half kilobyte. Each byte is comprised of eight bits. A bit represents the smallest unit of information, typically refered to as a one or a zero. 2-25 General Information OpenVMS tends to uses base two notation for disk storage, while disk storage capacity specifications from most storage vendors will generally use base ten notation. An OpenVMS disk block is 512 bytes in size; this is one-half kilobyte in base two notation. The following table describes the prefix, the abbreviation, and the associated base ten (as used by marketing and by storage vendors) and base two (OpenVMS and various other operating systems) values. Base Ten Base Two -------------------------------- ------------------------- Kilobyte (KB) 10**3 1000 2**10 1024 Megabyte (MB) 10**6 1000000 2**20 1048576 Gigabyte (GB) 10**9 1000000000 2**30 1073741824 Terabyte (TB) 10**12 1000000000000 2**40 1099511627776 Petabyte (PB) 10**15 1000000000000000 2**50 1125899906842624 Exabyte (EB) 10**18 1000000000000000000 2**60 1152921504606846976 The base ten representation of the 2**40 value is 1099511627776, which is obviously rather ugly. When viewed as a base eight or base sixteen (octal or hexadecimal, respectively) value, the value is far nicer. Specifically, the value is 10000000000 and 40000000 when represented in octal and hexadecimal, respectively. FAQ Notation Within the OpenVMS FAQ, a thousand bits (either assuming base two or base ten, as determined by the context) is refered to as a kilobit, and is always represented by the appreviation Kb, while a thousand bytes is refered to as a kilobyte and is always abbreviated as KB. Similar notational usage also holds for Megabits (Mb) and Megabytes (MB), and for the various other units. OpenVMS operating system references to system and storage are generally to the base-two version (eg: 1024, in the case of a kilobyte or kilobit) while storage hardware references and hardware specifications are generally to the base-ten version (eg: 1000). 2-26 General Information To convert OpenVMS disk blocks to (base two) kilobytes (KB; 1024 bytes), simply divide by two. To convert blocks to (base two) megabytes, divide by 2048. Blocks to (base two) gigabytes (GB), divide by 2097152. These particular divisions can also be performed using bitshifts: to divide a value by two, shift the binary value rightward by one bit position. To convert OpenVMS disk blocks to (base ten) kilobytes, divide by approximately 1.953125. For those folks with an interest in odd applications for prefixes, and particularly for those folks also rummaging around deep within the OpenVMS operating system, a microfortnight is approximately one second. 2-27 _______________________________________________________ 3 Documentation __________________________________________________________ 3.1 Where can I find online copies of OpenVMS manuals? The HP OpenVMS and HP Layered Product documentation is copyrighted material. HTML format on-line product documentation sets for specific HP OpenVMS products are presently available at: o http://www.hp.com/go/openvms/doc/ Documentation is offered on separately orderable CD-ROM media through a subscription to the Consolidated On- Line Documentation (ConOLD) product (see Section 2.6.) ConOLD manuals are readable with BNU, a viewer that is supplied with the documentation distribution. BNU can display HTML, Bookreader, and documentation in other formats. MGBOOK, a viewer for Bookreader-format documentation is available for character-cell terminals (eg. VTxxx) via the WKU VMS Freeware file server - see question Section 13.1 for details. Information on the XPDF DECwindows PDF viewer for OpenVMS is available in Section 13.1, and XPDF kits are available on various Freeware distributions. An alternative on OpenVMS Alpha uses the Adobe Java PDF viewer, though this viewer is generally considered to be both slower and more resource-intensive when compared to the XPDF viewer. 3-1 Documentation __________________________________________________________ 3.2 What online information and websites are available? On your OpenVMS system, the HELP command can provide a wealth of information, not only on DCL commands but on system services (HELP System_Services) and Run-Time Library routines (HELP RTL_Routines). The introduction displayed when you type the HELP command with no additional keywords provides further pointers. OpenVMS Marketing runs a web server at http://www.hp.com/go/openvms/ Here, you will find product information, strategy documents, product roadmaps, the contents of the latest OpenVMS Freeware CD-ROM and more. ________________________________________________________________ Table 3-1 OpenVMS Websites ________________________________________________________________ URL_______Sponsor_______________________________________________ HP OpenVMS Marketing http://www.hp.com/go/openvms/ Encompass DFWCUG http://www.openvmshobbyist.org/ Arne Vajhøj http://www.levitte.org/~ava/ Saiga Systems http://www.saiga.com/ Wayne Sewell http://www.tachysoft.com/ proGIS Software http://www.progis.de/openvms.htm Jeff Cameron http://www.jcameron.com/vms/ David Mathog's (quite useful) information about OpenVMS. http://saf.bio.caltech.edu/soft_doc.html Cracking 3-2 Documentation ________________________________________________________________ Table 3-1 (Cont.) OpenVMS Websites ________________________________________________________________ URL_______Sponsor_______________________________________________ "The Beave" Includes system cracking information that can be of interest to OpenVMS System Managers, and to OpenVMS Network and Security Managers. This information is available at the Deathrow cluster. http://manson.vistech.net/ht_root/Hack-VMS-faq Undocumented Features DECUS Deutschland http://zinser.no-ip.info/www/eng/vms/qaa/undoc.htmlx Arne Vajhøj http://www.levitte.org/~ava/vms_tip.htmlx The OpenVMS Freeware contains various examples of undocumented features and interfaces http://www.hp.com/go/openvms/freeware/ Comparisons of UNIX and Linux shell commands and DCL Commands http://www.mcsr.olemiss.edu/unixhelp/VMStoUNIX.html http://wwwvms.mppmu.mpg.de/vmsdoc/UNIX_VMS_CMD_ XREF.HTML Comparisons of emacs and OpenVMS text editor commands http://www.unh.edu/cis/docs/vms-to-unix/Emacs/cheat- sheet.html Bibliographies http://www.openvms.org/pages.php?page=Books http://www.levitte.org/~ava/vms_book.htmlx Introductory Please see Table 3-2 for listings of introductory web sites and related materials. Programming An OpenVMS Programming FAQ http://www.pdv-systeme.de/users/martinv/VMS_ Programming_FAQ.html Networking 3-3 Documentation ________________________________________________________________ Table 3-1 (Cont.) OpenVMS Websites ________________________________________________________________ URL_______Sponsor_______________________________________________ Tutorial information and tips for connecting OpenVMS systems to the Internet http://www.tmesis.com/internet/ Documentation and Specifications for DECnet Phase IV, DECnet task-to-task DCL examples, and a whole lot more. http://www.hp.com/go/openvms/wizard/ HP OpenVMS Documentation Please see Table 3-2 for listings of documentation web sites and related materials. System Performance See Section 14.2. Patch (ECO) Kits For the HP Services FTP server hosting Various contract-access and non-contract access ECO (patch) kits, see section Section 5.17. Catalogs and Pricing HP Product QuickSpecs and product information http://www.hp.com/go/productbulletin/ The HP Systems and Options Catalog (SOC) archive http://www.compaq.com/products/ quickspecs/soc_archives/SOC_Archives.html Hardware and Software Archives The VAXarchive, including hardware and software information http://vax.sevensages.org/index.html A VAX to Alpha upgrade diary http://www3.sympatico.ca/n.rieck/docs/alpha_diary.html Scanned versions of old DIGITAL manuals from DFWCUG http://www.montagar.com/~patj/dec/hcps.htm A wide variety of HP VAX, Alpha, platform and other product documentation. Some introductory, some technical. http://www.compaq.com/support/techpubs/qrg/index.html 3-4 Documentation ________________________________________________________________ Table 3-1 (Cont.) OpenVMS Websites ________________________________________________________________ URL_______Sponsor_______________________________________________ dtrwiz's Datatrieve website __________http://dtrwiz.home.netcom.com/________________________ __________________________________________________________ 3.3 How do I extract the contents of a HELP topic to a text file? To extract all the text of a HELP topic (and its subtopics) to a text file for perusal with a text editor, printing out, etc., use the following command: $ HELP/OUT=filename.txt help-topic [help-subtopic] If the help text you want is not in the standard help library (for example, it's help for a utility such as MAIL that has its own help library), add /LIBRARY=libname after the HELP verb. To see the names of help library files, do a directory of SYS$HELP:*.HLB. __________________________________________________________ 3.4 Does OpenVMS Marketing have an e-mail address? Yes - if you can't get the answers to marketing questions elsewhere, if you have comments or complaints about OpenVMS, send mail to openvms-info{atsign}hp.com. This address is not a support channel, and is solely intended to provide informal method to communicate directly with members of OpenVMS Marketing. __________________________________________________________ 3.5 Where can I learn about OpenVMS executive internals? The OpenVMS Internals and Data Structure manual (IDSM) explains how the OpenVMS executive works. The book covers the operating system kernel: process management; memory management; the I/O subsystem; and the mechanisms that transfer control to, from, and among these. It gives an overview of a particular area of the system, followed by descriptions of the data structures related to that area and details of the code that implements the area. 3-5 Documentation The first edition of the OpenVMS Alpha internals book describes Version 1.5. Although there have been several releases of OpenVMS Alpha since Version 1.5 (V6.1, V6.2, V7.0, V7.1, etc) and many details in the book are no longer accurate, it continues to provide a strong conceptual description of OpenVMS internals. This book has been split into five pieces, each to be updated separately. The first such volume, published in early 1997, was "OpenVMS Alpha Internals and Data Structures: Scheduling and Process Control," which covers the Version 7.0 implementation of true multithreading and the changed scheduling model it implies. The internals books are available through Digital Press, see Section 3.6 __________________________________________________________ 3.6 Where can new users find tutorial information about OpenVMS? First, see if your local site has information on this topic. Each site can have site-specific features and configuration. Some sites will have site-specific new user's documentation, covering various site-specific things that are difficult or impossible for the general OpenVMS documentation to cover. _____________________________ 3.6.1 Tutorial Websites? Various websites with OpenVMS information are available; Table 3-2 contains some suggested URLs. ________________________________________________________________ Table 3-2 OpenVMS Tutorial and Documentation Websites _______________________________________________________ URL_______Sponsor______________________________________ Introductory http://www.levitte.org/~ava/vms_faq.htmlx http://saf.bio.caltech.edu/vms_sheet.html 3-6 Documentation ________________________________________________________________ Table 3-2 (Cont.) OpenVMS Tutorial and Documentation Websites _______________________________________________________ URL_______Sponsor______________________________________ http://seqaxp.bio.caltech.edu/www/vms_beginners_ faq.html Various introductory materials http://www.montagar.com/openvms_class/ Members of the Encompass DFWCUG maintain a website with many materials available, including an Overview of OpenVMS, an Introduction to DCL and the TPU Editor, Advanced DCL Command Procedures, OpenVMS Operations: Batch, Print, Tape, an Introduction to OpenVMS Management, to OpenVMS User Management, to OpenVMS Network Management, and to OpenVMS Cluster Management. These training materials have been presented at various DECUS symposia. http://www.mcsr.olemiss.edu/unixhelp/VMStoUNIX.html A comparison table of various command-level tasks, with information on the UNIX and Linux shell command(s), and on the OpenVMS DCL command(s). HP OpenVMS Documentation http://www.hp.com/go/openvms/doc/ Various introductory guides as well as more advanced manuals are available in the OpenVMS and layered product documentation set. HP OpenVMS Training http://www.compaq.com/training/home.html http://www.openvms.compaq.com/wbt/index.html HP offers training information and Technical Resource Kits (TRKs) and other Training for OpenVMS. An OpenVMS certification (testing) program is also available. http://www.jcameron.com/vms/ 3-7 Documentation ________________________________________________________________ Table 3-2 (Cont.) OpenVMS Tutorial and Documentation Websites _______________________________________________________ URL_______Sponsor______________________________________ An OpenVMS Quiz http://www.CCSScorp.com/ CCSS Interactive Learning has OpenVMS training materials http://www.acersoft.com/ AcerSoft Training information, and Shannon Knows Punditry http://www.mindiq.com/ MindIQ training information http://www.quadratrix.be/ Quadratrix; OpenVMS training, products and services; affiliated with Global Knowledge ___________________and_KeyJob___________________________________ _____________________________ 3.6.2 Books and Tutorials? Some of the OpenVMS books that are now or that have been available from the Elsevier Digital Press imprint o http://www.digitalpressbooks.com/ are listed in Table 3-3: ________________________________________________________________ Table 3-3 DP Books ________________________________________________________________ Title_and_Author_____________________ISBN_______________________ Getting Started with OpenVMS 1-55558-279-6 Michael D. Duffy Getting Started with OpenVMS System 1-55558-243-5 Management, 2nd Edition David Donald Miller, et al 3-8 Documentation ________________________________________________________________ Table 3-3 (Cont.) DP Books ________________________________________________________________ Title_and_Author_____________________ISBN_______________________ Introduction to OpenVMS, 5th 1-55558-194-3 Edition Lesley Ogilvie Rice Introduction to OpenVMS 1-878956-61-2 David W Bynon OpenVMS Alpha Internals: Scheduling 1-55558-156-0 and Process Control OpenVMS AXP Internals and Data 1-55558-120-X Structures: Version 1.5 OpenVMS System Management Guide 1-55558-143-9 Baldwin, et al The OpenVMS User's Guide, Second 1-55558-203-6 Edition Patrick Holmay Using DECwindows Motif for OpenVMS 1-55558-114-5 Margie Sherlock VAX/VMS Internals and Data 1-55558-059-9 Structures: Version 5.2 Writing Real Programs in DCL, 1-55558-191-9 Second Edition Hoffman and Anagnostopoulos Writing OpenVMS Alpha Device 1-55558-133-1 Drivers in C Sherlock_and_Szubowicz__________________________________________ Within the above table, no attempt is made to track which books are currently in print, or are currently out of print. For various featured OpenVMS books, also please see the books link at the OpenVMS website: o http://www.hp.com/go/openvms 3-9 Documentation For a bibliography of various OpenVMS books, please see: o http://www.levitte.org/~ava/vms_book.htmlx __________________________________________________________ 3.7 What OpenVMS mailing lists and forums are available? Various OpenVMS mailing lists are available, with some of the available lists detailed in Table 3-4, as are the various discussion forums in Table 3-5. ________________________________________________________________ Table 3-4 OpenVMS Mailing Lists ________________________________________________________________ Subscription____________________Interest_Area___________________ OpenVMS Freeware archive FSupdate@goatley.com announcement list FSupdate-request@goatley.com[1] Two-way echo of VMSnet-Internals@goatley.com vmsnet.internals VMSnet-Internals- request@goatley.com[1] OpenVMS Alpha Internals Alpha-IDS@goatley.com discussions Alpha-IDS-request@goatley.com[1] BLISS discussions BLISSters@goatley.com BLISSters-request@goatley.com[1] Process Software MultiNet Info-MultiNet@process.com mailing list (news gateway) Info-MultiNet- request@process.com[1] Process Software TCPware Info-TCPware@process.com mailing list (news gateway) Info-TCPware- request@process.com[1] Process Software PMDF mailing Info-PMDF@process.com list (news gateway) Info-PMDF-request@process.com[1] The Software Resources CHARON-VAX-Users@process.com International (SRI) CHARON-VAX CHARON-VAX-Users- VAX emulator package request@process.com[1] ________________________________________________________________ [1]This is the subscription address. Usually, you will want to send a mail message with no subject line, and a SUBSCRIBE or HELP command in the body of the mail message. 3-10 Documentation ________________________________________________________________ Table 3-4 (Cont.) OpenVMS Mailing Lists ________________________________________________________________ Subscription____________________Interest_Area___________________ Info-Zip's Zip & UnZip Info-Zip@wku.edu discussion list Info-Zip-Request@wku.edu[1] RADIUS-VMS, a RADIUS server radius-vms@dls.net for OpenVMS discussion forum radius-vms-request@dls.net[1] Internet Service Providers vms-isps@dls.net (ISPs) running OpenVMS vms-isps-request@dls.net[1] Users of Mark Daniel's WASD http://wasd.vsm.com.au/ web server for OpenVMS VAX and Alpha exists. Information about this list server and details on how to subscribe to the list are available at the referenced website. VMS Forum http://www.neurophys.wisc.edu/comp/ava/vms_ forum.htmlx ________________________________________________________________ [1]This is the subscription address. Usually, you will want to send a mail message with no subject line, and a SUBSCRIBE or HELP command in the body of the mail message. ________________________________________________________________ Various OpenVMS discussion forums are available, with some of the available lists detailed in Table 3-5. ________________________________________________________________ Table 3-5 OpenVMS Discussion Forums ________________________________________________________________ DescriptioForum_Location________________________________________ The comp.os.vms newsgroup news:comp.os.vms HP ITRC Forums http://forums.itrc.hp.com/service/forums/familyhome.do?familyId=288 Hunter Goatley: The HG OpenVMS Message Board http://www.goatley.com/scripts/vmsboard/view.com Computing.Net: OpenVMS Message Area 3-11 Documentation ________________________________________________________________ Table 3-5 (Cont.) OpenVMS Discussion Forums ________________________________________________________________ DescriptioForum_Location________________________________________ http://www.computing.net/openvms/wwwboard/wwwboard.html Tek-Tips: DEC (HP/Compaq): OpenVMS Forum http://www.tek- tips.com/gthreadminder.cfm/lev2/3/lev3/19/pid/951 OpenVMS.Org forums http://www.openvms.org/ OpenVMSHobbyist.Org forums http://www.openvmshobbyist.org/ Encompasserve (DECUSserve) Notes Conferences __________telnet://www.encompasserve.org/_______________________ __________________________________________________________ 3.8 What is this Ask The Wizard website I've heard about? The HP OpenVMS Ask The Wizard (ATW) website was an informal area discussing OpenVMS, containing questions and answers on a wide variety of topics. o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. To access a cited topic directly, use the URL filename WIZ_topic-number.HTML, or use the topic search engine. Cited topics are shown in parentheses, and act as unique topic addresses. These should not be confused with the relative topic numbers shown at the site. For example, the topic (1020) can be accessed directly using the URL filename wiz_1020.html, at the web site that the following URL resolves into: o http://www.hp.com/go/openvms/wizard/ 3-12 Documentation A zip archive (named wizard.zip) containing all of the available topics and questions can be downloaded from the above URL. The wizard.zip zip archive is completely regenerated when/if existing topics posted out to the ATW website are updated. Copies of this wizard.zip archive also generally ship out on the OpenVMS Freeware, as well. New (informal) questions and discussions are now being directed away from the ATW area to the ITRC area, and specifically to the ITRC discussion forums: o http://www.itrc.hp.com/ __________________________________________________________ 3.9 Where can I find the latest C run-time library manuals? The C run-time library (RTL) reference documentation has been moved from the C language documentation set to the OpenVMS documentation set. For the most recent version of the C RTL documentation and the OpenVMS standard C library, please see the OpenVMS manuals. In addition to the user-mode C RTL, there is a second kernel-mode RTL accessable to drivers on OpenVMS Alpha and OpenVMS I64. For details on this second library and on the duplicate symbol errors that can be triggered when this library is referenced during an incorrectly- specified LINK command, please see Section 10.22.1. For general information on this kernel RTL, see the Digital Press book Writing OpenVMS Device Drivers in C. For details, please see the associated OpenVMS source listings distribution. o http://www.hp.com/go/openvms/doc/ 3-13 _______________________________________________________ 4 Time and Timekeeping This chapter discusses time, timekeeping, system time synchronization, clock skew and clock drift, implications of using SUBMIT/AFTER=TOMORROW, and other time-related topics. __________________________________________________________ 4.1 A brief history of OpenVMS Timekeeping, please? Why does OpenVMS regards November 17, 1858 as the beginning of time... The modified Julian date adopted by the Smithsonian Astrophysical Observatory (SAO) for satellite tracking is Julian Day 2400000.5, which turns out to be midnight on November 17, 1858. SAO started tracking satellites with an 8K (nonvirtual) 36-bit IBM 704 in 1957 when Sputnik went into orbit. The Julian day was 2435839 on January 1, 1957. This is 11225377 octal, which was too big to fit into an 18-bit field. With only 8K of memory, the 14 bits left over by keeping the Julian date in its own 36-bit word would have been wasted. SAO also needed the fraction of the current day (for which 18 bits gave enough accuracy), so it was decided to keep the number of days in the left 18 bits and the fraction of a day in the right 18 bits of one word. Eighteen bits allows the truncated Julian Day (the SAO day) to grow as large as 262143, which from November 17, 1858, allowed for 7 centuries. Possibly, the date could only grow as large as 131071 (using 17 bits), but this still covers 3 centuries and leaves the possibility of representing negative time. The 1858 date preceded the oldest star catalogue in use at SAO, which also avoided having to use negative time in any of the satellite tracking calculations. 4-1 Time and Timekeeping The original Julian Day (JD) is used by astronomers and expressed in days since noon January 1, 4713 B.C. This measure of time was introduced by Joseph Scaliger in the 16th century. It is named in honor of his father, Julius Caesar Scaliger (note that this Julian Day is different from the Julian calendar that is named for the Roman Emperor Julius Caesar!). Why 4713 BC? Scaliger traced three time cycles and found that they were all in the first year of their cyle in 4713 B.C. The three cycles are 15, 19, and 28 years long. By multiplying these three numbers (15 * 19 * 28 = 7980), he was able to represent any date from 4713 B.C. through 3267 A.D. The starting year was before any historical event known to him. In fact, the Jewish calendar marks the start of the world as 3761 B.C. Today his numbering scheme is still used by astronomers to avoid the difficulties of converting the months of different calendars in use during different eras. The following web sites: o http://www.openvms.compaq.com/openvms/products/year- 2000/leap.html o http://www.eecis.udel.edu/~ntp/ o http://www.nist.gov/ o http://www.boulder.nist.gov/timefreq/ o http://www.tondering.dk/claus/calendar.html o http://es.rice.edu/ES/humsoc/Galileo/Things/gregorian_ calendar.html o http://www.timeanddate.com are all good time-related resources, with some general and some specific to OpenVMS. 4-2 Time and Timekeeping _____________________________ 4.1.1__Details_of_the_OpenVMS system time-keeping? 4.1.1.1__VAX_hardware_time-keeping details... 4.1.1.1.1 TOY clock This is battery backed up hardware timing circuitry used to keep the correct time of year during rebooting, power failures, and system shutdown. This clock only keeps track of months, days, and time. The time is kept relative to January 1st, at 00:00:00.00 of the year the clock was initiailized. The VAX Time-Of-Year (TOY) clock (used to save the time over a reboot or power failure) is specified as having an accuracy of 0.0025%. This is a drift of roughly 65 seconds per month. The VAX Interval Time is used to keep the running time, and this has a specified accuracy of .01%. This is a drift of approximately 8.64 seconds per day. Any high-IPL activity can interfere with the IPL 22 or IPL 24 (this depends on the VAX implementation) clock interrupts-activities such as extensive device driver interrupts or memory errors are known to slow the clock. _____________________________ 4.1.1.1.2 EXE$GQ_SYSTIME This is the OpenVMS VAX system time cell. This cell contains the number of 100ns intervals since a known reference. This cell is incremented by 100000 every _________10ms_by_an_hardware_interval timer. 4.1.1.1.3 EXE$GQ_TODCBASE This cell contains the time and date the system time was last adjusted by EXE$SETTIME. It uses the same format as EXE$GQ_SYSTIME. On adjustment of the system time a copy of EXE$GQ_SYSTIME is stored in this cell in both memory and on disk. This cell is used to get the year for the system time. 4-3 Time and Timekeeping _____________________________ 4.1.1.1.4 EXE$GL_TODR This cell contains the time and date the system time was last adjusted by EXE$SETTIME. It uses the same format as the time of year clock. On adjustment of the system time this cell gets saved back to both memory and disk. The contents of this cell are used to test the validity of the TOY clock. The system parameters SETTIME and TIMEPROMPTWAIT determine how the system time will be set. o IF SETTIME = 0 and the TOY clock is valid THEN the contents of the TOY clock are compared to those of EXE$GL_TODR. IF the TOY clock is more than a day behind EXE$GL_TODR THEN the TOY clock is presumed invalid. o IF the TOY clock is within a day of EXE$GL_TODR THEN the system time is calculated as follows: o EXE$GQ_SYSTIME = EXE$GQ_TODCBASE + ((TOY_CLOCK - EXE$GL_TODR) * 100000) o IF SETTIME = 1 or the TOY clock is invalid THEN the value of TIMEPROMPTWAIT determines how to reset the time of year. IF TIMEPROMPTWAIT > 0 THEN the user is prompted for the time and date, for a length of time equal to TIMEPROMPTWAIT microfortnights. o IF TIMEPROMPTWAIT = 0 THEN the time of year is the value of EXE$GL_TODR + 10ms. o IF TIMEPROMPTWAIT < 0 to proceed until they do so. o THEN the user is prompted for the time and date and unable When booting a CD-ROM containing an OpenVMS VAX system, the system will typically be deliberately configured prompt the user to input the time - this is necessary in order to boot with the correct time. 4-4 Time and Timekeeping If either TIMEPROMPTWAIT or SETTIME are set to zero, OpenVMS VAX will use the TOY clock to get the time of year, and the year will be fetched from the distribution medium. The value of the year on the distribution medium (saved within the SYS.EXE image) will most likely be that of when the kit was mastered, and cannot be changed. Unless the current year happens to be the same year as that on the distribution, most likely the year will be incorrect. (Further, with the calculation of Leap Year also being dependent on the current year, there is a possibility that the date could be incorrect, as well.) _____________________________ 4.1.1.2__Alpha_hardware_time-keeping details... 4.1.1.2.1 Battery-Backed Watch (BB_WATCH) Chip This is battery backed up hardware timing circuitry used to keep the correct time of year during rebooting, power failures, and system shutdown. This clock keeps track of date and time in 24 hour binary format. The BB_WATCH time is used to initialize the running system time during bootstrap, and the BB_WATCH time is read when the SET TIME command is issued with no parameters; when the running system time is reset to the value stored in the BB_WATCH. The running system time is written into the BB_WATCH when the SET TIME command is issued with a parameter. The specification for maximum clock drift in the Alpha hardware clock is 50 parts per million (ppm), that is less than ±0.000050 seconds of drift per second, less than ±0.000050 days of drift per day, or less than ±0.000050 years of drift per year, etc. (eg: An error of one second over a day-long interval is roughly 11ppm, or 1000000/(24*60*60).) Put another way, this is .005%, which is around 130 seconds per month or 26 minutes per year. The software-maintained system time can drift more than this, primarily due to other system activity. Typical causes of drift include extensive high-IPL code (soft memory errors, heavy activity at device IPLs, etc) that 4-5 Time and Timekeeping are causing the processing of the clock interrupts to be blocked. _____________________________ 4.1.1.2.2 EXE$GQ_SYSTIME This is the OpenVMS Alpha system time cell. This cell contains the number of 100ns intervals since November 17, 1858 00:00:00.00. This cell is incremented by _________100000_every_10ms_by an hardware interval timer. 4.1.1.2.3 EXE$GQ_SAVED_HWCLOCK This cell is used by OpenVMS Alpha to keep track of the last time and date that EXE$GQ_SYSTIME was adjusted. It keeps the same time format as EXE$GQ_SYSTIME. The value in this cell gets updated in memory and on disk, every time EXE$GQ_SYSTIME gets adjusted. o The system parameters SETTIME and TIMEPROMPTWAIT determine how the system time will be set. o If SETTIME = 0 then EXE$INIT_HWCLOCK reads the hardware clock to set the system time. o IF TIMEPROMPTWAIT > 0 THEN the value of TIMEPROMPTWAIT determines how long the user is prompted to enter the time and date. If time expires and no time has been entered the system acts as if TIMEPROMPTWAIT = 0. o IF TIMEPROMPTWAIT = 0 THEN the system time is calculated from the contents of EXE$GQ_SAVED_HWCLOCK + 1. o IF TIMEPROMPTWAIT < 0 THEN the user is prompted for the time and date and unable to continue until the information is entered. Unlike the VAX, the Alpha hardware clock tracks the full date and time, not just the time of year. This means it is possible to boot from the CD-ROM media without entering the time at the CD-ROM bootstrap. (This provided that the time and date have been initialized, of course.) 4-6 Time and Timekeeping IA-64 (Itanium) hardware time-keeping details to be added... _____________________________ 4.1.1.3 Why does VAX need a SET TIME at least once a year? Because the VAX Time Of Year (TOY) has a resolution of 497 days, the VAX system time is stored using both the TOY and the OpenVMS VAX system image SYS.EXE. Because of the use of the combination of the TOY and SYS.EXE, you need to issue a SET TIME command (with the time parameter specified) at least once between January 1st and about April 11th of each year, and whenever you change system images (due to booting another OpenVMS VAX system, booting the standalone BACKUP image, an ECO that replaces SYS.EXE, etc). The SET TIME command (with the current time as a parameter) is automatically issued during various standard OpenVMS procedures such as SHUTDOWN, and it can also obviously be issued directly by a suitably privileged user. Issuing the SET TIME command (with a parameter) resets the value stored in the TOY, and (if necessary) also updates the portion of the time (the current year) saved in the SYS.EXE system image. This VAX TOY limit is the reason why OpenVMS VAX installation kits and standalone BACKUP explicitly prompt for the time during bootstrap, and why the time value can "get weird" if the system crashes outside the 497 day window (if no SET TIME was issued to update the saved values), and why the time value can "get weird" if a different SYS$SYSTEM:SYS.EXE is used (alternate system disk, standalone BACKUP, etc). _____________________________ 4.1.2 How does OpenVMS VAX maintain system time? VAX systems maintain an interval clock, and a hardware clock. The VAX hardware clock is called the TOY ("Time Of Year") clock. The register associated with the clock is called the TODR ("Time Of Day Register"). 4-7 Time and Timekeeping The TOY clock-as used-stores time relative to January first of the current year, starting at at 00:00:00.00. It is a 100 Hz, 32-bit counter, incremented every 10ms, and thus has a capacity of circa 497 days. OpenVMS (on the VAX platform) stores system date information-and in particular, the current year-in the system image, SYS$SYSTEM:SYS.EXE. The TOY is used, in conjunction with the base date that is stored and retrieved from the system image, to initialize the interval clock value that is stored in EXE$GQ_SYSTIME. Once the interval clock is loaded into the running system as part of the system bootstrap, the system does not typically reference the TOY again, unless a SET TIME (with no parameters) is issued. The interval clock value is updated by a periodic IPL22 or IPL24 (depending on the specific implementation) interrupt. (When these interrupts are blocked as a result of the activity of higher-IPL code-such as extensive driver interrupt activity or a hardware error or a correctable (soft) memory error-the clock will "loose" time, and the time value reported to the user with appear to have slowed down.) When SET TIME is issued with no parameters, the TOY clock is loaded into the system clock; the running system clock is set to the time stored in the TOY clock. This assumes the TOY clock is more accurate than the system clock, as is normally the case. On most (all?) VAX systems, the battery that is associated with the TOY clock can be disconnected and replaced if (when) it fails-TOY clock failures are quite commonly caused by a failed nickel-cadmium (NiCd) or lithium battery, or by a failed Dallas chip. 4-8 Time and Timekeeping __________________________________________________________ 4.2 Keeping the OpenVMS system time synchronized? To help keep more accurate system time or to keep your system clocks synchronized, TCP/IP Services NTP, DECnet-Plus DTSS (sometimes known as DECdtss), DCE DTS, and other techniques are commonly used. If you do not or cannot have IP access to one of the available time-base servers on the Internet, then you could use dial-up access to NIST or other authoritative site, or you can use a direct connection to a local authorative clock. There exists code around that processes the digital (ie: binary) format time that is available via a modem call into the NIST clock (the Automated Computer Telephone Service (ACTS) service), and code that grabs the time off a GPS receiver digital link, or a receiver (effectively a radio and a codec) that processes the time signals from radio stations WWV, WWVH, WWVB, or similar. Processing the serial or hardware time protocols often involves little more than reading from an EIA232 (RS232) serial line from the receiver, something that is possible from most any language. Information on correctly drifting the OpenVMS system clock to match the time-base time is available within the logic of at least one OpenVMS Freeware package. (See Section 4.3 for a few potential hardware options.) One example of acquring a time-base through local integrated hardware involves the IRIG time format (IRIG-A, -B, -G), a binary signal containing the current time in hours, minutes, seconds and days since the start of the current year. IRIG can also contain the time of day as the number of seconds since midnight. HP Custom Systems and third-party vendors have variously offered IRIG-based reader/generator modules for OpenVMS systems. One of the easiest approaches is a network-based GPS or other similar receiver. Basically, this is a network server box that provides an NTP server with the necessary hardware for external synchronization. In addition to the antenna and the receiver and 4-9 Time and Timekeeping processing components, these devices provide a network interface (NIC) and support for an NTP time server, and applications including the NTP support within TCP/IP Services and within various third-party IP stacks can then be used to synchronize with the the NTP information provided by time-base receivers. No other host software is required, and no host configuration steps and no host software beyond NTP are required. (See Section 4.3 for a few potential hardware options.) Differing time servers (DECnet-Plus DTSS, DCE DTS, NTP, etc) do not coexist particularly well, particularly if you try to use all these together on the same node. Please pick and use just one. (If needed, you can sometimes configure one package to acquire its timebase from another protocol, but one and only one time server package should have direct control over the management of and drifting of the local OpenVMS system time. In the specific case of DECnet-Plus DTSS, older product versions and versions V7.3 and later provide a provider module, a module which permits DTSS to acquire its time from NTP. For details on this, please see the comments in the module DTSS$NTP_PROVIDER.C.) Unlike DECnet-Plus, TCP/IP Services NTP is not capable of connecting to a time-base other than the network time base or the local system clock. Third-party and open source NTP implementations are available for OpenVMS, as well. Useful URLs: o http://www.boulder.nist.gov/timefreq/service/nts.htm o http://www.boulder.nist.gov/timefreq/service/acts.htm o http://www.boulder.nist.gov/timefreq/ o http://www.time.gov/ 4-10 Time and Timekeeping __________________________________________________________ 4.3 External time-base hardware? Here are a few possibilities for providers of a GPS- based receiver with an embedded NTP server, strictly culled from the first few pages of a Google search. Availability, pricing, OpenVMS compatibility and other factors are not known. o http://www.galleon.eu.com/ o http://www.meinberg.de/english/ o http://www.ntp-servers.com/ For a direct-connected (local, non-IP, non-NTP) link, there are serial options available. Google finds Spectracom Corporation has a NetClock that could be used here, based on a quick look-I do not know if there is OpenVMS host software, but that would be possible to write for the ASCII data stream that the device supports. (Such coding requires knowledge of serial I/O, character processing, and knowledge of the clock drift API mechanisms in OpenVMS-there exists Freeware tools that could be used to learn how to tie into the clock drifting mechanisms of OpenVMS.) o http://www.spectracomcorp.com/ http://www.spectracomcorp.com/ Information on, and experiences or recommendations for or against these or other similar devices is welcome. _____________________________ 4.3.1 Why do my cluster batch jobs start early? Your system time is skewed across your cluster members, and the cluster member performing the queue management tasks has a system time set later than the system time of the member running the batch job. This behaviour is most noticable when using SUBMIT/AFTER=TOMORROW and similar constructs, and use of /AFTER="TOMMOROW+00:01:00" or such is often recommended as a way to avoid this. The combination time value specified should be larger than the maximum 4-11 Time and Timekeeping expected time skew. In the example shown, the maximum cluster clock skew is assumed less than 1:00. You can also maintain your system times in better synchronization, with available tools described in Section 4.2 and elsewhere. _____________________________ 4.3.2 Why does my OpenVMS system time drift? Memory errors, hardware problems, or most anything operating at or above IPL 22 or IPL 24 (clock IPL is system family dependent; code executing at or above the clock IPL will block the processing of clock interrupts), can cause the loss of system time. Clock drift can also be caused by normal (thermal) clock variations and even by the expected level of clock drift. When clock interrupts are blocked as a result of the activity of high-IPL code-such as extensive driver interrupt activity or a hardware error or a correctable (soft) memory error-the clock will "loose" time, and the time value reported to the user with appear to have slowed down. Correctable memory errors can be a common cause of system time loss, in other words. Heavy PCI bus traffic can also cause lost time. One bug in this area involved the behaviour of certain graphics controllers including the ELSA GLoria Synergy PBXGK-BB; the PowerStorm 3D10T effectively stalling the PCI bus. See Section 5.16 for details on the ELSA GLoria Synergy controller, and make certain you have the current GRAPHICS ECO kit installed. Clock drift can also be (deliberately) caused by the activity of the DTSS or NTP packages. Also see Section 4.1.1.2.1, Section 4.1.1, and Section 4.3.4. 4-12 Time and Timekeeping _____________________________ 4.3.3 Resetting the system time into the past? You can resynchronize system time using DCL commands such as SET TIME and SET TIME/CLUSTER, but these commands can and obviously will cause the current system time to be set backwards when the specified time predates the current system time. This time-resetting operation can cause application problems, and can adversely effect applications using absolute timers, applications that assume time values will always be unique and ascending values, and applications. Setting the time backwards by values of even an hour has caused various run-time problems for applications and layered products. For this reason, this technique was not considered supported during the Year 2000 (Y2K) testing; a system or cluster reboot was strongly recommended as the correct means to avoid these problems. Application programmers are encouraged to use the time- related and TDF-related events that are available with the $set_system_event system service, and/or to use UTC or similar time, as these techniques can permit the application to better survive retrograde clock events. (There is an ECO to repair problems seen in the DECnet-Plus support for generating TDF events from DTSS, and this applies to V7.3 (expected to be in ECO4 and later) V7.3-1 (expected to be in ECO3 and later) and V7.3-2 (expected to be in ECO1 and later). Apply the most current DECnet-Plus ECO kits for these OpenVMS releases, for best TDF event support from DECnet-Plus.) See Section 4.3.4 and Section 4.3.1. _____________________________ 4.3.4 How can I drift the OpenVMS system time? With DECdts and TCP/IP Services NTP, the system time value is "drifted" (rather than changed), to avoid the obvious problems that would arise with "negative time changes". The same basic clock drifting technique is used by most (all?) time servers operating on OpenVMS, typically using the support for this provided directly within OpenVMS. 4-13 Time and Timekeeping An example of the technique used (on OpenVMS VAX) to drift the system time is the SETCLOCK tool on the OpenVMS Freeware. For information on the use of the EXE$GL_TIMEADJUST and EXE$GL_TICKLENGTH cells on OpenVMS Alpha, see OpenVMS AXP Internal and Data Structures, located on page 348. For those areas which switch between daylight saving time (DST) and standard time, the time value is not drifted. The time is adjusted by the entire interval. This procedure is inherent in the definition of the switch between DST and standard time. (Do look at either not switching to daylight time, or (better) using UTC as your time-base, if this change-over is not feasible for your environment.) See Section 4.3.4 and Section 4.3.3. _____________________________ 4.3.5 How can I configure TCP/IP Services NTP as a time provider? An NTP time provider provides its idea of the current time to NTP clients via the NTP protocol. Most systems are NTP clients, but... NTP has a heirarchy of layers, called strata. The further away from the actual NTP time source (Internet time servers are at stratum 1), the lower the strata (and the larger the number assigned the statum). NTP explicity configured at stratum one provides time to NTP operating at lower strata, and the provided time is acquired based on the local system time or via some locally-accessible external time source. NTP at other (lower) strata both receive time from higher strata and can provide time to lower strata, and automatically adjust the local stratum. The highest stratum is one, and the lowest available stratum is fifteen. The TCP/IP Services NTP package can operate at any stratum, and can be configured as a peer, as a client, or as a broadcast server. NTP can also provide time to a DECnet-Plus DTSS network, see Section 4.2. 4-14 Time and Timekeeping With TCP/IP Services V5.0 and later, the only supported reference clock is the LCL (local system clock). If your system has an excellent clock or if the system time is being controlled by some other time service or peripheral (such as DTSS services, GPS services, a cesium clock, a GPIB controller or other similar time-related peripheral), you can configure NTP to use the system clock as its reference source. This will mimic the master-clock functionality, and will configre NTP as a stratum 1 time server. To do this, enter the following commands in TCPIP$NTP.CONF: server 127.127.1.0 prefer fudge 127.127.1.0 stratum 0 For local-master functionality, the commands are very similiar. Use: server 127.127.1.0 fudge 127.127.1.0 stratum 8 The difference between these two is the stratum, and the omission of the prefer keyword. Specifying a higher stratum allows the node to act as a backup NTP server, or potentially as the sole time server on an isolated network. The server will become active only when all other normal synchronization sources are unavailable. The use of "prefer" causes NTP to always use the specified clock as the time synchronization source. With the TCP/IP Services versions prior to V5.0, the NTP management is rather more primitive. To configure the local OpenVMS system from an NTP client to an NTP server (on TCP/IP Services versions prior to V5.0), add the following line to the sys$specific:[ucx$ntp]ucx$ntp.conf file: master-clock 1 Also, for TCP/IP Services prior to V5.0, see the NTP template file: SYS$SPECIFIC:[UCX$NTP]UCX$NTP.TEMPLATE 4-15 Time and Timekeeping Note that NTP does not provide for a Daylight Saving Time (DST) switch-over, that switch must arise from the timezone rules on the local system and/or from the SYS$EXAMPLES:DAYLIGHT_SAVINGS procedure. (Further, there is a known bug in SYS$EXAMPLES:DAYLIGHT_ SAVINGS.COM in V7.3, please obtain the available ECO kit.) For current TCP/IP Services and related OpenVMS documentation, please see: o http://www.hp.com/go/openvms/doc/ __________________________________________________________ 4.4 Managing Timezones, Timekeeping, UTC, and Daylight Saving Time? You will want to use the command procedure: o SYS$MANAGER:UTC$TIME_SETUP.COM to configure the OpenVMS Timezone Differential Factor (TDF) on OpenVMS V6.0 and later. Select the BOTH option. This configures the OpenVMS TDF settings, though it may or may not configure the TDF and the timezone rules needed or used by other software packages. Please do NOT directly invoke the following command procedures: o SYS$MANAGER:UTC$CONFIGURE_TDF.COM ! do not directly use o SYS$MANAGER:UTC$TIMEZONE_SETUP.COM ! do not directly use TCP/IP Services V5.0 and later use the OpenVMS TDF, UTC, and timezone support. Earlier versions use a TDF mechanism and timezone database that is internal to the TCP/IP Services package. Also on the earlier versions, the TDF must be manually configured within TCP/IP Services, in addition to the OpenVMS configuration of the TDF. 4-16 Time and Timekeeping DECnet-Plus in V7.3 and later uses the OpenVMS TDF, UTC, and timezone support, and displays its timezone prompts using UTC$TIME_SETUP.COM. Earlier versions use a TDF TDF mechanism, timezone database, and automatic switch-over that is internal to the DECnet-Plus package. Also on earlier versions, the TDF must be configured within the DECnet-Plus DECdtss package, in addition to the OpenVMS configuration of the TDF. Application code using HP C (formerly Compaq C, formerly DEC C) will use the OpenVMS UTC and TDF mechanisms when the C code is compiled on OpenVMS V7.0 and later (and when the macro _VMS_V6_SOURCE is NOT defined). HP C does NOT use the OpenVMS UTC and TDF mechanisms when the C code is compiled on OpenVMS releases prior to V7.0, or when the preprocessor declaration _VMS_V6_SOURCE is declared. DCE DTS TDF management details to be determined. In OpenVMS Alpha V6 releases (V6.1, V6.2, V6.2-1Hx, etc), the TDF value is written to SYS$BASE_IMAGE.EXE. With OpenVMS Alpha V7.0 and later and with OpenVMS VAX V6.0 and later, SYS$SYSTEM:SYS$TIMEZONE.DAT contains the TDF. This means that OpenVMS Alpha systems will need to have the TDF value reset manually-usually within SYSTARTUP_VMS.COM-on reboots prior to V7.0. During OpenVMS Bootstrap, the SYSINIT module reads SYS$TIMEZONE.DAT to acquire the TDF for use in the system global cell EXE$GQ_TDF. This is done to ensure that the system boots with a valid TDF (a value which may be zero). The UTC system services get the TDF from this cell. These services, as well as the HP C RTL, must have a valid TDF. (Prior to OpenVMS V7.3, if either DECnet-Plus or DECnet/VAX Extensions is configured and run, the image DTSS$SET_TIMEZONE.EXE is invoked and can override the TDF and timezone rule settings from SYSINIT or from UTC$TIME_SETUP.COM- this image runs even if DTSS is disabled. If the settings do not match (due to inconsistencies in timezone specification in UTC$TIME_SETUP.COM and NET$CONFIGURE.COM), DTSS will reset the values to match its definitions.) 4-17 Time and Timekeeping Prior to OpenVMS V7.3, daylight saving time (DST) switchover is handled automatically only when DCE DTS or DECnet-Plus DTSS is in use. In V7.3, OpenVMS can be configured to automatically switch over to daylight time, and also generates an event that interested applications can use to detect the switch-over between standard time and daylight time. The manual switchover between daylight time and standard time is correctly accomplished via the SYS$EXAMPLES:DAYLIGHT_SAVINGS.COM command procedure procedure. Note NTP (alone) does NOT provide automatic switch- over. Note The DST switch-over does NOT drift the time value; the switch-over applies the entire difference as a unit, as is standard and expected practice. (Do look at either not switching to daylight time, or (better) using UTC as your time-base, if this one-hour change is not feasible within your environment.) (For information associated with drifting the systen time, please see Section 4.3.4.) If you switch the TDF or DST setting, you will also want to restart or reconfigure any time-sensitive applications (those not using the time differential factor (TDF) change event available in V7.3 and later). Examples of these applications can include the need to restart the NFS client and NTP. (In the case of NTP, will want to try to "drift" the time (see Section 4.2 and see Section 4.3.4), and will find that the DST switch-over will exceed the NTP-defined maximum threshold allowed for drifting. Hence the NTP restart is presently required.) 4-18 Time and Timekeeping _____________________________ 4.4.1 Creating, Updating and Managing Timezone Definitions? One issue with the UTC implementation on OpenVMS is the behaviour of C functions and other programs that use SYS$TIMEZONE_RULE; the OpenVMS mechanism assumes all control over the timezone and the daylight time switchover. This allows calculation of the time by the C library and various applications. This can be incompatible with a system or application that requires manual modifications to the DST or TDF settings, or that requires a local or customized timezone definition. For such a site to ensure the timekeeping is correct, the site must provide procedure that sets the local time and the TDF when the SYS$TIMEZONE_RULE says to do it. If a site requires a non-standard time switch-over, as in coordinating with a shift change or due to changes in the local or regional timezone rules, the site will need to use the zic compiler to create a custom timezone rule. Additionally, applications may need to have special actions taken or actions queued just before the time change takes effect. If the application source code is available, one of the best ways to handle this is via the TDF and time-change notification events available via the OpenVMS sys$set_system_event system service. For information on zic and related tools used to manage the OpenVMS Timezone database, please see the HP C Run-time Library Utilities Reference Manual-though the title would imply otherwise, this particular manual is part of the OpenVMS documentation set, and not part of the HP C (formerly Compaq C, formerly DEC C) documentation set. For related information, see Section 4.4.1.1. 4-19 Time and Timekeeping _____________________________ 4.4.1.1 Customizing or Updating your TDF (Timezone) Setting? Individual, local, and regional differences on the use (or the lack of use) of Daylight Saving Time (DST) are quite common, as are occasional regulatory changes to the particular applicable regional DST settings. (eg: The United States Government is expecting to change its DST rules starting in March of 2007; please see Section 4.4.1.2 for details.) DST-related ECO kits are now available for various of the supported releases, please see the ECO FTP site for details. If you need or wish to add, modify or remove DST rules for your area, or otherwise alter the rules for your local area, you will probably end up creating a variation to an existing timezone rule, or potentially simply downloading a new set of DST rules. This requirement can arise, for instance, if your local region changes its timezone rules, or if you are using an OpenVMS release that does not have an ECO kit for the US DST rules available.) The necessary zone line to add for support of the hypothetical new WhereEverLand timezone will probably look something like this: # Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] Zone WhereEver 2:00 - WhereEver The OpenVMS source files for the timezone rules are stored here: SYS$COMMON:[SYS$ZONEINFO.SYSTEM.SOURCES] You'll then want to use the zic compiler to compile your own new timezone definition, or to compile a new set of timezone definitions that have been freshly downloaded from a published source. The zic compiler is documented in the OpenVMS Documentation Set, and specifically in the HP C Run- Time Library Reference Manual. (Despite the name of this manual, it is part of the OpenVMS documentation set and not of the C manuals.) 4-20 Time and Timekeeping Once you have created and compiled a new timezone rule (or have downloaded and have compiled a whole new set of timezone rules), use the SYS$MANAGER:UTC$TIME_ SETUP.COM to select the new timezone if necessary-with V7.3 and later, this tool will automically notice the new timezone and will offer it, on earlier releases, you may/will have to hack the code of the tool somewhat to allow it to present the new timezone rule. (If an existing timezone rule is simply changing, you don't need this re-selection step.) Note As mentioned in Section 4.4.2, please don't modify or redefine the TZ logical name (found on older configurations), or the SYS$TIMEZONE_NAME logical name, or any other time- or timezone- related logical names directly yourself. Rather, please use the zic compiler and/or the UTC$TIME_ SETUP.COM procedure. For various published timezone rules or updated to same, see the tar.gz files (these are gzipped tar archives) available at: o ftp://elsie.nci.nih.gov/pub/ These are gzipped tar archives, and are the pubished source used for the OpenVMS timezone rules on OpenVMS V7.3 and later, and within the predecessor C run-time environment timezone support used on older OpenVMS releases. You'll need to first gunzip and then use vmstar to unpack and access the contents of the archives. The published timezone rules include the effective date ranges for the individual rules, so you can reload your rules prior to a particular set of new rules becoming effective. The effective dates for the particular timezone rules are additionally necessary to allow the appropriate translation of older dates and times within the appropriate historical context of the particular date and time value. For related information, see Section 4.4.1. 4-21 Time and Timekeeping _____________________________ 4.4.1.2 US Daylight Time Changes Starting 1-Mar-2007? The United States Federal Government is presently expecting to change its DST rules starting in March, 2007. (The change-over date and the planned change itself has not come to pass as of this writing, hence the phrasing used.) As amended, US daylight time will be increased to be effective from the second Sunday in March through the first Sunday of November. Other countries, US local political geographies and businesses may or may not follow suite and implement these changes, obviously. For further regulatory details, see the US Uniform Time Act of 1966 (15 U.S.C 260a(a)), as amended by the Energy Policy Act of 2005. For details on how to create, customize or to download new rules and to update your local timezone rules, please see Section 4.4.1.1. _____________________________ 4.4.2 Timezones and Time-related Logical Names? Various logical names are used to manage time and timezones, and you should avoid direct modification of these logical names as the implementations are subtle and quick to change. As discussed in section Section 4.4.3, you will want to use the following command procedure to maintain the time and the timezone: o SYS$MANAGER:UTC$TIME_SETUP.COM If you want to venture into uncharted territories and modify the TDF used within older releases of TCP/IP Services-within releases prior V5.0-you can attempt to use the following undocumented commands: SET TIME/DIFF=[positive or negative TDF integer] GENERATE TIME to reset the value of the logical name UCX$TDF. 4-22 Time and Timekeeping Prior to OpenVMS V7.3, the command: $ SETTZ :== $SYS$SYSTEM:DTSS$SET_TIMEZONE $ SETTZ MODIFY can be used to modify the settings of the SYS$TIMEZONE_ DAYLIGHT_SAVING, SYS$TIMEZONE_DIFFERENTIAL, and SYS$TIMEZONE_NAME system logical names based on the SYS$TIMEZONE_RULE. The following are other TDF-related logical names used/available on OpenVMS systems, with typical daylight time and standard time settings for the US Eastern Time (ET) timezone. $daylight_time: $ DEFINE/SYSTEM/EXECUTIVE MAIL$TIMEZONE EDT $ DEFINE/SYSTEM/EXECUTIVE NOTES$TIMEZONE "-0400 EDT" $ DEFINE/SYSTEM/EXECUTIVE LISP$DAYLIGHT_SAVING_TIME_P true ! Not 'EDT' $ DEFINE/SYSTEM/EXECUTIVE LISP$TIME_ZONE 05 ! Constant $ $standard_time: $ DEFINE/SYSTEM/EXECUTIVE MAIL$TIMEZONE EST $ DEFINE/SYSTEM/EXECUTIVE NOTES$TIMEZONE "-0500 EST" $ DEFINE/SYSTEM/EXECUTIVE LISP$DAYLIGHT_SAVING_TIME_P false ! Not 'EST' $ DEFINE/SYSTEM/EXECUTIVE LISP$TIME_ZONE 05 ! Constant $ $ DEFINE/SYSTEM/EXECUTIVE UCX$NFS_TIME_DIFFERENTIAL - 'f$integer(f$element(0," ",f$logical("notes$timezone"))/-100)' For information on modifying these timezone logical names and on managing the timezone rules, see Section 4.4.1. _____________________________ 4.4.3 How to troubleshoot TDF problems on OpenVMS? This is an OpenVMS Alpha system prior to V7.0 and the startup is not invoking the procedure: SYS$MANAGER:UTC$TIME_SETUP.COM This is an OpenVMS system prior to V6.0, where there is no OpenVMS TDF nor UTC available. 4-23 Time and Timekeeping The version of the application does not use the OpenVMS TDF. This includes TCP/IP Services prior to V5.0, applications using HP C built on or targeting OpenVMS prior to V7.0, and systems using the DECnet- Plus DTSS mechanisms prior to the release associated with OpenVMS V7.3. (DCE DTS TDF management details to be determined.) If you should find either of the following two timezone-related database files located in SYS$SPECIFIC:[SYSEXE]: o SYS$SPECIFIC:[SYSEXE]SYS$TIMEZONE.DAT o SYS$SPECIFIC:[SYSEXE]SYS$TIMEZONE_SRC.DAT These two files are in an erroneous location and must be recreated in the correct directory: SYS$COMMON:[SYSEXE] If the DCL command: $ DIRECTORY SYS$SYSTEM:SYS$TIMEZONE*.DAT shows these files in SYS$SPECIFIC:[SYSEXE], then delete them and use SYS$MANAGER:UTC$TIME_SETUP.COM to recreate them. On OpenVMS versions prior to V7.3, if the file: $ SYS$STARTUP:DTSS$UTC_STARTUP.COM is present on your system, then you may need to invoke: $ @SYS$UPDATE:DTSS$INSTALL_TIMEZONE_RULE.COM to recreate the timezone files correctly. Invoke this command immediately after [re]executing SYS$MANAGER:UTC$TIME_SETUP.COM.) If SYS$UPDATE:DTSS$INSTALL_TIMEZONE_RULE.COM is not present on your system, then you may need to execute the following commands: $ DELETE SYS$STARTUP:DTSS$UTC_STARTUP.COM $ DEASSIGN/SYSTEM/EXEC SYS$TIMEZONE_RULE. 4-24 Time and Timekeeping If your system time is being reported as being off by one hour (or whatever the local DST change), please see sections Section 4.7, Section 4.4 and Section 10.22.1. __________________________________________________________ 4.5 Why does the SET TIME command fail? Help managing DTSS? If you try to set the system time with the SET TIME command, and see one of the following messages: %SET-E-NOTSET, error modifying time -SYSTEM-F-IVSSRQ, invalid system service request %SET-E-NOTSET, error modifying time -SYSTEM-E-TIMENOTSET, time service enabled; enter a time service command to update the time This occurs if the time on the local system is controlled by a time service software, for example the distributed time service software (DTSS) provided as part of the DECnet-Plus installation. The DTSS software communicates with one or more time servers to obtain the current time. It entirely controls the local system time (for DECnet-Plus, there is a process named DTSS$CLERK for this); therefore, the usage of the SET TIME command (and the underlying $SETTIM system service) is disabled. The first message is displayed on systems running DECnet-Plus V6.1 and earlier. On systems with newer DECnet-Plus software, the second (and more informative) message is given. You shouldn't have to change the time manually - you should be doing this through the time server - but if you insist... you'll have to shutdown DTSS: $ RUN SYS$SYSTEM:NCL DISABLE DTSS DELETE DTSS This will shutdown DTSS$CLERK. You may then change the system time as usual. To restart the DTSS software, type $ @SYS$STARTUP:DTSS$STARTUP 4-25 Time and Timekeeping You will need a number of privileges to issue this command, and you must also be granted the NET$MANAGE identifer to shutdown and to restart DTSS. If you wish to "permanently" disable DTSS on a system running DECnet-Plus, the above NCL sequence must be performed each time the system is bootstrapped. (On DECnet-Plus V7.3 and later, you can define the logical name NET$DISABLE_DTSS to disable the DTSS startup. This logical name must be defined in the command procedure SYLOGICALS.COM, as this logical name must be present and defined sufficiently early in the OpenVMS system bootstrap sequence for it to function.) If DTSS is running and no time servers are configured, you can (and will) see the following messages at regular intervals: %%%%%%%%%%% OPCOM 2-SEP-1999 19:41:20.29 %%%%%%%%%%% Message from user SYSTEM on UNHEDI Event: Too Few Servers Detected from: Node LOCAL:.mynode DTSS, at: 1999-09-02-19:41:20.296-04:00Iinf Number Detected=0, Number Required=1 eventUid 5FA70F4F-616E-11D3-A80E-08002BBEDB0F entityUid DE9E97DE-6135-11D3-8004-AA000400BD1B streamUid D6513A46-6135-11D3-8003-AA000400BD1B You can either configure the appropriate number of time servers, or you can disable DTSS, or you can ignore it and (if OPCOM is set to write to the log via via the logical names in SYLOGICALS.COM/SYLOGICALS.TEMPLATE) clean out OPERATOR.LOG regularly. You can also simply disable the display of these messages: $ run sys$system:ncl block event dispatcher outbound stream local_stream - global filter - ((Node, DTSS), Too Few Servers Detected) 4-26 Time and Timekeeping If you wish to disable the automatic TDF adjustment for the daylight time switch-over (on OpenVMS versions prior to V7.3), you can use the command: $ run sys$system:ncl set dtss automatic TDF change = false or alternatively, you can set the local timezone to one that does not include the automatic daylight time change-over. OpenVMS V7.3 and later simplify time and timezone management. __________________________________________________________ 4.6 Setting time on AlphaServer ES47, ES80, GS1280 console? To set the base system time on an member of the AlphaServer ES47, AlphaServer ES80 or AlphaServer GS1280 series system family, you must access the Platform Management Utility (PMU). The PMU is implemented within this family of related AlphaServer systems, and is part of a layer providing services beyond those of the traditional Alpha SRM console layer, and within a layer architecturally implemented beneath the SRM console. In particular, the PMU and related management components are used to provide services across multiple vPars or nPars partitions. In particular, the SRM obtains and manages the local system time on these systems as a delta time offset from the underlying base system time. Neither the SRM console nor OpenVMS directly accesses nor alters the underlying base system time nor other information maintained within the PMU layer. The PMU uses the System Management components, centrally including the Backplane Manager (MBM) module found in each drawer, user interface, PCI and CPU management components, and the interconnections among these provided by the private system management LAN. When the system has power applied and the main breakers are on, the MBMs are active. 4-27 Time and Timekeeping The PMU offers a command line interface for a serial communications or telnet connection and allows command and control of the MBM, and of the server. The PMU and the MBM system management components are responsible for the following tasks: o Show the system configuration and provide the basic debugging capability o Initiate the firmware update or load the test firmware version o Power on or off, halt, or reset the system or partition o The system partitioning and cabling functions o Displays of the health of hardware environment, including such constructs as fans, power supplies and environmental and temperature values. o Remote server management tasks o The connection to the virtual SRM console o Set and show the base system time. You can use the MBM commands SHOW TIME and SET TIME to view and to manipulate the base system time. The delta time value for the primary MBM will be indicated, and it is this value in conjunction with the base time that is used to generate the time available to OpenVMS via the SRM console. If you issue a SET TIME=time command from OpenVMS, the delta time will change, but not the MBM base system time. If you change the MBM base system time, the calculated time available to OpenVMS via the SRM console(s) will change. (Resetting the base time thus involves changing the base system time, and then issuing SET TIME=time command(s) to each of the OpenVMS vPars or nPars environments to adjust the respective delta time values.) Rebooting, resetting or issuing an MBM SET TIME will reset the system time. Typically, you will want to establish the MBM time value once, and probably setting it to UTC or such, and you will then want to boot each partition conversationally, setting the SETTIME system parameter 4-28 Time and Timekeeping to force the entry of the time within each booting system environment. Once the MBM time value has been set once, you will typically not want to alter it again. You will typically want to manage and modify only the time values within each partition. The time and data values stored in the primary MBM and replicated in the zero or more secondary MBMs that might be present within the system are coordinated. To enter the PMU from the SRM console, and to exit back to SRM: MBM - (PMU, Platform Management Utility) From SRM P00> enter {Esc} {Esc} MBM CTRL/[ CTRL/[ MBM (MBM must be uppercase) MBM> connect (to exit to SRM) The is the escape character. Use the cited key sequences to enter the PMU. You can also access the PMU through a modem, or from a terminal or terminal emulator or terminal server connected to the server management LAN. Having the server management LAN bridged to an untrusted LAN can be unwise, however, and with risks analogous to those of configuring a traditional VAX or Alpha console serial line to an open terminal server or to a dial-in modem. See the AlphaServer GS1280 documentation for additional information. __________________________________________________________ 4.7 UTC vs GMT vs vs UT1/UT1/UT2 TDF? What are these acronyms? The results of an international compromise-though some would say an international attempt to increase confusion-UTC is refered to as "Coordinated Universal Time" (though not as CUT) in English and as "Temps Universel Coordinné" (though not as TUC) in French. (No particular information exists to explain why UTC was chosen over the equally nonsensical TCU, according to Ulysses T. Clockmeister, one of the diplomats that helped establish the international compromise.) 4-29 Time and Timekeeping Universal Time UT0 is solar time, UT1 is solar time corrected for a wobble in the Earth's orbit, and UT2 is UT1 corrected for seasonal rotational variations in rotation due to the Earth's solar orbit. GMT-Greenwich Mean Time-is UT1. GMT is the time at the classic site of the since-disbanded Royal Greenwich Observatory; at the most widely-known tourist attraction of Greenwich, England. UTC is based on an average across multiple atomic clocks, and is kept within 0.9 seconds of GMT, through the insertion (or removal) of seconds. In other words, UTC matches GMT plus or minus up to 0.9 seconds, but UTC is not GMT. TDF is the Timezone Differential Factor, the interval of time between the local time and UTC. Areas that celebrate daylight saving time (DST) will see periodic changes to the TDF value, when the switch-over between daylight time and standard time occurs. The switch- over itself is entirely left to local governmental folks, and can and has varied by political entity and politics, and the switch-over has varied over the years even at the same location. If your local OpenVMS system time is off by one hour (or whatever the local DST change) for some or all applications, you probably need to reset your local TDF. (For related details, please see sections Section 4.4 and Section 10.22.1.) Further discussions of history and politics, the Royal Observers' outbuildings, and the compromise that left the English with the Time Standard (the Prime Meridian) and the French with the standards for Distance and Weight (the Metric System) are left to other sources. Some of these other sources include the following URLs: o ftp://elsie.nci.nih.gov/pub/ o http://physics.nist.gov/GenInt/Time/time.html o http://nist.time.gov/ 4-30 Time and Timekeeping __________________________________________________________ 4.8 Using w32time or an SNTP as a time provider? No standards-compliant NTP or SNTP server is reportedly capable of synchronizing with the Microsoft Windows w32time services. Further, NTP clients are not generally capable of synchronizing with an SNTP server. Open Source (Free) NTP servers (qv: OpenNTP) are available for Microsoft Windows platforms, and TCP/IP Services and third-party packages all provide NTP servers for OpenVMS, and NTP and SNTP clients can synchronize with these srvers. 4-31 _______________________________________________________ 5 System Management Information __________________________________________________________ 5.1 What is an installed image? The term "install" has two distinct meanings in OpenVMS. The first relates to "installing a product", which is done with either the SYS$UPDATE:VMSINSTAL.COM command procedure or the POLYCENTER Software Installation (PCSI) utility (PRODUCT command). The second meaning relates to the use of the INSTALL utility, which is what concerns us here. The INSTALL utility is used to identify to OpenVMS a specific copy of an image, either executable or shareable, which is to be given some set of enhanced properties. For example, when you issue the SET PASSWORD command, the image SYS$SYSTEM:SETP0.EXE is run. That image needs to have elevated privileges to perform its function. The other important attribute is /SHARED. This means that shareable parts of the image (typically read-only code and data) are loaded into memory only once and are shared among all users on a system. Executable images can be installed /SHARED as well as shareable library images. (The term "shareable" has dual meanings here, too. See the OpenVMS Programming Concepts Manual for further details.) It's important to note that there is no such thing as "installing a shareable image with privileges". The INSTALL utility will let you do it, but the privileges you specify will be ignored. To have a callable routine run with enhanced privileges that are not available to its caller, you must construct your routines as "user-written system services" (UWSS) and install the shareable image with the /PROTECT qualifier. See the OpenVMS Programming Concepts Manual for more information on user-written system services. Note also that in many cases the need to grant privileges to an 5-1 System Management Information image can be replaced with the use of the "Protected Subsystems" feature that grants a rights identifier to an image. See the OpenVMS Guide to System Security for information on Protected Subsystems. __________________________________________________________ 5.2 Are there any known viruses for OpenVMS? Viruses and worms are common on personal computers because the operating systems involved, such as the Microsoft MS-DOS, Windows 95, Windows 98 and Windows ME variants, do not particularly protect the operating system or the file system against hostile action by programs. Microsoft Windows NT, Windows 2000 and Windows XP do implement protections for specific configurations and do implement memory protection models, but many users of these systems choose to operate with full adminstrator access and thus the available protections are entirely defeated and entirely not relevent, and any program that can activate itself or can cause the user to activate the code can subvert the operating system and take over the hardware, at which point the malicious code can do most anything it wishes, including hiding copies of itself in other programs or in the file system, redistributing itself via mail, IM, or network connections, or can be used as a zombie in staging attacks on other systems. This is less likely with multi-user systems such as OpenVMS, Unix, Linux, MVS and other platforms for various reasons. First, the operating system runs in a privileged mode in memory that is protected against modification by normal user programs. Any program cannot simply take over the hardware as it can on operating systems without security and particularly without memory page protections. Secondly, multi- user systems can be set up so that non-privileged programs cannot modify system programs and files on disk, and this is normal for most installations. Both of these protection schemes mean that traditional viral infections don't work on these OSes. Third, typical applications and configurations tend to prevent the uncontrolled execution of untrusted code as part of received mail messages or web access; one of the 5-2 System Management Information central vulnerabilities of the Microsoft Windows platform involves its intentionally easy ability to dynamically (and transparently) activate code and macros that are embedded within mail messages and within data files. It is possible for OpenVMS and other multi-user systems to become infected by viruses or worms, but to do so, the program containing the virus must be run from a user account that has amplified privileges. So long as the system administrator is careful that only trusted applications are run from such accounts (and this is generally the case) and so long as there are no OpenVMS system security breaches (due to malicious operator activity, OpenVMS errors, or errors within trusted and privileged product packages) there is no of modifications to the operating system or other protected files from the virus or the worm. The FAQ maintainer is aware of a few (and very old) DECnet worms that have affected OpenVMS systems on DECnet networks ("WANK" was one), but is aware of no OpenVMS viruses that are loose in the field. To protect against viruses and other attempts at system interference or misuse, please follow the security recommendations in the OpenVMS Guide to System Security. Additionally, you will want to keep your OpenVMS ECOs current and you will want to apply all mandatory ECO kits and any security MUPs for OpenVMS and OpenVMS products, and you will want to keep to OpenVMS releases with Prior Version Support (PVS) or with Current Version Support. (This is obviously a general system maintenance recommendation, in addition to being a good system security recommendation-new security features and capabilities are implemented in more recent OpenVMS releases, for instance. Details on PVS releases are available over in Section 5.10.6.) You may also want to consider optional software products which can monitor your system for intrusion or infection attempts. Computer Associates (CA) offers various products in this area, as to other vendors. 5-3 System Management Information Rocksoft offers the Veracity data integrity tool (for info, send mail to demo@rocksoft.com). MD5 tools are also available; see Section 5.30 for details on MD5. Tools to scan OpenVMS file systems for Microsoft Windows infections are and have been available, including a commercial package from Sophos , and a port of the open source Clam Antivirus scanner at http://www.clamav.net/ and with an OpenVMS port at http://fafner.dyndns.org/~alexey/clamav.zip. These scanning tools are particularly useful for systems running Samba or Advanced Server (PATHWORKS), as these servers tend to have a higher population of files intended for Microsoft Windows systems users, and as common virus and worm attacks can find and infect files on the file shares that these products can provide. These infections do not target OpenVMS itself, though the OpenVMS server (and any other platform and any other server capable of storing files for Windows systems) can silently host files containing common Microsoft Windows infections. __________________________________________________________ 5.3 Sources of OpenVMS security information? Where can I get information on OpenVMS system security? o http://www.hp.com/go/openvms/doc o http://www.blacksheepnetworks.com/security/resources/openvms/ __________________________________________________________ 5.4 How do I mount an ISO-9660 CD on OpenVMS? ISO-9660 support was added in the following releases: o OpenVMS VAX V6.0 o OpenVMS AXP V1.5 An add-on ISO-9660 kit was also available for OpenVMS VAX V5.5, V5.5-1, V5.5-2, and V5.5-2H4. This requires the installation of the F11CD kit from the InfoServer CD, from the Consolidated Distribution CD under the InfoServer area, or the F11CD ECO kit. (Upgrades to V6 and later are strongly recommended.) 5-4 System Management Information By default, OpenVMS senses the specific type of media. If you are working with dual-format media-media that uses both the ODS-2 and ISO-9660 formats on the same CD-ROM-then MOUNT will first detect and then default to the ODS-2 format. If you wish to override this and explicitly mount the media using ISO-9660, use the command: $ MOUNT/MEDIA_FORMAT=CDROM device-name[:] [volume-label] In most circumstances, you will not need nor will you want to include an explicit /MEDIA_FORMAT specification. For further information, please refer to the OpenVMS MOUNT Utility Manual. Particularly note the information on the MOUNT /MEDIA_FORMAT and /UNDEFINED_ FAT qualifiers. The MOUNT /UNDEFINED_FAT qualifier is of interest because ISO-9660 media can be mastered on a wide variety of operating system platforms, and these platforms do not necessarily support the semantics needed for files containing predefined record formats. The /UNDEFINED_FAT allows you to specify the default attributes for files accessed from volumes using the ISO-9660 format. An example which works for most CD-ROMs is: $ MOUNT/MEDIA_FORMAT=CDROM/UNDEFINED_FAT=STREAM:2048 DUA0: FREEWARE This particular MOUNT command forces access to the CD-ROM media using the ISO-9660 volume structure, and the use of the MOUNT /UNDEFINED_FAT qualifier causes any file whose file attributes are "undefined" to be returned with "stream" attributes with a maximum record length 2048. On OpenVMS, the ISO-9660 format is (internally) considered to be the ODS-3 file structure, while the High Sierra extensions to the standard are considered to be the ODS-4 file structure. The Rock Ridge extensions are not currently available on OpenVMS. 5-5 System Management Information For details on ODS-1 and ODS-2 file specifications, see Kirby McCoy's VMS File System Internals Manual (published by Digital Press, but potentially out of print), and see: o http://pdp-11.trailing-edge.com/www/ods1.txt o Look for the Freeware V5.0 directory ODS2 at http://www.hp.com/go/openvms/freeware/ __________________________________________________________ 5.5 How do I extract the contents of a PCSI kit? A growing number of OpenVMS products are being provided in PCSI (POLYCENTER Software Installation) kits which are installed using the PRODUCT INSTALL command. These are alternatives to or replacement for VMSINSTAL kits which were BACKUP savesets. PCSI kits are not BACKUP savesets and are structured differently from VMSINSTAL kits. If you want to extract product files from a PCSI kit, create a directory into which the kit should be expanded and use the following command: $ PRODUCT COPY prodname /SOURCE=[where-the-kit-is] - /DEST=[destination-directory] /FORMAT=REFERENCE A PCSI kit file has a file specification of the following form: DEC-VAXVMS-FORTRAN-V0603-141-1.PCSI In this example, "FORTRAN" is the "prodname". PCSI will expand the kit files into the directory you specify and subdirectories beneath such as [SYSEXE], [SYSLIB], etc., reflecting the eventual destination of files found there. Most of the actual product files (images, etc.) will be in the subdirectories. In the top-level directory will be a file with the file type PCSI$DESCRIPTION that specifies where various files should go. For more details, see the POLYCENTER Software Installation Developer's Guide for OpenVMS, which can be found in the OpenVMS documentation on the Consolidated Online Documentation CD-ROM. 5-6 System Management Information __________________________________________________________ 5.6 Emergency (Conversational) System Startup? If you need to perform system management operations on an OpenVMS system and cannot access the system through normal means-the password on the SYSTEM username was forgetten and no other privileged usernames are available, or one or more core system product authorization key (PAK) software licenses are unavailable or expired-then you must perform a conversational (emergency) bootstrap. Here are the steps: 1 Halt the system. Exactly how this is done depends on the specific system model: Depending on the model, this can involve pressing the button, entering on the console, or pressing the key on the console. 2 At the console prompt, use a console command to boot into the SYSBOOT utility. (SYSBOOT allows conversational changes to system parameters.) (The console syntax for the conversational bootstrap varies by system model and by system architecture- this typically involves specifying a flag with the lowest bit set. See Section 14.3.5 for related details.) For example: On VAX, use one of the following three commands depending on the particular model of VAX system involved: B/R5:1 B/1 @GENBOO On Alpha: b -flags 0,1 If your system has a non-zero system root (such as root SYSE, shown here), you will have to use a console command such as the following: 5-7 System Management Information On VAX: B/E0000001 B/R5:E0000001 @ On Alpha: b -flags e,1 On the IA-64 architecture systems, you can establish and manage an EFI boot alias for a conversational bootstrap as discussed in Section 14.3.5.1 and in Section 14.3.10, or you can use VMS_LOADER.EFI interactively as shown here. Of the core mechanisms discussed in Section 14.3.5.1, the following uses an EFI Shell command to perform a conversational bootstrap of root SYSE via the partition device fsn:. There are alternative mechanisms available. fsn:\efi\vms\vms_loader.efi -flags e,1 If your Alpha system has a hardware password (various systems support a password that prevents unauthorized access to the console), you will need to know theis password and will need to enter it using the LOGIN or similar command at the console. If you get an "Inv Cmd" error trying to perform a conversational bootstrap, and you do not have the hardware console password for the console LOGIN command, you are stuck-you will need to call for hardware service for assistance in resetting the hardware console password. The implementation and the syntax used for the console password mechanism does vary by implementation. 3 Once at the SYSBOOT prompt, request that OpenVMS read the system startup commands directly from the system console, that the window system (if any) not be started, and that OpenVMS not record these particular parameter changes for subsequent system reboots: 5-8 System Management Information SET/STARTUP OPA0: SET WINDOW_SYSTEM 0 SET WRITESYSPARAMS 0 CONTINUE 4 At the $ prompt, the system will now be accepting startup commands directly from the console. Type the following two DCL commands: $ SPAWN $ @SYS$SYSTEM:STARTUP 5 You should now see the dollar ($) prompt of DCL. The result of these two commands will be the normal system startup, but you will be left logged in on the console, running under a fully privileged username. Without the use of the SPAWN command, you would be logged out when the startup completes. Perform the task(s) required, such as resetting the password on the SYSTEM username as described in Section 5.6.1 or registering one or more license product authorization keys (PAKs) as described in Section 5.6.2. 6 Once you log out of this session, the system will complete the startup and can be used normally. You can choose to reboot the system, but that is not necessary. Some system managers will suggest a method using the UAFALTERNATE system parameter rather than the SET/STARTUP OPA0: command shown. This approach is not always available and is accordingly less commonly recommended, as there can easily be an alternate user authorization database (SYS$SYSTEM:SYSUAFALT.DAT) configured on the system. With a system manager that has configured an alternate SYSUAFALT.DAT file, the UAFALTERNATE method will fail-well, assuming you do not know the password of a privileged username stored within SYSUAFALT.DAT, of course. 5-9 System Management Information The UAFALTERNATE system parameter is used to trigger what is sometimes known as the console backdoor. The OPA0: system console is critical to system operations and system security, and will allow access when the SYSUAF system authorization database is unavailable or corrupted, when core product license PAKs are not registered, expired or disabled (NOLICENSE errors), or in various other cases of system failures. All this is in addition to the role of the console in the display of certain system-critical event messages. Access to the OPA0: console has a security exposure that is equivalent to direct access to the system hardware. When LOGINOUT detects an error (such as a SYSUAF corruption, by a missing SYSUAF, missing product licenses, or other trigger), it will prevent access to the OpenVMS system from all terminals except the system console. The OPA0: system console will be allowed access, and the resulting process will be fully privileged. Resetting the UAFALTERNATE system parameter-in the absence of an alternate SYSUAF system authorization database-will cause the console backdoor to be opened simply because LOGINOUT cannot locate SYS$SYSTEM:SYSUAFALT.DAT. When the authorization database cannot be located, access will be granted from the console only. For further information on emergency startup and shutdown, as well as for the official OpenVMS documentation on how to change the SYSTEM password from the console in an emergency, please see the OpenVMS System Manager's Manual in the OpenVMS documentation set. For information and recommendations on setting up OpenVMS system security, please see the NCSC Class C2 appendix of the Guide to OpenVMS System Security manual, also in the OpenVMS documentation set. You can also use the conversational bootstrap technique shown earlier (the steps until SET/STARTUP) to alter various system parameters, as well. At the SYSBOOT prompt, you can enter new parameters values: 5-10 System Management Information SHOW MAXPROCESSCNT SET . 64 CONTINUE The <.> is a shorthand notation used for the last parameter examined within SYSGEN and SYSBOOT. _____________________________ 5.6.1 I've forgotten the SYSTEM password - what can I do? If you have forgotten or do not have the password for the SYSTEM username, you must perform the conversational bootstrap as described in Section 5.6, and must enter the following commands once you have reached the dollar ($) prompt: $ SET DEFAULT SYS$SYSTEM: ! or wherever your SYSUAF.DAT resides $ RUN SYS$SYSTEM:AUTHORIZE MODIFY SYSTEM /PASSWORD=newpassword EXIT You have now reset the password on the SYSTEM username. _____________________________ 5.6.2 My product licenses have expired - what can I do? If you have a system with no licenses for OpenVMS or for OpenVMS users and thus cannot log into the OpenVMS system normally, you should be able to log into the console serial terminal-this is the terminal device known as OPA0:-and perform the commands necessary. For systems that are not configured with an accessable console serial terminal-as can be the case with how some DECwindows workstations are configured-you must log in over the network or from a local serial connection. If you cannot log in over a network connection (SET HOST, telnet, etc) or from another local serial terminal connection, you will have to halt the system and perform a conversational bootstrap as described in Section 5.6. You must then enter licensing-related commands once the conversational bootstrap has reached the dollar ($) prompt. 5-11 System Management Information Use the following DCL command to invoke a menu that allows you to manage and to register new or replacement license PAKs: $ @SYS$UPDATE:VMSLICENSE You have now registered the license PAKs. Direct use of the DCL commands LICENSE and SHOW LICENSE and such is also obviously available. If you wish to connect a serial console on your DECwindows workstation, please see Section 14.3.3.3, Section 14.3.6, Section 11.10, and Section 14.17. For information on troubleshooting DECwindows, please see Section 11.5. __________________________________________________________ 5.7 How do I change the node name of an OpenVMS System? The first step is to get a BACKUP of the system disk before making any changes-use the system disk backup procedures as documented in the OpenVMS System Management Manual, making sure to use the procedures and commands appropriate for the system disk. Changing the node name involves a number of steps-the node name tends to be imbedded in a number of different data files around the system. o Update the SCSNODE in MODPARAMS.DAT, and then run AUTOGEN as far as the SETPARAMS phase. (Do not reboot yet.) o Modify the DECnet node name. (NETCONFIG is the DECnet Phase IV tool, and NET$CONFIGURE is the DECnet-Plus tool.) o Modify the host node name on the various queues in the queue database. (each queue has a host name, and it defaults to the SCS node name of the queue's host system. See the command INIT/QUEUE/ON=node for information.) Site-specific startup command procedures can explicitly specify the (local or even the current) node on the /ON parameter in an INIT/QUEUE/START/ON= command. 5-12 System Management Information o Modify the node name saved in any application databases, or any local node-conditional operations present in the site-specific system startup, etc. (SEARCH for the node name, specifying all types of files.) o Use the AUTHORIZE utility command RENAME/IDENTIFIER to rename the SYS$NODE_oldnodename rightslist identifier to match the new node name. (Do not change the binary value of this identifier, and do not delete the identifier.) If you have erroneously deleted or duplicate the identifier, you can locate existing references to the binary identifier value using the Freeware DFU package, and specifically the commands SEARCH/ACE and /OWNER. You must (re)create the correctly-named identifier using the binary value that is often stored in various Access Control List Entry (ACE) structures and object owner fields associated with files and objects present in the OpenVMS system. o Reset any license PAKs that are restricted to the old node name to the new node name. o If the node name is part of a disk volume label, see Section 5.13. o Reboot the node or-if in a VMScluster-reboot the whole VMScluster. (This tends to catch any errors immediately.) o Modify the IP node name. (The TCP/IP Services tool is UCX$CONFIG prior to V5.0, and is TCPIP$CONFIG in V5.0 and later releases.) Note that TCP/IP Services ties the IP host name to the current SCSNODE value within its UCX$CONFIGURATION.DAT or TCPIP$CONFIGURATION.DAT database. Thus if SCSNODE is changed, the IP host name reconfiguration must occur, and the required reconfiguration can occur only after a system reboot. Accordingly, it is best to perform the TCP/IP Services host name reconfiguration step after the reboot. 5-13 System Management Information There are likely a few other areas where the nodename will be stored. Local procedures and data files are one such example, and various sites will have the system name loaded in the operator control panel via the OCP_ TEXT console environment variable available at the SRM prompt on some Alpha systems is another. If the system is configured in a VMScluster and you change either the SCSNODE or the SCSSYSTEMID-but not both values-then you will have to reboot the entire VMScluster. (The VMScluster remembers the mapping between these two values, and will assume that a configuration problem has occured if a mismatched pair appears, and will refuse to let a node with a mismatched pair join the VMScluster.) To calculate the correct SCSSYSTEMID value, multiply the DECnet Phase IV area number by 1024, and add the DECnet Phase IV node number. For example, the SCSSYSTEMID value for a DECnet node with address 19.22 is 19478. ((19 * 1024) + 22 = 19478) This may well have missed one or two configuration tools (or more!) that are needed at your site-the node name tends to get stored all over the place, in layered products, and in local software... Also see Section 15.6.3 and Section 15.6.4. __________________________________________________________ 5.8 Why doesn't OpenVMS see the new memory I just added? When adding memory to an OpenVMS system, you should check for an existing definition of the PHYSICALPAGES (OpenVMS VAX) or PHYSICAL_MEMORY (OpenVMS Alpha) parameter in the SYS$SYSTEM:MODPARAMS.DAT parameter database, use a text editor to reset the value in the file to the new correct value as required, and then perform the following command: $ @SYS$UPDATE:AUTOGEN GETDATA REBOOT FEEDBACK This AUTOGEN command will reset various system parameters based on recent system usage (FEEDBACK), and it will reset the value for the PHYSICALPAGES parameter to the new value. It will also reboot the OpenVMS system. 5-14 System Management Information PHYSICALPAGES and PHYSICAL_MEMORY can also be used to deliberately lower the amount of memory available for use by OpenVMS. This ability can be useful in a few specific circumstances, such as testing the behaviour of an application in a system environment with a particular (lower) amount of system memory available. PHYSICALPAGES and PHYSICAL_MEMORY can be set to -1 (on OpenVMS Alpha) or (better and simpler) the entry can be removed from the MODPARAMS.DAT file, to indicate that all available memory should be used. __________________________________________________________ 5.9 How do I change the text in a user's UIC identifier? The text translations of the numeric User Identification Code (UIC) are based on identifiers present in the OpenVMS rightslist. Documentation on this area is included in the _Guide to OpenVMS System Security_ manual. To control the identifiers shown for a user's UIC, you use AUTHORIZE. Each user has an associated group identifier, and an identifier specific to the user. And each user should have a unique UIC. To alter the text of a user or group identifier, use commands such as: $ RUN SYS$SYSTEM:AUTHORIZE UAF> rename/ident oldgroupid newgroupid UAF> rename/ident olduserid newuserid If you should find yourself missing an identifier for a particular user, you can add one for the user's UIC using a command such as: UAF> add/ident/value=uic=[group,user] newuserid The UIC user identifier text is assigned when the username is created, and is the text of the username. The UIC group group identifier is assigned when the first username is created in the UIC group, and the text is based on the account name specified for the first user created in the group. The value of this identifier is [groupnumber, 177777]. To add a missing group identifier, use an asterisk as follows: 5-15 System Management Information UAF> add/ident/value=uic=[group,*] newgroupid You may find cases where an identifier is missing from time to time, as there are cases where the creation of a UIC group name identifier might conflict with an existing username, or a user identifier might conflict with an existing group identifier. When these conflicts arise, the AUTHORIZE utility will not create the conflicting group and/or user identifier when the username is created. You can can add and remove user-specified identifiers, but you should avoid changing the numeric values associated with any existing identifiers. You should also avoid reusing UICs or identifiers when you add new users, as any existing identifiers that might be present on objects in the system from the old user will grant the same access to the new user. Please see the security manual for details. __________________________________________________________ 5.10__What_are_the_OpenVMS_version upgrade paths? 5.10.1 OpenVMS Alpha Upgrade (or Update) Paths Note Upgrade path information here has occasionally been found to be wrong. Information here does not reflect cluster rolling upgrade requirements; see Section 5.10.4 for related rolling upgrade information; versions permissible for rolling upgrades can be and often are more constrained. When upgrade information here conflicts with the official documentation, please assume that the information here is wrong. Corrections and updates to this material are welcome. 5-16 System Management Information From V1.0, you can upgrade to V1.5. From V1.5, or V1.5-1H1, you can upgrade to V6.1. From V6.1, you can upgrade to V6.2. From V6.1, or V6.2, you can upgrade to V7.0. From V6.1, V6.2, V6.2-1H(1,2,3), or V7.0, you can upgrade to V7.1. From V6.2, you can update to V6.2-1H1, V6.2-1H2, or V6.2-1H3. From V6.2, V6.2-1H(1,2,3), V7.1, V7.1-1H(1,2), or V7.2, to V7.2-1. From V6.2, ... or V7.2, to V7.2-1H1, to 7.3. From V7.1, you can update to V7.1-1H(1,2), ... to V7.2-1H1, to 7.3. From 7.2, 7.2-1, 7.2-1H1, 7.2-2, 7.3 or 7.3-1, you can upgrade to V7.3-2 From V7.3, V7.2-2, V7.2-1H1, V7.2-1, and V7.1-2, you can upgrade to V7.3-1 From V7.3-1, you can upgrade to V7.3-2 or to V8.2. From V7.3-1 or V7.3-2, you can upgrade to V8.2. From V7.3-2 or V8.2, you can upgrade to V8.3. Some typical OpenVMS Alpha upgrade (or update) paths are: 5-17 System Management Information V1.0 -> V1.5 -> V6.1 -> (V6.2, V7.0, V7.1, V7.2, V7.3) V1.5-1H1 -> V6.1 -> (V6.2, V7.0, V7.1, V7.2, V7.3) V6.2 -> V6.2-1H3 V6.2 -> V7.2-1 V6.2 -> V7.3 V6.2-1H(1,2,3) -> V7.1 V6.2-1H(1,2,3) -> V7.2-1 V6.2 through 7.1-1H2 inclusive -> V7.3 V7.1 -> V7.1-2 V7.1 -> V7.2-1 V7.1-1H(1,2) -> V7.1-2 V7.1-1H(1,2) -> V7.2-1 V7.1-2 -> V7.3-1 V7.2 -> V7.2-1H1 V7.2 -> V7.3 -> V7.3-1 V7.2-1 -> (V7.3, V7.3-1) V7.2-2 -> (V7.3, V7.3-1, V7.3-2) V7.3 -> (V7.3-1, V7.3-2) V7.3-1 -> (V7.3-2, V8.2) V7.3-2 -> (V8.2, V8.3) Note that OpenVMS Alpha V7.0 does not include support for hardware and/or configurations first supported in OpenVMS Alpha V6.2-1H1, V6.2-1H2, or V6.2-1H3; one must upgrade to OpenVMS Alpha V7.1, or later. One cannot update directly to a V6.2-1Hx Limited Hardware Release (LHR) from any release prior to the baseline V6.2 release. The same prohibition holds for performing updates directly to V7.1-1Hx from any release prior to V7.1-this is not supported, and does not produce the expected results. The LHR kits can, however, be directly booted and can be directly installed, without regard to any operating system that might be present on the target disk. Users of OpenVMS Alpha V7.1-1H1, V7.1-1H2, V7.2-1H1 or other hardware are encouraged to upgrade to the next available non-hardware-release, and should preferably upgrade to the current or to a supported OpenVMS Alpha release. 5-18 System Management Information OpenVMS Alpha updates for LHRs (through V7.1-1Hx) require the use of VMSINSTAL for the update. These LHR releases use PCSI for the installation, but not for the update. Non-LHR releases use PCSI for installs and upgrades. OpenVMS Alpha V7.1-2 and later use PCSI for LHRs and for OpenVMS upgrades and for all OpenVMS ECO kit installations; V7.1-2 and later use upgrades and not updates. VMSINSTAL OpenVMS ECO kits (updates) are not used on OpenVMS Alpha V7.1-2 and later; prior to V7.1-2, VMSINSTAL-based ECO (update) kits are used for OpenVMS. _____________________________ 5.10.2 OpenVMS I64 Upgrade Paths Note Upgrade path information here has occasionally been found to be wrong. Information here does not reflect cluster rolling upgrade requirements; see Section 5.10.4 for related rolling upgrade information; versions permissible for rolling upgrades can be and often are more constrained. When upgrade information here conflicts with the official documentation, please assume that the information here is wrong. Corrections and updates to this material are welcome. From V8.2, you can upgrade to V8.2-1 or V8.3 From V8.2-1, you can upgrade to V8.3 Some typical OpenVMS I64 upgrade (or update) paths are: V8.2 -> V8.2-1 -> V8.3 OpenVMS I64 V8.2 is the first production release. OpenVMS I64 V8.0 and V8.1 were intended for early adopters of OpenVMS on Integrity servers, and are not considered to be production releases. 5-19 System Management Information To utilize OpenVMS I64 V8.2, you must perform a full installation of V8.2. No supported upgrade path to V8.2 is available from previous releases; there is no upgrade from OpenVMS I64 E8.2, nor from the earlier V8.1 or V8.0 releases. _____________________________ 5.10.3 OpenVMS VAX Release Upgrade Paths Note Upgrade path information here has occasionally been found to be wrong. Information here does not reflect cluster rolling upgrade requirements; see Section 5.10.4 for related rolling upgrade information; versions permissible for rolling upgrades can be and often are more constrained. When upgrade information here conflicts with the official documentation, please assume that the information here is wrong. Corrections and updates to this material are welcome. From V5.0 through V5.4-3 inclusive, one can upgrade to V5.5. From V5.5, V5.5-1, or V5.5-2HW, one can upgrade to V5.5-2. From V5.5, V5.5-1, or V5.5-2, one can upgrade to V6.0. From V5.5-2, V5.5-2H4, or V6.0, one can upgrade to V6.1. From V6.0, or V6.1, one can upgrade to V6.2. From V6.1, or V6.2, one can upgrade to V7.0. From V6.1, V6.2, or V7.0, one can upgrade to V7.1. From V6.1, one can upgrade to V7.3 (with VAXBACK ECO for V6.1). Some typical OpenVMS VAX upgrade paths are: V5.x -> V5.5 -> V6.0 -> V6.2 -> (V7.1, V7.2, V7.3) V5.5-2HW -> V5.5-2 V5.5-2, or V5.5-2H4 -> V6.1 -> (V6.2, V7.0, or V7.1) V6.1 -> V6.1 with VAXBACK ECO -> (V7.2, V7.3) V6.2 -> V7.2 V6.2 -> V7.3 Note that OpenVMS VAX V6.0 does not include support for hardware and/or configurations first added in OpenVMS VAX V5.5-2H4, one must upgrade to OpenVMS VAX V6.1. Note that OpenVMS VAX V5.5-2HW is a pre-release version of V5.5-2. Any system running it should be upgraded to V5.5-2, or later. 5-20 System Management Information If you attempt a direct upgrade from OpenVMS VAX V6.1 to V7.2 or later without having first applied the VAXBACK ECO kit to your V6.1 system, you will receive an error message: %BACKUP-E-INVRECTYP, invalid record type in save set and the upgrade will fail. Acquire and apply the VAXBACK ECO kit for OpenVMS VAX V6.1. OpenVMS VAX V6.2 and later do not require an application of an ECO for an upgrade to V7.2 and later. _____________________________ 5.10.4 OpenVMS Cluster Rolling Upgrade Paths Rolling Upgrades permit the OpenVMS Cluster and the applications to remain available while individual systems are being upgraded to a new OpenVMS release. Rolling Upgrades require multiple system disks. OpenVMS Cluster Rolling Upgrades for OpenVMS Alpha, OpenVMS I64 and OpenVMS VAX may (will) have architecture-specific, or additional upgrade requirements or prerequisites, and have requirements around which versions and architectures of OpenVMS can coexist within a OpenVMS Cluster than what are listed here. For specific details on Rolling Upgrades, please see the OpenVMS Upgrade and Installation Manual for the particular release, and the OpenVMS Software Product Descriptions for OpenVMS and for OpenVMS Cluster software: o http://h18000.www1.hp.com/info/spd/ OpenVMS typically uses SPD 25.01.xx, SPD 41.87.xx, and SPD 82.35.xx. for further details on the Rolling Upgrade, and for support information. 5-21 System Management Information _____________________________ 5.10.5 OpenVMS VAX Manual Organization The documentation for older releases of OpenVMS VAX was comprised of various platform-specific manuals, manuals that include instructions that are specific to installing and upgrading on the particular VAX platform. These older manuals can be useful for learning platform- or console-specific operations or requirements for the particular (and older) VAX platform. There is far less console command syntax, and console storage media variability, among the more recent Alpha and Integrity processors. The newer platform operator and management interfaces are far more consistent across the platform lines. _____________________________ 5.10.6 OpenVMS Product Version and Support Information For information on Prior Version Support (PVS) and Mature Product Support (including information on support end dates for OpenVMS and various layered products), please see the support resources link available at the main OpenVMS website or the services links available at the main services website: o http://www.hp.com/go/openvms/ o http://www.hp.com/go/services And see the following links, with the caveat that the direct "/hps" links shown here may become stale: o http://www.hp.com/hps/os/os_pvs.html o http://www.hp.com/hps/os/os_ovms.html For information on the supported and required versions of layered products, and the minimum required layered product versions for various configurations, please see the Software Rollout Report (SWROLL), available at: o http://h71000.www7.hp.com/openvms/os/swroll/ For additional related information, see Section 2.6.1. 5-22 System Management Information For information on the release history of OpenVMS, including information on the code names of various releases and the major features: o http://www.openvms.compaq.com/openvms/os/openvms- release-history.html Additional release history information, as well as a variety of other trivia, is available in the VAX 20th anniversary book: o http://www.openvms.compaq.com/openvms/20th/vmsbook.pdf _____________________________ 5.10.7 OpenVMS Alpha and I64 Upgrade Terminology OpenVMS Alpha and OpenVMS I64 use the POLYCENTER Software Product Install Utility, occasionly refered to as SPIU and rather more commonly known as PCSI. PCSI is a component of the OpenVMS operating system, and is available on OpenVMS VAX, OpenVMS Alpha, and OpenVMS I64. The following terms apply to OpenVMS Alpha and to OpenVMS I64 Upgrades and Installations using PCSI: o UPDATE: Typically used for Limited Hardware Releases (LHR) releases. Performed via VMSINSTAL. Applies only to the OpenVMS release that the LHR is based on, or to an intermediate LHR. (eg: V7.1-1H2 applies only to V7.1-1H1 and to V7.1, not to any other releases.) LHRs within a series are cumulative, containing all files and features of previous LHRs in the same series. VMSINSTAL-based Updates and VMSINSTAL-based ECO kits are not generally used to upgrade OpenVMS on releases of OpenVMS Alpha V7.1-2 and later, nor are thse used on OpenVMS I64; only PCSI-based Upgrades and Installs are used. VMSINSTAL remains available for other uses and other products; for upgrades and installations of products other than OpenVMS itself. 5-23 System Management Information o UPGRADE: Performed via PCSI. Upgrades can typically be applied directly to a release-specific range of earlier OpenVMS releases. The product release documentation specifies the prior OpenVMS releases; if your release is not one of the specified releases, you will have to perform one or more additional upgrades (through intermediate OpenVMS releases) to reach one of the prerequisite releases. o INSTALL: Performed via PCSI. With an installation, no existing version of the operating system is assumed present, nor are any files from any copy of the operating system might be present preserved, and the entire contents of the target disk are destroyed via a disk initialization. o PRESERVE: Performed via PCSI. Otherwise similar to an installation, this option skips the disk reinitialization. User files on the target disk are preserved. Any existing operating system files on the target disk are clobbered. o LHR: Limited Hardware Release. LHRs are specific to and are targeted at new hardware configurations, and are not shipped to customers with support contracts. At least one LHR kit must be specifically acquired when purchasing new hardware, new hardware that is not (yet) supported by any mainline (non-LHR) release. LHRs have an "H" in the OpenVMS version string, indicating a "Hardware" release. You will not generally want to continue using an LHR once a subsequent OpenVMS release is available; you will want to upgrade off the LHR at your earliest convenience. For minimum OpenVMS versions for various platforms, see Section 2.12. 5-24 System Management Information __________________________________________________________ 5.11 Why do I have a negative number in the pagefile reservable pages? Seeing a negative number in the reservable pages portion of the SHOW MEMORY/FULL command can be normal and expected, and is (even) documented behaviour. A pagefile with a negative number of reservable pages is overcommitted, which is generally goodness assuming that every process with reserved pages does not try to occupy all of the reserved pagefile space at the same time. To understand how the pagefile reservation process works, think about how a traditional bank operates when accepting customer deposits and making loans. It's the same idea with the pagefile space. There is less money in the bank vault than the total deposits, because much of the money has been loaned out to other customers of the bank. And the behaviour parallels that of the pagefile down to the problems that a "run on the bank" can cause for banking customers. (Though there is no deposit insurance available for pagefile users.) If all of the running applications try to use the reserved space, the system manager will need to enlarge the pagefile or add one or more additional pagefules. To determine if the pagefile is excessively overcommitted, watch for "double overcommitment"- when the reservable space approaches the negatation of the available total space-and watch that the total amount of free space available in the pagefile remains adequate. If either of these situations arises, additional pagefile storage is required. Additional pagefile information: Additional pagefiles can typically be created and connected on a running OpenVMS system. New processes and new applications will tend to use the new pagefile, and existing applications can be restarted to migrate out of the more congested pagefiles. Pagefiles are generally named PAGEFILE.SYS, and multiple pagefiles are generally configured on separate disk spindles to spread the paging I/O load across the available disk storage. When multiple pagefiles are present on recent OpenVMS versions, each 5-25 System Management Information pagefile file should be configured to be approximately the same total size as the other pagefiles. For additional information on pagefile operations and related commands, see the system management and performance management manuals in the OpenVMS documentation set. With OpenVMS V7.3 and later, the displays have been changed and these negative values are no longer visible. __________________________________________________________ 5.12 Do I have to update layered products when updating OpenVMS? The Software Public Rollout Reports for OpenVMS list the current and future availability of HP software products shipping on the OpenVMS Software Products Library kits (CDROM consolidations) for OpenVMS Alpha and/or OpenVMS VAX. Specifically, the required minimum versions for product support are listed. Comprehensive Public Rollout Information, listing previous product versions as well as currently shipping versions, has been compiled into a separate set of reports. The product information is grouped to show Operating System support. You may or may not be able to use older versions of local applications, third-party products, and various HP OpenVMS layered products with more recent versions of OpenVMS. User-mode code is expected to be upward compatible. Code executing in a privileged processor mode-typically either executive or kernel mode-may or may not be compatible with more recent OpenVMS versions. These Software Rollout (SWROLL) Reports are updated regularly. Please see: o http://h71000.www7.hp.com/openvms/os/swroll/ For related information, see Section 2.6.1. 5-26 System Management Information __________________________________________________________ 5.13 How do I change the volume label of a disk? Dismount the disk, and mount it privately. If the disk is mounted by more than one node in an OpenVMS Cluster, dismount it from all other nodes. If this disk is an OpenVMS system disk, shut down all other nodes that are bootstrapped from this disk. Issue the SET VOLUME/LABEL command, specifying the new label. On OpenVMS V6.0 and later, issue the following PCSI command to reset the label information stored within the PCSI database to reflect the new disk volume label: $ PRODUCT REGISTER VOLUME old-label device Locate any references in the system startup (typically including the disk MOUNT commands) and any DISK$label references in application files, and change the references appropriately. If this is a system disk (for the host or for a satellite), also check the DECnet MOP or LANCP boot database, as well as any references to the disk created by CLUSTER_CONFIG*.COM. If Compaq Analyze is in use, check the system startup procedures for the Compaq Analyze tool. Certain versions of Compaq Analyze will record specific disk volume labels within the startup procedures. Remount the disk appropriately. __________________________________________________________ 5.14 How can I set up a shared directory? To set up a shared directory-where all files created in the directory are accessible to the members of specified group of users-you can use an access control list (ACL) and an identifier. The following also shows how to set up a resource identifier, which further allows the disk resources to be charged to the specified identifier rather than each individual user. (If you don't want this, then omit the attributes option on the identifier creation and omit the entry added in the disk quota database. 5-27 System Management Information Add an identifier using the AUTHORIZE utility: ADD/IDENTIFER/ATTRIBUTES=RESOURCE groupidentifier Grant the identifier to each user in the group using AUTHORIZE: GRANT/IDENTIFIER groupidentifier username If disk quotas are in use, add an entry via SYSMAN for each disk: DISKQUOTA ADD groupidentifier - /PERMQUOTA=pq/OVERDRAFT=od/DEVICE=ddcu: Set the shared directory to have an ACL similar to the following using the SET SECURITY (V6.0 and later) or SET ACL (versions prior to V6.0) command: (DEFAULT_PROTECTION,S:RWED,O:RWED,G,W) (IDENTIFIER=groupidentifier,OPTIONS=DEFAULT,- ACCESS=READ+WRITE+EXECUTE+DELETE) (IDENTIFIER=groupidentifier, - ACCESS=READ+WRITE+EXECUTE+DELETE) (CREATOR,ACCESS=READ+WRITE+ACCESS+DELETE) If there are files already resident in the directory, set their protections similarly. (The OPTIONS=DEFAULT, DEFAULT_PROTECTION, and CREATOR ACEs apply to directories.) The default protection mask is used to establish the default file protection mask, this mask does not prevent the users holding the specified groupidentifier from accessing the file(s), as they can access the file via the explicit identifier granting access that is present in the ACL. For further information, see the OpenVMS Guide to System Security Manual, specifically the sections on ACLs and identifiers, and resource identifiers. 5-28 System Management Information __________________________________________________________ 5.15 Why do I get extra blank pages on my HP Printer? For information on configuring telnet print symbiont, on device control libraries such as SYSDEVCTL.TLB, and for ways of dealing with the extra blank pages that can arise on various HP printers, please see the OpenVMS Ask The Wizard area, starting particularly with topic (1020): o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. There are a variety of discussions of this and of related printing topics in the Ask The Wizard area, in addition to topic (1020). Also see Section 5.34. __________________________________________________________ 5.16 Drivers and Configuration of New Graphics Controllers? This section contains information on various graphics controllers supported by OpenVMS Alpha, and specifically information on where and how to obtain device drivers for specific early OpenVMS releases- device drivers for controllers are integrated into and shipped with OpenVMS Alpha, but versions of these device drivers are sometimes made available for specific earlier OpenVMS releases. _____________________________ 5.16.1 The ELSA GLoria Synergy On OpenVMS Alpha V7.1-2, V7.2, and V7.2-1, acquire the appropriate GRAPHICS PCSI kit, and all prerequisite OpenVMS ECO kits: o VMS712_GRAPHICS-V0300 or later o VMS72_GRAPHICS-V0100 or later 5-29 System Management Information o VMS712_GRAPHICS-V0300 or later The ELSA GLoria Synergy is the PBXGK-BB; the PowerStorm 3D10T. Please ensure you have the most current ECOs for this and other graphics controllers installed; check for and install the current GRAPHICS kit. (See Section 4.3.2 for some unexpectedly related details.) On OpenVMS Alpha V7.2-1, the files necessary for this graphics controller are located in the distribution CD-ROM directory: DISK$ALPHA0721:[ELSA.KIT] Also check for any available (later) ECO kits. An earlier kit (ALP4D20T01_071) (for V7.1, V7.1- 1H1, and V7.1-1H2) was once available, but has been superceded and is not recommended. Use of V7.1-2 or later (and use of one the above GRAPHICS kits as required) is typically the best approach. OpenVMS V7.2-2 and later mainline releases directly support the controller. Additional information is available in topics (3419) and (5448) in the Ask The Wizard area: o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. Support for the ELSA GLoria Synergy is integrated into all current OpenVMS Alpha releases. 5-30 System Management Information _____________________________ 5.16.2 PowerStorm 300, PowerStorm 350 The PowerStorm 300 is the PBXGD-AC, while the PowerStorm 350 is the PBXGD-AE. For support of the PowerStorm 300 and PowerStorm 350 graphics controllers, acquire and install the following available ECO kits: For OpenVMS Alpha V7.1-2: o DEC-AXPVMS-VMS712_P350-V0100-4 or later o DEC-AXPVMS-VMS712_GRAPHICS-V0300-4 or later For OpenVMS Alpha V7.2-1: o DEC-AXPVMS-VMS721_P350-V0100-4 or later o DEC-AXPVMS-VMS721_GRAPHICS-V0300-4 or later Support for the PowerStorm 300 and PowerStorm 350 series graphics controllers is integrated into current OpenVMS Alpha releases. _____________________________ 5.16.3 PowerStorm 3D30, PowerStorm 4D20 PowerStorm 3D30 (PBXGB-AA), PowerStorm 4D20 (PBXGB- CA) information is available in Ask The Wizard topics including topic (2041): o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. 5-31 System Management Information _____________________________ 5.16.4 Radeon 7500 Install the current GRAPHICS ECO kit for OpenVMS Alpha V7.2-2 or V7.3-1 for support of the Radeon 7500 series PCI and AGP graphics controllers. Support for this controller (without an ECO kit) is first integrated into and available in OpenVMS Alpha V7.3-2. (Please do always install the most current GRAPHICS ECO kit whenever one is available, however.) __________________________________________________________ 5.17 How can I acquire OpenVMS patches, fixes, and ECOs? You can acquire and download kits containing OpenVMS fixes (ECOs) for various releases, as well as related support information, via the ITRC support center: o http://www.itrc.hp.com/ o ftp://ftp.itrc.hp.com/openvms_patches/ Some systems with Internet firewalls may/will have to use passive mode FTP to access the above sites. Assuming recent/current versions of the TCP/IP Services package, the DCL FTP command necessary is: $ DIRECTORY/FTP/ANONYMOUS/PASSIVE ftp.itrc.hp.com:: You can subscribe to an email notification list at the ITRC site. For a list of OpenVMS ECO kits recently released, you can use: o http://Eisner.DECUS.org/conferences/OpenVMS-patches_ new_1.HTML Examples and ECO kit installation instructions are included in the cover letter. For ECO kit email notifications, lists of available ECO kits, cover letters and other associated documentation, look in: o http://www.itrc.hp.com/ o ftp://ftp.itrc.hp.com/openvms_patches/ For additional information, please see Section 5.17. 5-32 System Management Information Do NOT attempt to install a VMSINSTAL-based OpenVMS ECO kit on OpenVMS Alpha V7.1-2 and later. While VMSINSTAL itself remains available, it is not used for OpenVMS Alpha ECO kits starting in OpenVMS Alpha V7.1-2. OpenVMS Alpha V7.1-2 and later use PCSI for OpenVMS ECO kits. See Section 5.30 for information on ECO kit checksums. __________________________________________________________ 5.18 How do I move the queue manager database? To move the location of the queue database, the SYS$QUEUE_MANAGER.QMAN$QUEUES and SYS$QUEUE_ MANAGER.QMAN$JOURNAL files, to a disk that is fast(er), has plenty of free space, and that is not heavily used. If the queue database is on a (busy) OpenVMS system disk, you can and probably should move it off the system disk to another disk spindle. To move the queue database: 1 Checkpoint the journal file. This reduces the file size to the in-memory database size. This will cause the noted delay. $ RUN SYS$SYSTEM:JBC$COMMAND JBC$COMMAND> DIAG 0 7 2 Stop the queue manager $ STOP/QUEUE/MANAGER/CLUSTER 3 Backup the .QMAN$QUEUES and .QMAN$JOURNAL files from the present location for safety. $ backup SYS$COMMON:[SYSEXE]SYS$QUEUE_MANAGER.QMAN$* DISK:[DIR] 4 Create a new directory for the queue database. Insure that this disk is accessible to all nodes that can run the queue manager. If the /ON list for the queue manager is "/ON=(*)", the disk must be available to all nodes in the cluster $ CREATE/DIR fast_disk:[qman] 5-33 System Management Information 5 Copy the .QMAN$QUEUES and .QMAN$JOURNAL files to the new directory $ copy SYS$COMMON:[SYSEXE]SYS$QUEUE_MANAGER.QMAN$* fast_disk:[qman] 6 Delete the old queue database. $ DELETE SYS$COMMON:[SYSEXE]SYS$QUEUE_MANAGER.QMAN$*;* 7 Restart the queue manager pointing to the new location $ START/QUEUE/MANAGER fast_disk:[qman] __________________________________________________________ 5.19 How do I delete an undeletable/unstoppable (RWAST) process? "Undeleteable" jobs are usually "undeleteable" for a reason-this can track back to insufficient process quotas, to a kernel-mode error in OpenVMS or a third- party device driver, or to other odd problems. These undeletable jobs typically become of interest because they are holding onto a particular resource (eg: tape drive, disk drive, communications widget) that you need to use... If the particular device supports firmware, ensure that the device firmware is current - TQK50 controllers are known for this when working with old firmware. (That, and the infamous "MUA4224" firmware bug.) If this device has a driver ECO kit available, acquire and apply it... If the particular relevant host component has an ECO, acquire and apply it. Useful tools include SDA (to see what might be going on) and DECamds (which increase and thus potentially fix quota-related problems). (nb: Applications with quota leaks will obviously not stay fixed.) If the stuck application is BACKUP, ensure you have the current BACKUP ECO and are directly following the V7.1 or (better) V7.2 or later process quota recommendations for operator BACKUP accounts. Quota details are in the OpenVMS System Manager's Manual. 5-34 System Management Information If the firmware and ECO levels are current, the best approach is to take a system crashdump, and pass a copy of the dump file along to whomever is maintaining the device driver for the particular device/widget/driver involved, with any details on how you got into this situation. (The reboot involved with taking the crashdump will obviously clear the problem.) There was some kernel-mode code (typically for OpenVMS VAX) that can reset the device ownership field, but that is rather obviously only an interim solution- the real fix is avoiding the loss of the IRP, the process quota leak, or whatever else is "jamming up" this particular process... __________________________________________________________ 5.20 How do I reset the error count(s)? The system reboot is the only supported approach prior to V7.3-2, but a reboot is obviously undesirable in various situations-there is presently no supported mechanism to reset error counts once the error(s) have been logged on these older releases. On V7.3-2 and later, you can use the DCL command: $ SET DEVICE/RESET=ERROR_COUNT As for an unsupported approach-and be aware of the potential for triggering a system crash, you need to determine the system address of the error count field. For a device, this is at an offset within the device's UCB structure. On VAX, the field is at an offset symbolically defined as UCB$W_ERRCNT. On Alpha, this field's offset is symbolically defined as UCB$L_ ERRCNT. The former is a word in size; the latter is a longword. You now need to locate the system address of the UCB$%_ ERRCNT field of the device you wish to reset. Enter SDA. In the following, you will see designations in {} separated by a /. The first item in braces is to be used on the VAX and the second item should be used on an Alpha. (ie. {VAX/Alpha}) 5-35 System Management Information $ ANALYZE/SYSTEM SDA> READ SYS${SYSTEM/LOADABLE_IMAGES}:SYSDEF.STB SDA> ! SHOW DEVICE the device with the error(s) SDA> SHOW DEVICE SDA> EVALUATE UCB+UCB${W/L}_ERRCNT Hex = hhhhhhhh Decimal = -dddddddddd UCB+offset Record the hexadecimal value 'hhhhhhhh' returned. You can now exit from SDA and $ RUN SYS$SHARE:DELTA or do what I prefer to do, issue the following: SDA> SPAWN RUN SYS$SHARE:DELTA On both VAX and Alpha, the DELTA debugger will be invoked and will ident- ify itself. On Alpha, there will be an Alpha instruction decoded. For those unfamiliar with DELTA, it does not have a prompt and only one error message-Eh? (Well, for sake of argument, there might be another error produced on the console if you're not careful. This second error is more commonly known as a system crash.) If you are on a VAX, enter the command: [W If you are on Alpha, enter the command: [L These set the prevailing mode to word and longword respectively. Remem- ber the UCB${W/L)_ERRCNT differences? Now issue the command 1;M DELTA will respond with 00000001 You are now poised to ZAP the error count field. To do so you need to en- ter the system address and view its contents. The format of the command to do this is of the form: IPID:hhhhhhhh/ For an IPID, use the IPID of the SWAPPER process. It is always: 00010001 Thus, to ZAP the error count, you would enter: 00010001:hhhhhhhh/ 5-36 System Management Information When you enter the / SDA will return the content of the address hhhhhhhh. This should be the error count (in hexadecimal) of the device in question. If it is not, you did something wrong and I'd suggest you type a carriage return and then enter the command EXIT to get out of DELTA. Regroup and see where your session went awry. If you entered your address correctly and the error count was returned as in the following example, you can proceed. 00010001:80D9C6C8/0001 ! output on VAX, 1 error 00010001:80D9C6C8/00000001 ! output on Alpha, 1 error You can now ZAP the error count by entering a zero and typing a carriage return. For example: 00010001:80D9C6C8/0001 0 ! output on VAX. 1 error 00010001:80D9C6C8/00000001 0 ! output on Alpha, 1 error Now type the command EXIT and a carriage return. Alternatively, reboot the system. __________________________________________________________ 5.21 How do I find out if the tape drive supports compression? For various SCSI-based MK-class magnetic tape devices: $ Devdepend2 = F$GETDVI("$n$MKcxxx:","DEVDEPEND2") $ Comp_sup = %X00200000 $ Comp_ena = %X00400000 $ IF (Devdepend2.AND.Comp_sup).EQ.Comp_sup THEN - WRITE SYS$OUTPUT "Compression supported" $ IF (Devdepend2.AND.Comp_ena).EQ.Comp_ena THEN - WRITE SYS$OUTPUT "Compression enabled" __________________________________________________________ 5.22 Can I copy SYSUAF to another version? To VAX? To Alpha? The format of the SYSUAF.DAT, RIGHTSLIST, and associated files are upward-compatible, and compatible across OpenVMS VAX, OpenVMS Alpha and OpenVMS I64 systems. (This compatibility is a a basic requirement of mixed-version OpenVMS Cluster configurations and OpenVMS upgrades-for specific support information, 5-37 System Management Information please see the OpenVMS Cluster rolling upgrade and mixed-version requirements.) That said, it's the contents of the SYSUAF and RIGHTSLIST files that will make this more interesting. The same basic steps necessary for moving RIGHTSLIST and SYSUAF files to another node are rather similar to the steps involved in merging these files in an OpenVMS Cluster-see the appendix of the OpenVMS Cluster documentation for details of merging files. (You might not be merging the contents of two (or more) files, but you are effectively merging the contents of the files into the target system environment.) Considerations: o applications often hold SYSUAF or RIGHTSLIST open, meaning a system reboot is often the best way to activate new files. o the meanings of the RESTRICTED and CAPTIVE flags settings on the UAF entries have changed over time. o the new NET$PROXY.DAT file that is initially created based on the contents of the NETPROXY.DAT during the OpenVMS VAX V6.1 upgrade and during the OpenVMS Alpha V6.2 upgrade. This file is maintained in parallel with NETPROXY.DAT. o the RIGHTSLIST identifier values and UIC values that end up scattered around the target system must be rationalized with the contents of the new RIGHTSLIST and SYSUAF files. The lattermost case-resolving the identifier values- is often the most interesting and difficult part. If you find that an identifier value (or identifier name) from the source RIGHTSLIST collides with that of an identifier existing on the target system, you must first determine if the two identifiers perform the same function. In most cases, they will not. As such, you will have to find and chance all references to the identifier value(s) (or name(s)) to resolve the "collision". 5-38 System Management Information If you encounter a collision, changing both of the identifier binary values (or names) involved in the collision to new and unique values can prevent security problems if you should miss a couple of identifiers embedded somewhere on the target system during the whole conversion process-rather than the wrong alphanumeric value for the identifier being displayed, you'll simply see the binary format for the identifier displayed, and no particular access will be granted. And any DCL commands or such that reference the old alphanumeric name will fail, rather than silently (and potentially erroneously) succeeding. Similar requirements exist for UIC values, as these too tend to be scattered all over the system environment. Like the binary identifier values, you will find UIC values associated with disks, ACLs, queues, and various other structures. For a list of the various files shared in an OpenVMS Cluster and that can be involved when relocating an environment from one node to another (or merging environments into an OpenVMS Cluster), please see the SYLOGICALS.TEMPLATE file included in OpenVMS V7.2 and later releases. Procedures to extract the contents of a (potentially corrupt) queue database are provided on the OpenVMS Freeware (V5) and can be used to combine two queue databases together while shuffling files between OpenVMS Cluster hosts. For related discussions of splitting a cluster into two or for removing a node from cluster (political divorce, etc), see topics (203), (767), (915) and others in the Ask The Wizard area: o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC 5-39 System Management Information discussion forums; the area remains available for reference. __________________________________________________________ 5.23 How do I delete (timeout) idle processes? There is no such command integrated within OpenVMS, though there are (optional) timers available within certain terminal servers and similar devices, and there is an integrated time-of-day mechanism that provides control over when a user can access OpenVMS. As for available tools, there are DECUS, freeware, and third-party tools known variously as "idle process killers" (IPK) or "terminal timeout" programs, as well as various other names. Examples include: Saiga Systems Hitman, Watchdog, MadGoat Watcher (via the MadGoat site or the OpenVMS Freeware), Kblock, the Networking Dynamics tool known as Assassin, and the Zap tool. Also available is the XLNperformance system management utility, from XLNsystems. A related package (for DECwindows sessions) is xtermlock. If the forgetful users are in an application menu environment, the menu can potentially be extended to provide this capability. __________________________________________________________ 5.24 Do I need a PAK for the DECevent (HP Analyze) tool? DECevent and HP (Compaq) Analyze are available to customers with support contracts. The PAK is required only for the advanced functions of DECevent, the basic bits-to-text translation of the error log does not require a license PAK. Ignore the prompt, in other words. (The PAK should be available to you if you have a hardware support contract or warrantee, and the PAK enables the use of the advanced error analysis and notification capabilities within DECevent.) Please see the following website for details and downloads: Analyze) o http://www.compaq.com/support/svctools/ 5-40 System Management Information Also see the tool that is available on V7.3-2 and later. $ ANALYZE/ERROR/ELV __________________________________________________________ 5.25 INITIALIZE ACCVIO and ANSI tape label support? A change was made (back in 1988) to (as it was then known) VAX/VMS V5.1-1 that added support for the then- new ANSI X3.27-1987 magnetic tape label standard. Prior to the ANSI X3.27-1987 standard, the date field in the ANSI HDR1 record permits dates only as far as the end of Year 1999. With ANSI X3.27-1987, dates through Year 1999 and dates from Years 2000 to 2099 are permitted. Versions of INIT.EXE and MTAACP.EXE from VAX/VMS releases prior to V5.1-1 will potentially have problems properly processing ANSI magnetic tapes when Y2K and later dates are involved-the DCL INITIALIZE command is known to encounter access violation (ACCVIO) errors. The available solutions include upgrades, or setting the date back. Direct initialization of the tape with the new headers (via $qio) is also clearly possible, though the limitation within the old MTAACP.EXE magtape ACP image is not nearly so easy to bypass. __________________________________________________________ 5.26 How do I recover from INSVIRMEM errors? Prior to OpenVMS Alpha V7.0 and on all OpenVMS VAX releases, VIRTUALPAGECNT and PGFLQUOTA limit the amount of virtual address space that is available to each process. Further limiting the amount of address space is the size of system space (S0 and S1 space). On OpenVMS Alpha versions prior to V7.0 and on all OpenVMS VAX releases, VIRTUALPAGECNT and MAXPROCESSCNT together determine the size of the page table data structures that occupy large tracts of system space. When no system virtual address space is available for the stuff that needs it-this includes the page tables, non-paged pool, and various other structures-then the values of VIRTUALPAGECNT and MAXPROCESSCNT cannot be increased. 5-41 System Management Information In OpenVMS Alpha V7.0 and later, the page table data structures have been moved out of S0 and S1 space and into page table space. In OpenVMS Alpha V7.2 and later, certain large data structures found in non-paged pool (eg: lock management structures) have been moved into 64-bit space, thus freeing up room in non-paged pool and in S0 and S1 space (where non-paged pool resides) while also permitting much larger data structures. __________________________________________________________ 5.27 How can I prevent a serial terminal line from initiating a login? In SYSTARTUP_VMS.COM, issue the command: $ SET TERMINAL/NOTYPEAHEAD/PERMANENT ddcu: This will prevent any unsolicited terminal input on ddcu:, and this unsolicited input is what triggers JOB_CONTROL to start up LOGINOUT on the terminal. Once LOGINOUT starts up on the serial line, you can see interesting behaviour (eg: audits, process creations, etc) as LOGINOUT tries to "chat" with whatever device is hooked onto the remote end of the serial terminal line. __________________________________________________________ 5.28 How does PCSI use the image BUILD_IDENT field? The (undocumented) build ident field in an OpenVMS Alpha image header is 16 bytes long, and is used as a counted string of 0-15 characters (ie, as an .ASCIC string, a string with the character count in byte 0) and was originally introduced to provide information for use by VMSINSTAL patch kits to determine whether an image should be replaced or not. Starting with OpenVMS Alpha V7.1-2, OpenVMS Engineering uses the PCSI utility to package and install ECO kits for OpenVMS. PCSI uses the generation attribute (a 32-bit unsigned integer) specified for files in the product description file (PDF) of a PCSI kit as the basis for performing file conflict detection and resolution. When a product is installed, PCSI modifies the build ident field of Alpha image headers to store an encoded form of the generation number. It also looks at the build ident field of previously installed images 5-42 System Management Information to obtain the generation information for those files as input to the file conflict processing algorithm. (Only images have this field, obviously.) PCSI interprets the build ident field of a previously installed image as follows: o if the string length is 15, the 5th character is a hyphen, and the last ten characters are a ten digit number with leading zeros, then the last ten characters are treated as a valid generation number. o for V7.1-2 through V7.2-1, inclusive, if the above test fails, the information is obtained from the PCSI product database. o in releases after V7.2-1 and with current PCSI ECO kits, if the above test fails, an invalid generation number is treated as 0000000000 so that the ECO kit will simply replace the image rather than assuming the PCSI database is in error. So, what will you see in the image identification displayed via the ANALYZE/IMAGE command? For an image that has been built as part of an OpenVMS Engineering system build, you will generally see a build ID string in the format "X6TE-SSB-0000"-X6TE is the build number for the OpenVMS Alpha V7.2-1 release. This id format is used within the OpenVMS system build, and can generally only be seen associated with images that have not yet been processed via PCSI. During the installation of V7.2-1, PCSI will modify the image header to have a build ident string of "X6TE-0050120000". During installation of an ECO kit containing this image with a generation number of 50130052, for example, PCSI would determine that 50130052 is greater than 50120000, and will replace the existing image on the target disk with the version of the image included in the ECO kit. Ranges of PCSI generation numbers for various OpenVMS releases are included in Table 5-1. The use of xxxx indicates a range of generations is available, from 0000 to 9999, inclusive. The format of, the particular 5-43 System Management Information operation of, and the assignment of PCSI generation numbers is subject to change without notice. ________________________________________________________________ Table 5-1 PCSI Generation Number _______________________________________________________ Generation Number____________Generation_Source____________________ 0040100000 V7.1-2 004011xxxx V7.1-2 ECOs 0050100000 V7.2 005011xxxx V7.2 ECOs 0050120000 V7.2-1 005013xxxx V7.2-1 ECOs 0050140000 V7.2-1H1 005015xxxx V7.2-1H1 ECOs 0050160000 V7.2-2 005017xxxx V7.2-2 ECOs 0060000000 V7.3 006001xxxx V7.3 ECOs 0060020000 V7.3-1 006003xxxx V7.3-1 ECOs 0060100000 V7.3-2 006011xxxx V7.3-2 ECOs 0070040000 V8.2 007005xxxx V8.2 ECOs 0070060000 V8.2-1 _________007007xxxx________V8.2-1_ECOs__________________________ __________________________________________________________ 5.29 How can I tell what software (and version) is installed? There is unfortunately no consistent nor single way to make this determination-this is one of the reasons that a move to PCSI installations is underway. 5-44 System Management Information On OpenVMS Alpha, you can use VMSINSTAL.HISTORY and PRODUCT SHOW PRODUCT to determine what packages have been installed via the VMSINSTAL and PCSI tools, respectively. To see which OpenVMS Alpha ECO kits have been applied, look in VMSINSTAL.HISTORY on OpenVMS Alpha prior to V7.1-2, and use PRODUCT SHOW PRODUCT/FULL on OpenVMS Alpha V7.1-2 and later. On OpenVMS VAX, you can use PRODUCT SHOW PRODUCT and (for software that is installed via VMSINSTAL on V7.3 and later) in VMSINSTAL.HISTORY. For products installed on OpenVMS VAX prior to V7.3 using VMSINSTAL, there is no reliable way to determine what products have been installed. If the product provides a RELEASE_NOTES file (as many do), you can look for the list of these files via DIRECTORY SYS$HELP:*.RELEASE_NOTES. Again, this approach is NOT reliable: some kits do not provide release notes, some system managers will install only the release notes, some system managers will delete release notes, and release notes for multiple versions can be present. On most packages, you can generally use ANALYZE/IMAGE on one of the core images, looking at the image identification area. Some of the product-specific mechanisms available are: o DQS DQS$VERSION logical name o C CC/VERSION o C++ CXX/VERSION o TCP/IP TCPIP SHOW VERSION command __________________________________________________________ 5.30 What file checksum tools are available for OpenVMS? The undocumented (prior to V8.2) DCL command CHECKSUM is the usual means, and provides a rather simple-minded checksum suitable to detect basic file corruptions. Starting with V8.2, additional algorithms beyond the classic XOR scheme are available. 5-45 System Management Information One of the most common schemes beyond the CHECKSUM XOR scheme is MD5, and information and a source code example are available via the MD5 RFC. Pre-built versions of MD5 are available at the OpenVMS Freeware website ( http://www.hp.com/go/openvms/freeware/ ), and on the OpenVMS Freeware V8.0 distribution. Also see the CHECKSUM/ALGORITHM=MD5 command available on OpenVMS V8.2 and later. The OpenVMS Alpha ECO (patch) kit checksums available at the ECO website are determined using the following DCL command sequence: $ CHECKSUM kitname.pcsi-dcx_axpexe $ SHOW SYMBOL CHECKSUM$CHECKSUM See Section 5.17 for information on acquiring OpenVMS ECO (patch) kits. __________________________________________________________ 5.31 What (and where) is the OpenVMS Management Station? For information and current kits for the OpenVMS Management Station (OMS), a PC-based tool that permits you to manage an OpenVMS system, please see: o http://www.openvms.compaq.com/openvms/products/argus/ __________________________________________________________ 5.32 How to determine current disk fragmentation level? The HP OpenVMS Disk File Optimizer (DFO) defragmentation package provides a fragmentation monitoring tool, and a DFO product authorization key (PAK) is not required for the fragmentation reporting tool: $ DEFRAG SHOW/VOLUME ddcu: The DFU tool available on the OpenVMS Freeware can generate a report on the disk fragmentation: DFU> REPORT ddcu: 5-46 System Management Information __________________________________________________________ 5.33 SYSBOOT-I-FILENOTLOC, Unable to locate SYS$CPU_ROUTINES? A message at the OpenVMS Alpha bootstrap such as the following: %SYSBOOT-I-FILENOTLOC, Unable to locate SYS$CPU_ROUTINES_1C02.EXE %SYSBOOT-E-LDFAIL, failed to load execlet, status = 00000910 indicates that the particular OpenVMS Alpha release does not contain support for the target platform. In this case, OpenVMS does not recognize Alpha family 1C member 02 as a supported platform. A later version of OpenVMS might support the platform, or there might be no support on any release. Ensure that you have the most current firmware, and review the minimum version requirements for the platform. The execlet load failure and other similar bootstrap status values can often be decoded using either of the following techniques: $ exit %x910 %SYSTEM-W-NOSUCHFILE, no such file $ $ x = f$message(%x910) $ show symbol x X = "%SYSTEM-W-NOSUCHFILE, no such file" $ Also see Section 14.4.4.1. __________________________________________________________ 5.34 How can I customize the DCPS device control for a new printer? To customize DCPS for an otherwise unsupported printer, you can try the following sequence: o Extract the most closely-associated setup modules from the existing device control library, DCPS$DEVCTL.TLB. (For instance, you can probably extract and use the HP LaserJet 4000 series definitions for the HP LaserJet 4050 series. Each printer will vary, please consult the printer documentation for specifics and requirements.) 5-47 System Management Information o rename each extracted setup module to a corresponding: LPS$$UNRECOGNIZED_* o Insert all of the above-renamed setup modules into a newly-created device control library specific to the new printer: $ LIBRARY/TEXT/CREATE - SYS$COMMON:[SYSLIB]HP4050_DEVCTL.TLB LPS$$UNRECOGNIZED* The above assumes the filename HP4050_DEVCTL.TLB, alter as required. o Set up your DCPS startup procedures to include a search-list logical name such as: $ DEFINE/SYSTEM/EXECUTIVE DCPS_HP4050_LIB - SYS$LIBRARY:HP4050_DEVCTL.TLB, - SYS$LIBRARY:DCPS$DEVCTL.TLB o Supply DCPS_HP4050_LIB as the library parameter in the queue startup for this printer, this is the P3 parameter to the command procedure SYS$STARTUP:DCPS$EXECUTION_QUEUE.COM. o The HP4050_DEVCTL library may/will need to be recreated and modules re-edited and replaced with each DCPS upgrade, particularly if any modules are updated in the original library. You will also want to determine if the upgraded version of DCPS directly supports the particular printer. o To customize the processing of file extensions within DCPS (to enable or disable graybar output, for instance), use the information available in: SYS$LIBRARY:DCPS$FILE_EXTENSION_DATA_TYPE.DAT_DEFAULT to create your own site-specific: SYS$LIBRARY:DCPS$FILE_EXTENSION_DATA_TYPE.DAT Also see Section 5.15. 5-48 System Management Information __________________________________________________________ 5.35 Why do $GETDEV MOUNTCNT and SHOW DEVICE mount counts differ? MOUNTCNT returns the local mount count, while SHOW DEVICE returns the cluster-wide mount count. __________________________________________________________ 5.36 What software is needed for Postscript printers? The NorthLake PrintKit (www.nls.com) and DECprint Supervisor (DCPS) are common choices for support of Postscript printers on OpenVMS. o http://www.nls.com/ o http://www.openvms.compaq.com/openvms/Print/print_ sw_prods.html You may also require the installation of an IP transport stack. Also please see Section 15.2.2 and Section 15.2.3. __________________________________________________________ 5.37 How do I remove a PCSI-installed patch (ECO) kit? You cannot PRODUCT REMOVE a PCSI patch (ECO) kit. In order to remove an ECO kit, PCSI would have to have copies of all the other version of the files from all other patches and products that previously were installed. This can clearly involve a large number of files and a large archive of old file versions and a substantial quantity of disk space. While removal is clearly theoretically possible, it is not currently implemented. The following is the supported mechanism to remove a PCSI patch kit. 1 Execute a PRODUCT SHOW PRODUCT product-name. /FULL command. The "maintenance" column (132 column width) shows the patches that have been installed. Keep a copy of this listing. 2 Acquire kits for all of the maintenance kits listed. 3 Re-install the prior FULL version of the product. This will remove all patch kits, setting to product back to "original" condition. 5-49 System Management Information 4 Re-install all the patches in the list from step 1, except those patches which you have determined you do not want. The above information also applies to PCSI PARTIAL kits. __________________________________________________________ 5.38 SYSINIT-E, error mounting system device, status=0072832C This message can arise during an OpenVMS system bootstrap... %MOUNT-F-DIFVOLMNT, different volume already mounted on this device For details and further information, use the DCL command: $ HELP/MESSAGE /STATUS=%X72832C __________________________________________________________ 5.39 Resolving License PAK Problems? The PAK release date, the PAK termination date, and the PAK version are the usual culprits when a license product authorization key (PAK) check failure occurs. The PAK termination date is the date when the license PAK will expire. The PAK release date is the date of the most recent release date of the software package that will be permitted by the particular license PAK. (The release date check is analogous to a product version check.) The PAK version indicates the most recent product version that is permitted by the license. Having multiple license PAKs registered (and active) can also cause problems if an expired PAK gets loaded. You will want to DISABLE license PAKs you do not wish to have loaded. Other problems include a failure to register each PAK in all license databases throughout a multiple-system- disk cluster, with a consistent set of /INCLUDE lists specified across each of the duplicated PAKs. 5-50 System Management Information Additionally, you could have an invalid LMF$LICENSE logical name defined. (If no LMF$LICENSE logical name is defined, the standard license database named SYS$SYSTEM:LMF$LICENSE.LDB will be used.) You can display license failures by defining the following logical name: $ DEFINE/SYS/EXEC LMF$DISPLAY_OPCOM_MESSAGE TRUE Enable your terminal as a license operator (REPLY/ENABLE=LICENSE), define the LMF$DISPLAY_ OPCOM_MESSAGE logical name, and then try the failing operation again. You should see one or more OPCOM messages displayed. If you have the LMF$DISPLAY_OPCOM_MESSAGE logical name defined, you can (will?) see spurious license check failures-various products will check for multiple licenses, and a few products will check for PAKs that either have not yet been or will not be issued. Once you figure out which license has failed, you will want to deassign this logical name. Note That there are no license check failures does not indicate that the particular product or operation or use is permissible per applicable licensing agreements. Please consult the applicable agreement(s) for licensing-related information and requirements. To register a license PAK on a DECwindows system when DECwindows cannot start (because of an expired license or other licensing problem), follow the steps outlined in section Section 5.6 up through the use of the AUTHORIZE command. In place of the AUTHORIZE command, use the console to register the license PAKs. Also see Section 12.4 for licensing and troubleshooting information. For information on licensing and on the numbers of license units required for various products and various platforms, the License Unit Requirements Table (LURT) is available at: 5-51 System Management Information o http://www.compaq.com/products/software/info/ __________________________________________________________ 5.40 Changing the OpenVMS Version Number? Fool your friends, baffle your enemies, run the OpenVMS version of your choice! Instantly back-port all those useful new OpenVMS features to an ancient OpenVMS version! On OpenVMS Alpha systems: $ SET DEFAULT SYS$COMMON:[SYS$LDR] $ RUN SYSVER REPLACE V9.9 WRITE $ EXIT How does SYSVER work? SYSVER looks for SYS$BASE_ IMAGE.EXE within the default directory, and updates the version string stored within. And yes, obviously, SYS$BASE_IMAGE.EXE resides in the directory SYS$COMMON:[SYS$LDR]. On OpenVMS VAX systems: $ set default SYS$COMMON:[SYS$LDR] $ copy SYS.EXE SYS.EXE_IN-CASE-I-FAIL $ patch SYS.EXE define sys$gq_version=800044b8 set mode ascii !examine sys$gq_version !examine sys$gq_version+4 deposit sys$gq_version = "V9.9" deposit sys$gq_version+4 = " " update exit $ Exit Then reboot the system at your leisure. 5-52 System Management Information __________________________________________________________ 5.41 How to prevent users from choosing obvious passwords? To prevent users from selecting obvious passwords on OpenVMS, you will want to use the reserved password (password screening) mechanism. Effectively, you merge your list of reserved passwords into the existing reserved words database maintained by OpenVMS. (You can also then require all users to reset their passwords- via the pre-expired password mechanism-thus forcing users to select new passwords.) For details on the password screening mechanism, of the reserved password database (VMS$PASSWORD_DICTIONARY.DATA), and details of how to merge your list of prohibited passwords into the database, please see the associated chapter in the OpenVMS security manual. For details of the password expiration mechanism, see the AUTHORIZE command qualifier /PWDEXPIRED. You can also implement a site-specific password filter with the information provided in the back of the OpenVMS Programming Concepts manual. The password filter permits you to establish particular and site- specific password requirements. For details, please see the system parameter LOAD_PWD_POLICY and the programming concepts manual, and see the examples in SYS$EXAMPLES:. (Examples and documentation on V7.3 and later reflect both platforms, the examples are found only on OpenVMS VAX kits on earlier releases. The capabilities have existed on both the VAX and Alpha platforms for some time now.) To verify current passwords, you can also use a technique known to system crackers as the "dictionary attack" - the mechanism that makes this attack somewhat more difficult on OpenVMS is the hashing scheme used on OpenVMS, and the file protections used for the SYSUAF authorization database. Given a dictionary of words and the unprotected contents of the SYSUAF file, a search for obvious passwords can be performed. Interestingly, a "dictionary attack" also has the unfortunate side- effect of exposing the password to the user-while this is clearly the goal of a system cracker, authorized privileged and non-privileged system users should not 5-53 System Management Information know nor have access to the (cleartext) passwords of other users. Accordingly, OpenVMS does not store the cleartest password. Further, OpenVMS uses a password hashing algorithm, not an encryption algorithm. This means that storage of a cleartext password is deliberated avoided, and the cleartext value is deliberately very difficult to obtain. The hash is based on a Purdy Polynomial, and the hash itself includes user-specific values in addition to the password, values that make the results of the password hash unique to each user. Regardless of the use of a password hashing scheme, if a copy of your password file should become available to a system cracker, you will want to force all users to use new passwords immediately. If you should require a user to verify a password, use the username, the user's salt value (this value is acquired via $getuai) and the user's specified cleartext password, and compare the resulting hashed value (using a call to $hash_password) against the saved hashed password value (this value also acquired via $getqui). For reasons of security, avoid saving a cleartext password value in any data files, and do not maintain the cleartext password in memory longer than required. (Use of sys$acm on V7.3-1 and later is recommended.) Kerberos authentication (client and server) is available on OpenVMS V7.3 and later. Integration of Kerberos support into various Compaq and into third- party products is expected. External authentication is available in V7.3-1 and later, with support for user-written external authentication in V7.3-2 and later. If you are simply looking for OpenVMS access and the SYSTEM and all other privileged passwords are forgotten or otherwise unavailable, please see section Section 5.6 and/or the OpenVMS documentation set. Also please see the NCSC C2 guidelines in the OpenVMS security manual. 5-54 System Management Information __________________________________________________________ 5.42__Please_help_me_with_the OpenVMS BACKUP utility? 5.42.1 Why isn't BACKUP/SINCE=BACKUP working? If you are seeing more files backed up than previously, you are seeing the result of a change that was made to ensure BACKUP can perform an incrementation restoration of the files. In particular, if a directory file modification date changes, all files underneath it are included in the BACKUP, in order to permit incremental restoration should a directory file get renamed. _____________________________ 5.42.1.1 Why has OpenVMS gone through the agony of this change? When a directory is renamed, the modified date is changed. When the restoration needs to restore the directory and its contents, and the restoration should not result in the restoration of the older directory name when a series of incremental BACKUPs are restored. Thus an incremental BACKUP operation needs to pick up all of the changes. Consider performing an incremental restoration, to test the procedures. This testing was how OpenVMS Engineering found out about the problem that was latent with the old BACKUP selection scheme-the old incremental BACKUP scheme would have missed restoring any files under a renamed directory. Hence the change to the selection mechanisms mentioned in Section 5.42.1. _____________________________ 5.42.1.2 Can you get the old BACKUP behaviour back? Yes, please see the /NOINCREMENTAL qualifier available on recent OpenVMS versions (and ECO kits). Use of this qualifier informs BACKUP that you are aware of the limitations of the old BACKUP behaviour around incremental disk restorations. 5-55 System Management Information _____________________________ 5.42.2 What can I do to improve BACKUP performance? Use the documented commands in the manual for performing incremental BACKUPs. Use the documented incremental procedures. Don't try to use incremental commands in a non-incremental context. Also consider understanding and then using /NOALIAS, which will likely be a bigger win than will anything to do with the incremental BACKUPs, particularly on system disks and any other disks with directory aliases. See the OpenVMS documentation for additional details. Ignoring hardware performance and process quotas, the performance of BACKUP during a disk saveset creation is typically limited by three factors: 1 Default extend size The default behavior can have poor performance, as the extend operation can involve extensive additional processing and I/O operations. Consider changing the default extend value on the volume, or change the extend for the process: $ set rms/extend=65000 2 Output IO size The default IO size for writing an RMS sequential file is 32 blocks, an increase from the value of 16 blocks used on earlier versions. Setting this to the maximum of 127 can reduce the number of IOs by almost a factor of 4: $ set rms/block=127 Note that the performance might be better on some controllers if the block count is a multiple of 4 - e.g. 124 3 Synchronous writes to the saveset Starting with OpenVMS V7.3, you can now persuade RMS to turn on write-behind for sequential files opened unshared. (Please see the V7.3 release notes or more recent documentation for details.) Enabling the write-behind operations involves setting the dynamic system parameter RMS_SEQFILE_WBH to 1. 5-56 System Management Information This parameter is dynamic, and it can be enabled and disabled without a reboot, and changes in its setting can and will directly effect the running system. In order to get the full benefit from write- behind operations, you also need to increase the RMS local buffer count from the default of 2 to a larger number. Raising the value to 10 is probably a reasonable first estimate for this value. $ run sys$system:sysman PARAMETERS USE ACTIVE PARAMETERS SET RMS_SEQFILE_WBH 1 PARAMETERS WRITE ACTIVE EXIT $ SET RMS/BUFFER=10/EXTEND=65000/BLOCK=127 $ BACKUP source-specification ddcu:[dir]saveset.bck/SAVE _____________________________ 5.42.3 Why is BACKUP not working as expected? First, please take the time to review the BACKUP documentation, and particularly the BACKUP command examples. Then please download and install the most current BACKUP eco kit. Finally, please please set the process quotas per the System Management documentation. These steps tend to resolve most problems seen. BACKUP has a very complex interface, and there are numerous command examples and extensive user documentation available. For a simpler user interface for BACKUP, please see the documentation for the BACKUP$MANAGER tool. As for recent BACKUP changes, oddities, bugs, etc: o A change made in OpenVMS V6.2 WILL cause more files to be included into a file-based BACKUP saveset using /SINCE=BACKUP as all files underneath any directory with a sufficiently recent (selected) date will be included in the saveset. This change was deliberate and intentional, and was mandated by the need to provide a functional incremental restoration. 5-57 System Management Information Without the inclusion of these apparently-extra files, an incremental saveset can NOT be reliably restored. o As part of the OpenVMS V6.2 change, the /SINCE command-without the specification of the =BACKUP keyword-selected more files than it should have. This is a bug. This bug has been remedied in the OpenVMS BACKUP source code and in some of (all of?) the BACKUP ECO kits. When working with BACKUP, you will want to: o Ensure you have your process quotas set per the recommendations in the OpenVMS System Management documentation. Deviation from these values can and will lead to access violation (ACCVIO) and other untoward behaviour. o Get the current BACKUP ECO kit and install it BEFORE you attempt to troubleshoot any problems. o Learn about the /NOINCREMENTAL (new) and /NOALIAS (V6.2 and later) command qualifiers. The former qualifier returns to the pre-V6.2 behaviour of the /SINCE file selection mechanism, while the latter (specified with /IMAGE) reduces the replication of files on system disks and other disks with file alias and directory alias entries. Both of these can reduce the numbers of files that will be selected and thus included into the saveset. Learn what /IGNORE=INTERLOCK means. This command probably does not provide what you think it does- those file system interlocks that this command is ignoring were implemented for a reason, after all. Ignoring these interlocks can lead to missed data and potentially to corruptions to individual files stored within the output saveset, corruptions that may or may not be reported. For details on this BACKUP command qualifier, please see the Ask The Wizard topic (2467). 5-58 System Management Information When working with the BACKUP callable API: o Build your applications with the most current BACKUP API available. Changes made to the V7.1-2 and V7.2 API were incompatible with the V7.1 and V7.2-1 and later APIs, and this incompatibility was repaired via a BACKUP ECO kit. Do NOT build your application with the versions of the BACKUP API that shipped with V7.1-2 and V7.2, as these are incompatible with the BACKUP API constants that were used on other versions. _____________________________ 5.42.4 How do I fix a corrupt BACKUP saveset? BACKUP savesets can be corrupted by FTP file transfers and by tools such as zip (particularly when the zip tool has not been asked to save and restore OpenVMS file attributes or when it does not support OpenVMS file attributes; use the zip "-V" option), as well as via other means of corruptions. If you have problems (eg: NOTSAVESET errors) with the BACKUP savesets after unzipping them or after an FTP file transfer, you can try restoring the appropriate saveset attributes using the tool: $ BACKUP/LIST saveset.bck/SAVE Listing of save set(s) %BACKUP-F-NOTSAVESET, saveset.bck/SAVE is not a BACKUP save set $ @SRH:[UTIL]RESET_BACKUP_SAVESET_FILE_ATTRIBUTES.COM saveset.bck $ BACKUP/LIST saveset.bck/SAVE Listing of save set(s) Save set: saveset.bck Written by: username ... This tool is available on the OpenVMS Freeware (in the [000TOOLS] directory). The Freeware is available at various sites-see the Freeware location listings elsewhere in the FAQ-and other similar tools are also available from various sources. 5-59 System Management Information In various cases, a SET FILE/ATTRIBUTES command can also be used. As the parameters of this command must be varied as the target BACKUP saveset attributes vary, this approach is not recommended. Also see the "SITE VMS", /FDL, and various other file- attributes options available in various FTP tools. (Not all available FTP tools support any or all of these options.) Browser downloads (via FTP) and incorrect (binary or ascii FTP transfer modes) are notorious for causing RMS file corruptions and particularly BACKUP saveset corruptions. You can sometimes help encourage the browser to select the correct FTP transfer type code (via RFC1738): o ftp://host/urlname.ext;type=i ! request ftp image/binary transfer o ftp://host/urlname.ext;type=a ! request ftp ascii/text transfer You can also often configure the particular web browser to choose the appropriate transfer mode by default, based on the particular file extensions, using a customization menu available in most web browsers. You can select that the specific file extentions involved use the FTP binary transfer mode, which will reduce the number of corruptions seen. _____________________________ 5.42.5 How do I write a BACKUP saveset to a remote tape? How to do this correctly was described at DECUS long ago. On the OpenVMS host with the tape drive, create the following SAVE-SET.FDL file: RECORD FORMAT fixed SIZE 8192 5-60 System Management Information Then create BACKUP_SERVER.COM: $ ! $ ! BACKUP_SERVER.COM - provide remote tape service for BACKUP. $ ! $ set noon $ set rms/network=16 $ allocate mka500 tapedev $ mount/nounload/over:id/block=8192/assist tapedev $ convert/fdl=SAVE-SET sys$net tapedev:save-set. $ dismount/unload tapedev $ stop/id=0 On the node where you want to do the backup, use the DCL command: $ backup - srcfilespec - node"user pwd"::"task=backup_server"/block=8192/save One area which does not function here is the volume switch; multi-reel or multi-cartridge savesets. Since the tape is being written through DECnet and RMS and the magtape ACP, BACKUP won't see the media switch and will split an XOR group across the reel boundary. BACKUP might well be willing to read such a multi- reel or multi-cartridge saveset (directly, not over the net) as the XOR blocks are effectively ignored until and unless needed for error recovery operations. BACKUP likely will not be able to perform an XOR-based recovery across reel or cartridge boundaries. Unfortunately BACKUP can't read tapes over the network because the RMS file attributes on a network task access look wrong; the attributes reported include variable length records. _____________________________ 5.42.6 How to perform a DoD security disk erasure? Sometimes refered to as disk, tape, or media declassification, as formatting, as pattern erasure, or occasionally by the generic reference of data remanence. Various references to the US Deparment of Defence (DoD) or NCSC "Rainbow Books" documentation are also seen in this context. 5-61 System Management Information While this erasure task might initially appear quite easy, basic characteristics of the storage media and of the device error recovery and bad block handling can make this effort far more difficult than it might initially appear. Obviously, data security and sensitivity, the costs of exposure, applicable legal or administrative requirements (DoD, HIPPA or otherwise), and the intrinsic value of the data involved are all central factors in this discussion and in the decision of the appropriate resolution, as is the value of the storage hardware involved. With data of greater value or with data exposure (sometimes far) more costly than the residual value of the disk storage involved, the physical destruction of the platters may well be the most expedient, economical, and appropriate approach. The unintended exposure of a bad block containing customer healthcare data or of credit card numbers can quite be costly, of course, both in terms of the direct loss, and the longer-term and indirect costs of such exposures. Other potential options include the Freeware RZDISK package, the OpenVMS INITIALIZE/ERASE command (and potentially in conjunction with the $erapat system service) and OpenVMS Ask The Wizard (ATW) topics including (841), (3926), (4286), (4598), and (7320). For additional information on sys$erapat, see the OpenVMS Programming Concepts manual and the OpenVMS VAX examples module SYS$EXAMPLES:DOD_ERAPAT.MAR. Some disk controllers and even a few disks contain support for data erasure. Some DSSI Disk ISEs, for instance. For the prevention of casual disk data exposures, a generic INITIALIZE/ERASE operation is probably sufficient. This is not completely reliable, particularly if the data is valuable, or if legal, administrative or contractual restrictions are stringent-there may well be revectored blocks that are not overwritten or not completely overwritten by this erasure, as discussed above, and these blocks can obviously contain at least part of most any data that was stored on the disk - but this basic disk overwrite 5-62 System Management Information operation is likely sufficient to prevent the typical information disclosures. You will want to consult with your site security officer, your corporate security or legal office, with HP Services or your prefered service organization, or with a firm that specializes in erasure or data declassification tasks. HP Services does traditionally offer a secure disk declassification service. _____________________________ 5.42.7 How to enable telnet virtual terminals? To enable virtual terminal support for telnet and rlogin devices, add the following logical name definitions into SYLOGICALS.COM: $ DEFINE/SYSTEM/EXECUTIVE TCPIP$RLOGIN_VTA TRUE $ DEFINE/SYSTEM/EXECUTIVE TCPIP$TELNET_VTA TRUE See SYS$STARTUP:SYLOGICALS.TEMPLATE for details on the typical contents of SYLOGICALS.COM. In SYSTARTUP_VMS.COM, ensure that a command similar to the following is invoked: $ SYSMAN IO CONNECT VTA0/NOADAPTER/DRIVER=SYS$LOADABLE_IMAGES:SYS$TTDRIVER.EXE In MODPARAMS.DAT, add the following line or (if already present) mask the specified hexidecimal value into an existing TTY_DEFCHAR2, and perform a subsequent AUTOGEN with an eventual reboot: TTY_DEFCHAR2 = %X20000 This value is TT2$M_DISCONNECT. On older TCP/IP Services-versions prior to V5.0-you will have to perform the following UCX command: $ UCX UCX> SET CONF COMM/REMOTE=VIRTUAL 5-63 System Management Information _____________________________ 5.42.7.1 Volume Shadowing MiniCopy vs MiniMerge? MiniMerge support has been available for many years with OpenVMS host-based volume shadowing, so long as you had MSCP controllers (eg: HSC, HSJ, or HSD) which supported the Volume Shadowing Assist known as "Write History Logging". If you are interested in mini-merge and similar technologies, please see the Fibre Channel webpage and the information available there: o http://www.openvms.compaq.com/openvms/fibre/ Mini-Merge support was originally intended to be controller-based and was expected with HSG80 series storage controllers and was expected to require ACS 8.7 and OpenVMS Alpha V7.3-1. Host-based Mini-Merge (HBMM) is now available for specific OpenVMS releases via a shadowing ECO kit, and is also present in OpenVMS V8.2 and later. HBMM applies to the HSG80 series and-like host-based volume shadowing-to most other (all other?) supported storage devices. The following sections describe both Mini-Copy and Mini-Merge, and can provide a basis for discussions. _____________________________ 5.42.7.1.1 Mini-Copy? A Shadowing Full Copy occurs when you add a disk to an existing shadowset using a MOUNT command; the entire contents of the disk are effectively copied to the new member (using an algorithm that goes through in 127-block increments and reads one member, compares with the target disk, and if the data differs, writes the data to the target disk and loops back to the read step, until the data is equal for that 127- block section). (This is one of the reasons why the traditional recommendation for adding new volumes to a shadowset was to use a BACKUP/PHYSICAL copy of an existing shadowset volume, simply because the reads then usually matched and thus shadowing usually avoided the need for the writes.) 5-64 System Management Information If you warn OpenVMS ahead of time (at dismount time) that you're planning to remove a disk from a shadowset but re-add it later, OpenVMS will keep a bitmap tracking what areas of the disk have been modified while the disk was out of the shadowset, and when you re-add it later with a MOUNT command OpenVMS only has to update the areas of the returned disk that the bit- map indicates are now out-of-date. OpenVMS does this with a read source / write target algorithm, which is much faster than the shenanigans the Full Copy does, so even if all of the disk has changed, a Mini-Copy is faster than a Full Copy. _____________________________ 5.42.7.1.2 Mini-Merge? A Shadowing Merge is initiated when an OpenVMS node in the cluster (which had a shadowset mounted) crashes or otherwise leaves unexpectedly, without dismounting the shadowset first. In this case, OpenVMS must ensure that the data is identical, since Shadowing guarantees that the data on the disks in a shadowset will be identical. In a regular Merge operation, Shadowing uses an algorithm similar to the Full Copy algorithm (except that it can choose either of the members' contents as the source data, since both are considered equally valid), and scans the entire disk. Also, to make things worse, for any read operations in the area ahead of what has been merged, Shadowing will first merge the area containing the read data, then allow the read to occur. A Merge can be very time-consuming and very I/O intensive. If a node crashes, the surviving nodes can query to determine what exact areas of the disk the departed node was writing to just before the crash, and thus Shadowing only needs to merge just those few areas, so this tends to take seconds, as opposed to potentially requiring many minutes or even hours for a regular full Merge. 5-65 System Management Information __________________________________________________________ 5.43 Please explain DELETE/ERASE and File Locks? DELETE/ERASE holds the file lock and also holds a lock on the parent directory for the duration of the erasure. This locking can obviously cause an access conflict on either the file or on the directory- it might well pay to rename files into a temporary directory location before issuing the DELETE/ERASE, particularly for large files and/or for systems with multiple overwrite erase patterns in use; for any systems where the DELETE/ERASE erasure operation will take a while. __________________________________________________________ 5.44 Managing File Versions? Some applications will automatically roll file version numbers over, and some will require manual intervention. Some will continue to operate without the ability to update the version, and some will be unable to continue. Some sites will specifically (attempt to) create a file with a version of ;32767 to prevent the creation of additional files, too. To monitor and resolve file versions, you can use commands including: $ SET FILE/VERSION_LIMIT=n filename $ SET DIRECTORY/VERSION_LIMIT=n [directory] And you can also monitor file version numbers, and can report problems with ever-increasing file versions to the organization(s) supporting the application(s) generating files with ever-increasing version numbers for details on potential problems, and for any recommendations on resetting the version numbers for the particular product or package. If required, of course. The following pair of DCL commands-though obviously subject to timing windows- can be used to rename all the versions of a file back down to a contiguous sequence of versions starting at 1: $ RENAME file.typ;* RENAME.TMP; $ RENAME RENAME.TMP;* file.typ; 5-66 System Management Information The key to the success of this RENAME sequence is the specification of (only) the trailing semicolon on the second parameter of each of the RENAME commands. You may also see the numbers of files reduced with DELETE commands, with multiple directories, or with PURGE commands such as the following examples: $ PURGE/BEFORE="-2-" $ PURGE/BEFORE="TODAY-2-" $ PURGE/KEEP=10" You can use DFU (Freeware) to quickly and efficiently scan for all files with large(r) version numbers: DFU SEARCH/VERSION=MINIMUM=nnnn If you are creating or supporting an application, selecting temporary or log file filenames from among a set of filenames-selecting filenames based on time, on process id, on the day of week, week number, or month, on the f$unique lexical (V7.3-2 and later), etc- is often useful, as this approach more easily permits on-line adjustments to the highest file versions and easily permits on-line version compression using techniques shown above. With differing filenames, you are less likely to encounter errors resulting from files that are currently locked. You can also detect the impending version number limit within the application, and can clean up older versions and roll the next file version creation to ;1 or such. Also see Section 9.4. __________________________________________________________ 5.45 Host-based Volume Shadowing and RAID? Host-based Volume Shadowing (HBVS) is Disk Mirroring is RAID Level 1. HBVS is capable of shadowing devices of different geometries, of different block counts (with dissimilar device shadowing; allowing for mixtures of hardware) and-with dynamic volume expansion-of growing volumes on the fly, and HBVS is capable of shadowing/mirroring/raid-1 operations across cluster configurations up to the full span-please see the 5-67 System Management Information Cluster SPD for the current supported span; the supported span limit is currently multiple hundreds of kilometers-of a cluster. HBVS can be layered onto controller (hardware) RAID, as well. For information on host-based striping, please see the StorageWorks RAID product. 5-68 _______________________________________________________ 6 Information on Mail __________________________________________________________ 6.1 MAIL keeps saying I have new messages, but I don't. What do I do? if you see the %MAIL-W-NONEWMAIL, no new messages error reported when MAIL indicates you have messages, then the NEWMAIL count has become skewed from reality. The count of new mail messages is kept separately from your mail folder, and is stored in VMSMAIL_ PROFILE.DATA. It sometimes happens that this count differs from what is stored in your mail folder. If this arises, invoke MAIL and repeatedly enter the READ/NEW command (or press the keypad hyphen key on an LK-compatible keyboard) until you see no new mail messages. Then enter the command one more time. This will resynchronize the counters. If you are operating in a cluster and find your mail counts inconsistent across cluster members, your customer is likely missing a definition of the VMSMAIL_ PROFILE logical name-and is probably also missing definitions of other logical names associated with other shared files-or has one or more inconsistent definitions of this and likely of other logical names. For details on the configuration data files that must be shared within a cluster, please see SYS$STARTUP:SYLOGICALS.TEMPLATE on V7.2 and later. __________________________________________________________ 6.2 How do I send or read attachments in VMS MAIL? Is there any way to send or read mail with files as attachments from VMS? 6-1 Information on Mail Not directly with the OpenVMS MAIL facility, but there are several other options: o Install PINE, available commercially from Innosoft or free from Andy Harper. With PINE you can both send and receive MIME messages, if you have the appropriate viewers available. o http://www.process.com/ o http://www.agh.cc.kcl.ac.uk/files/vms/pine-vms/ o ftp://ftp2.kcl.ac.uk/pub/vms/pine-vms/ o If you are working from an X Windows display, you can use the OpenVMS version of Netscape Navigator or Mozilla. The mail download protocol chosen to access the mail server from the Navigator or Mozilla mail client can be POP or IMAP, with the former causing messages to be downloaded while the latter permits messages to be retained on the mail server. Most folks prefer IMAP for this reason. o MPACK/MUNPACK. To send a MIME mail, construct the message with attachments manually using MPACK. You cannot send the resulting file directly through MAIL because an extra blank header line will be inserted between your message and the OpenVMS MAIL headers, which will cause the message to appear as plain text in most mail programs. Some TCP/IP stacks provide a work around for this problem, and if that doesn't work, you should generally be able to force the message directly into the SMTP port of your mail machine. Examples of both methods are in: o http://saf.bio.caltech.edu/pub/software/openvms/mmail.com To read a MIME mail message, open it in MAIL, extract it to a file, then use MUNPACK to break out and decode the attachments. MPACK/MUNPACK tools are also available on OpenVMS Freeware V5.0. o With OpenVMS V7.2 and later, use the MIME tool supplied with OpenVMS. 6-2 Information on Mail __________________________________________________________ 6.3 How can I block SMTP mail relay spam? Use the anti-spam capabilities present in the TCP/IP Services V5.1 and later SMTP servers. Use a firewall. On earlier TCP/IP Services releases, some simple DCL can reportedly prevent relay SMTP spam. Use the UCX command SHOW SERVICE SMTP/FULL to find the directory containing the UCX$SMTP_RECV_STARTUP.COM file, and insert the following DCL: $ ! $ ! Block spam. $ ! $ MY_ADDRESS_LONG[0,32]=F$INTEGER(F$TRNLNM("SYS$REM_NODE")-"::") $ MY_ADDRESS=F$FAO("!UB.!UB.!UB.!UB",F$CVUI(0,8,MY_ADDRESS_LONG),- F$CVUI(8,8,MY_ADDRESS_LONG),F$CVUI(16,8,MY_ADDRESS_LONG),- F$CVUI(24,8,MY_ADDRESS_LONG))'" $ MY_ADDRESS_REVERSE=F$FAO("!UB.!UB.!UB.!UB",- F$CVUI(24,8,MY_ADDRESS_LONG),F$CVUI(16,8,MY_ADDRESS_LONG),- F$CVUI(8,8,MY_ADDRESS_LONG),F$CVUI(0,8,MY_ADDRESS_LONG))'" $ WRITE SYS$OUTPUT F$TIME()+" "+F$TRNLNM("SYS$REM_NODE")+MY_ADDRESS $ UCX SHOW HOST 'MY_ADDRESS_REVERSE'.INPUTS.ORBS.ORG $ IF $STATUS.EQ.1 $ THEN $ WRITE SYS$OUTPUT "SPAM from relay rejected" $ EXIT $ ENDIF $ UCX SHOW HOST 'MY_ADDRESS_REVERSE'.SPAMSOURCES.ORBS.ORG $ IF $STATUS.EQ.1 $ THEN $ WRITE SYS$OUTPUT "SPAM source relay rejected" $ EXIT $ ENDIF $ ! $ ! Run receiver. $ ! $ run sys$system:ucx$smtp_receiver.exe $ goto exit 6-3 _______________________________________________________ 7 Information on Utilities __________________________________________________________ 7.1 How do I play an audio CD on my workstation? If you've installed the DECwindows examples, you'll find DECW$CDPLAYER.C, .DAT, .EXE, .UIL, and .UID. Copy the .UID and .DAT files to DECW$USER_DEFAULTS: (typically SYS$LOGIN:), define the logical name DECW$CD_PLAYER to be the device name of your CD-ROM drive (eg. DKA400:), give yourself PHY_IO and DIAGNOSE privileges, and run the .EXE. (These privileges are required, as the access to the CD-related extensions will require the use of the privilege-protected IO$_ DIAGNOSE I/O function code.) You can also install the image with these privileges. See the source for additional details - note that the comments regarding the need for SYSGEN CONNECT are no longer applicable (at least as of VMS V5.5-2). There's also SYS$EXAMPLES:CDROM_AUDIO.C and .EXE, a non-Motif program, available on OpenVMS VAX, and DECW$EXAMPLES:DECW$CDPLAYER.* on OpenVMS VAX and OpenVMS Alpha. The standard OpenVMS ATA (IDE) SYS$DQDRIVER device driver does not support the necessary does not support the necessary IO$_DIAGNOSE function code that is required for access to audio CD media commands (on OpenVMS versions prior to V7.3), but an updated SYS$DQDRIVER device driver (source code and all) with this capability and with the source code of an updated DECW$CDPLAYER CD audio player is available on the OpenVMS Freeware website (www.hp.com/go/openvms/freeware/, look for the directory /dqdriver/), and these updates are also included on OpenVMS Freeware V5.0, and OpenVMS ECO kits containing newer versions of the driver are available. Freeware V6.0 has a version of DQDRIVER that is newer than that of the OpenVMS Alpha V7.3-2 7-1 Information on Utilities release, with additional capabilities and with improved error diagnostics. OpenVMS Alpha V7.3 and later include a version of SYS$DQDRIVER with the necessary IO$_DIAGNOSE support. __________________________________________________________ 7.2 How do I access a Microsoft Windows floppy disk from OpenVMS? The HP Advanced Server (formerly known as PATHWORKS) for OpenVMS product includes an unsupported and undocumented utility called PCDISK, and this tool can read and write various Microsoft MS-DOS and Microsoft Windows FAT-format diskettes, and can usually access FAT-format volumes written by other operating systems. ProGIS in Germany sells a product called VMove which supports DOS files on many different device types. For more information, send mail to info@progis.de. Engineering Software has a product called VAKSAT which will read, write, and erase files on MS-DOS FAT diskettes. Available for both VAX and Alpha. Contact ed@cityscape.co.uk for more information. MadGoat PC Exchange (PCX) is a utility for copying files to and from MS-DOS and Microsoft Windows (FAT) format diskettes under OpenVMS, using an RX23 (3.5"), RX26 (3.5"), or RX33 (5.25") diskette drive. For 3.5" diskettes, high-density disks can be read or written; double-density disks are read-only. Only high-density disks are supported on the RX33. o http://www.madgoat.com/ The Freeware package WINFX is available on Freeware V6.0, and can read the FAT volume structure. o http://www.hp.com/go/openvms/freeware/ 7-2 Information on Utilities __________________________________________________________ 7.3 How do I play sound files on an AlphaStation? DECsound doesn't work. Various of the more recent AlphaStation systems use a different sound board (Microsoft Sound System) than the earlier DEC 3000 series systems, and DECsound, as supplied by DECwindows Motif, doesn't support this board nor this interface. HP offers an optional product, Multimedia Services (MMOV) for OpenVMS: o http://h18000.www1.hp.com/info/spd/ OpenVMS typically uses SPD 25.01.xx, SPD 41.87.xx, and SPD 82.35.xx. which provides a replacement for DECsound for this card as well as many other features (an AVI and MPEG player, video capture support, etc.) Ensoniq sound support is also available. __________________________________________________________ 7.4 How do I read IBM EBCDIC tapes on OpenVMS? Most (all?) IBM EBCDIC-based systems can read and write ANSI-labeled ASCII magtapes. Fixed-length records (MOUNT /FOREIGN /BLOCKSIZE=512 /RECORDSIZE=512, for one-block records) and the DCL COPY command can be used to transfer fixed-record-size text files out onto tape media, or to read from fixed-record tape media. Please consult the IBM documentation for the details and command syntax needed when reading and writing ANSI media using IBM JCL or other applicable IBM command language. There exists various freeware around (TAPECOPY, ETAPE, TCOPY, MTEXCH) that can read and write EBCDIC tapes. Visit the Encompasserve (DECUS) website software archives search engine and search for "EBCDIC" for details. o http://www.encompassus.org OpenVMS does not include an integrated tool for EBCDIC tape processing, but does provide a character conversion API useful within application programs. 7-3 Information on Utilities One source for ETAPE is: o http://www.ualr.edu/ftp/vms/ETAPE_SRC/ The OpenVMS Freeware V5.0 distribution included this ETAPE tool, as well. __________________________________________________________ 7.5 How can I patch an OpenVMS Alpha image? Using the OpenVMS Freeware tool ZAP: o Look for the RMS_TOOLS directory on Freeware V5.0: http://www.hp.com/go/openvms/freeware/ tell ZAP to read a block (bucket) of information based on the virtual block number (VBN), using X for hexadecimal. Dump yourself into the OpenVMS debugger with R2 pointing into the buffer, EXAMINE/INSTRUCTION as needed, alter the buffer as required, GO to get out of the debugger and back into ZAP, and use the ZAP W command to write the updated block. 7-4 _______________________________________________________ 8 DCL Details __________________________________________________________ 8.1 DCL Symbols and OpenVMS Logical Names? DCL symbols are programming-style variables implemented within the DCL command interpreter, and these are used both for programming and to provide command verb synonyms. Symbols are local to the command interpreter operating within a particular process, and are not shared. Lists of symbols can be copied into subprocesses during a subprocess creation operation, but these symbols are neither copied back into the parent process when the subprocess exits, nor are symbols ever shared across processes. Symbols can be specified in and utilized in basic mathematical operations, and bit-level operations are available with the f$cvsi and f$cvui bit extraction lexical functions, and with the square-brackets notation for bit insertion (see Section 8.13 for an example), and with bitwise operators. Symbols are of two basic types, STRING and INTEGER, and these (or an undefined symbol) can be differentiated with the f$type lexical function. DCL symbols can also be used as a mechanism to abbreviate a DCL command verb, or an easy way to invoke a DCL command procedure. Symbols can have local or global scope within a process, and scope is affected by nested procedure calls and DCL constructs such as CALL and SET SCOPE, but such discussions are beyond the scope of this section. OpenVMS Logical names can store device names, device and directory specifications, rooted or searchlist specifications, and full filenames. Logical names can also store arbitrary data, but there are no native mathematical or bitwise operators available. Analogous to DCL symbols, process-local logical names can be copied into subprocesses during a subprocess creation 8-1 DCL Details operation, but these process-local logical names are neither copied back into the parent process when the subprocess exits, nor are these logical names ever shared. Logical names are implemented deep within the OpenVMS executive, and are organized into logical name tables. Logical names can be stored in tables private to a process( LNM$PROCESS, the process-local logical name table) , that can be shared among processes in the same job tree ( LNM$JOB, the job logical name table) or in logical name tables that are shared among larger groups of processes (eg: LNM$GROUP, the UIC group logical name table and LNM$SYSTEM, the system-wide logical name table). Logical names are centrally intended to provide various I/O-related capabilities, including device independence and configuration customization-correctly- written application programs can use logical names to avoid embedding specific device or device and directory specifications, and to allow filename and configuration customizations. One of the most powerful capabilities of logical names beyond the device independence provided involves the defaulting capabilities; you can use RMS parsing (directly, or with mechanisms such as the f$parse lexical function) to provide a filename and a default filename. To provide the mechanism that allows SYSUAF to be located in an arbitrary position or even an arbitrary filename, a construct similar to the following is used: $ UAF = F$PARSE("SYSUAF","SYS$SYSTEM:.DAT") This design allows the logical name SYSUAF to be optionally defined, and - when present-to specify the particular location and name of the file. Portions of the full file specification that are omitted are retrieved using the default translation of SYS$SYSTEM: and the file type of .DAT. Logical names also have assigned processor modes, as some translations must be trustworthy. In the example above, only trusted and privileged system users should be able to redirect the SYSUAF authorization database, 8-2 DCL Details so any definition of the SYSUAF logical name must be made in EXECUTIVE mode in a trusted logical name table. As for common OpenVMS terminology, logical names are "defined" and the associated processing is refered to as "translation", while symbols are "equated" and the associated processing is refered to as "substitution". "Lexical functions" are processing routines built into DCL, and typically prefixed with f$. Many of the lexical functions are built upon correspondingly-named system services, though not all. Symbol substitution occurs only when the DCL command interpreter is reading and processing the command input; for information on DCL symbol substitution, see Section 8.10. For program access, see the RTL routines lib$set_symbol and lib$get_symbol.) For information on logical name translation, please see f$trnlnm lexical function and the DCL commands DEFINE and DEASSIGN, as well as underlying system services such as sys$trnlnm. Logical name translation occurs when requested, or as the file or I/O operation is started. Please see the OpenVMS User's Guide in the OpenVMS documentation set for a far more detailed description of these constructs. For related materials, please see Section 8.10 and Section 8.11. __________________________________________________________ 8.2 How do I run a program with arguments? The RUN command does not accept arguments. To pass arguments to a program, you must use what is called a "foreign command", and either an explicit command as shown here, or an automatic foreign command. For example: $ unzip :== $disk:[dir]unzip.exe $ unzip -? 8-3 DCL Details The leading $ in the equivilence name for the symbol definition is what makes the DCL symbol a foreign command. If the device and directory are omitted, SYS$SYSTEM: is assumed. Under OpenVMS V6.2 and later, DCL supports automatic foreign command definition via the logical name DCL$PATH. An example of a definition of this logical name is: $ DEFINE DCL$PATH SYS$DISK:[],ddcu:[mytooldir],SYS$SYSTEM: DCL will first look for a command in the DCL command table, and if no match is found and if DCL$PATH is defined, it will then look for command procedures and executable images with filenames matching the command specified, in the directories specified via DCL$PATH. The first match found is invoked, and under OpenVMS, the DCL$PATH support will cause a command procedure to be activated in preference to an executable image. For more information on foreign commands or on automatic foreign command support, see the OpenVMS User's Manual. See also Section 10.3. If you want to create a detached process that takes arguments from a command line, it must be run under the control of a command line interpreter (CLI) (typically DCL). This is done by placing the command line in a file, specifying SYS$SYSTEM:LOGINOUT.EXE as the image to run and the command file as the input. For example: $ OPEN/WRITE CMD TEMP_INPUT.COM $ WRITE CMD "$ MYCOMMAND arguments" $ CLOSE CMD $ RUN/DETACHED SYS$SYSTEM:LOGINOUT /INPUT=TEMP_INPUT.COM Various OpenVMS library calls (such as lib$spawn(), cli$dcl_parse(), and the C library system() call) require access to a command line interpreter such as DCL to perform requested actions, and will not operate if a CLI is not available. 8-4 DCL Details When a CLI is not available, these calls typically return the error status SS$_NOCLI. And as mentioned above, invoke the image LOGINOUT to cause a CLI (such as DCL) to be mapped into and made available in the context of the target process. For examples of how TCP/IP Services sets up its foreign commands (which includes tools such as uuencode and uudecode), please see the DCL command procedure SYS$STARTUP:TCPIP$DEFINE_COMMANDS.COM. Also see Section 8.12. __________________________________________________________ 8.3 How can I clear the screen in DCL? The simplest way is the TYPE/PAGE NLA0: command. You can set up a symbol to clear the screen in your LOGIN.COM: $ CLS :== TYPE/PAGE NLA0: __________________________________________________________ 8.4 Using REPLY/LOG from DCL? Disabling Console OPCOMs? Your terminal must be enabled as an operator terminal before the REPLY/LOG command can be used, but a DCL procedure (batch command file, system startup, etc) does not have an associated terminal. To make this work, use the following sequence to enable the OPA0: console as the operator terminal, then the REPLY/LOG command will be accepted: $ DEFINE/USER SYS$COMMAND _OPA0: $ REPLY/LOG $ DEFINE/USER SYS$COMMAND _OPA0: $ REPLY/ENABLE To disable the system console terminal (OPA0:) as an operator terminal, use the following command: $ DEFINE/USER SYS$COMMAND _OPA0: $ REPLY/DISABLE 8-5 DCL Details Also see SYLOGICALS.COM (and SYLOGICALS.TEMPLATE) for information on configuring the behaviour of OPCOM, including the (default) use of the system console (OPA0:) as an operator terminial and the specific contents and behaviour of the system operator log file OPERATOR.LOG. __________________________________________________________ 8.5 How do I generate a random number in DCL? With V7.3-2 and later, f$unique can be useful here. Alternatively, here is a pseudo-random number generator, just do a GOSUB RAND and the global symbol RANDOM will contain a randomly generated number. You can feed the generator a ceiling value (__CEIL) or a new seed (__SEED). $! RAND - returns a positive random number ("RANDOM") between 0 and $! __CEIL - 1. $! sharris-at-sdsdmvax.fb3.noaa.gov $ RAND: $ $ IF F$TYPE(__SEED) .EQS. "" $ THEN $ ! seed the random number generator, ... $ __NOW = F$CVTIME() $ __HOUR = 'F$EXTRACT(11,2,__NOW)' $ __MINUTE = 'F$EXTRACT(14,2,__NOW)' $ __SECOND = 'F$EXTRACT(17,2,__NOW)' $ __TICK = 'F$EXTRACT(20,2,__NOW)' $ $ __SEED == __TICK + (100 * __SECOND) + (6000 * __MINUTE) + - (360000 * __HOUR) $ ! the generator tends to do better with a large, odd seed, ... $ __SEED == (__SEED .OR. 1) $ ! clean up, ... $ DELETEX/SYMBOL __NOW $ DELETEX/SYMBOL __HOUR $ DELETEX/SYMBOL __MINUTE $ DELETEX/SYMBOL __SECOND $ DELETEX/SYMBOL __TICK $ ENDIF $ $ IF F$TYPE(__CEIL) .EQS. "" THEN __CEIL = %X3FFFFFFF 8-6 DCL Details $ $ __SEED == __SEED * 69069 + 1 $ $ RANDOM == (__SEED.AND.%X3FFFFFFF)/(%X40000000/__CEIL) $ $ RETURN __________________________________________________________ 8.6 What does the MCR command do? The MCR is an artifact of RSX compatibility mode, the operating system from which OpenVMS is descended. MCR is the Monitor Console Routine, and the command is intended to activate RSX compatibility mode utilities. When used on OpenVMS, the command is most commonly used to run the specified image and-because the tool detects the image is not a compatibility-mode image- it acts as a form of RUN command with the default file specification of SYS$SYSTEM:.EXE. MCR passes any (optional) command line arguments in a fashion similar to a foreign command. In other words: $ MCR FOO BAR is equivalent to: $ FOO :== $FOO $ FOO BAR MCR is not documented. Use of a foreign command or the DCL$PATH mechanism is preferred. For details on this, see Section 8.2. __________________________________________________________ 8.7 How do I change the OpenVMS system prompt? You can use the SET PROMPT command for this purpose. SET PROMPT sets the DCL prompt to the specified string. When you want to display variable information, you will need to establish a tie-in that provides the information to the SET PROMPT command as required. If you wish to display the default directory for instance, you will have to establish a tie between the SET DEFAULT command and the SET PROMPT commands, as there is no direct way to get the default directory as 8-7 DCL Details the DCL prompt. You can easily acquire or create a set of DCL command procedures that perform the SET DEFAULT and SET PROMPT for you. These DCL command procedures often use a command such as: $ set prompt='f$environment("default")' More advanced users could implement a system service or other intercept, and use these tools to intercept the directory change and reset the prompt accordingly. (This approach likely involves some kernel-mode programming, and requires write access to various undocumented OpenVMS data structures.) There are related tools available from various sources, including the following web sites: o ftp://ftp.hhs.dk/pub/vms/setpmt/ o ftp://ftp.tmesis.com/sys_service_hook.src o James F. Duff has also made available a Macro32 tool known as TIME_PROMPT, a tool that sets the prompt to the current system time. o Many folks have contributed DCL procedures to perform this task. Visit the newsgroup archives for information and examples. __________________________________________________________ 8.8 Can I do DECnet task-to-task communication with DCL? Yes, you can do this with DCL. The OpenVMS DECnet documentation shows various simple examples using the task object and the TYPE command to trigger the execution of a DCL command procedure on a remote node. An example DCL command procedure that is rather more advanced than using the TYPE command as a trigger is included in the Ask The Wizard area: o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) 8-8 DCL Details For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. DCL does not include support asynchronous I/O, thus a predetermined protocol or a predetermined "turn-around" command sequence must be implemented in order to avoid protocol deadlocks-cases where both tasks are trying to write or both tasks are trying to read. The task that is writing messages to the network must write (or write and read) a predetermined sequence of messages, or it must write a message that tells the reader that it can now start writing messages. (This is the essence of a basic half-duplex network protocol scheme.) __________________________________________________________ 8.9 How can I get the width setting of a terminal? $ width = f$getdvi(terminal,"DEVBUFSIZ") __________________________________________________________ 8.10 Why doesn't DCL symbol substitution work? The DCL symbol substitution processing occurs only at the DCL prompt, not within data and not within files. If you wish to perform symbol substitution in this environment, you typically write a small file containing the command(s) and data to be invoked- potentially only the data-and you then invoke the created procedure or reference the specified data. In this case, use of a file containing nolinemode commands or other techniques might be useful-you will want to ensure that the text editor you use does not attempt to use screen mode or similar, as this is not generally considered adventageous within a command procedure. Tools such as FTP have alternatives: COPY/FTP. 8-9 DCL Details DCL symbol substitution occurs in two passes, using the ampersand and the apostrophe. In most cases, only the apostrophe is necessary. In a few cases-such as the DCL PIPE command-you will may need to use the ampersand to get the substitution to work. The following example uses ampersand substitution to transfer the contents of the header into a logical name: $ PIPE CC/VERSION | (READ SYS$PIPE hdr ; DEFINE/JOB/NOLOG hdr &hdr ) A logical name (in the job logical name table; shared by all processes in the current job) was used as DCL symbols cannot be returned back out from a DCL PIPE or other spawned subprocess. For related materials, please see Section 8.1 and Section 8.11. __________________________________________________________ 8.11 How can I substitute symbols in a PIPE? Use DCL ampersand substitution, and not apostrophe substitution. $ pipe show system | search sys$input opcom | (read sys$input pid ; pid=f$element(0," ",pid) ; define/system opcom_pid &pid) $ show log opcom_pid "OPCOM_PID" = "0000020B" (LNM$SYSTEM_TABLE) __________________________________________________________ 8.12 Use of RUN/DETACH, LOGINOUT, and logical names? With a command to create a detached process such as: $ RUN/DETACHED SYS$SYSTEM:LOGINOUT /INPUT=TEMP_INPUT.COM If you are trying to use a logical name as the /INPUT, /OUTPUT or /ERROR on a RUN/DETACH command, then you must translate the logical name specifications to physical references before passing them, or the definitions must reside in a logical name table that is visible to the newly-created process. Also note that LOGINOUT only creates the SYS$LOGIN, SYS$LOGIN_DEVICE, and SYS$SCRATCH logical names if it is processing a login that is based on the contents of a SYSUAF record-without access to the associated SYSUAF record, this information is not available to LOGINOUT. 8-10 DCL Details (If you want to see these particular logical names created, then please specify the /AUTHORIZE qualifier on the RUN/DETACHED command.) If you do not specify LOGINOUT as the image, then there is no easy way to get these logical names. Also, any logical names that are used in the target image file specification must also be in a logical name table accessible (by default) by the newly-created detached process. Shared tables include the group (if the process is in the same UIC group) and the system table. (If the target process is to be in another UIC group, a suitablly privileged user or application can create the necessary logical name(s) directly in the other group logical name table.) When in doubt, create a short DCL command file as input, and use a SHOW LOGICAL and similar commands to examine the context. (And use physical device and directory references on the RUN/DETACH of the LOGINOUT image, when specifying this command file as /INPUT.) Also remember to check both security auditing and system accounting when troubleshooting problems with the RUN/DETACH. Also see Section 8.2. __________________________________________________________ 8.13 How to use escape and control characters in DCL? To write a message and then the bell character, use: $ bell[0,7] = 7 $ write sys$output "Hello''bell'" To write blinking text, use: $ esc[0,7] = 27 $ text = "Blinking Text" $ write sys$output "''esc'[5m''text'''esc'[m" Also see sections Section 11.6, Section 12.1. 8-11 _______________________________________________________ 9 Files __________________________________________________________ 9.1 How can I undelete a file? OpenVMS doesn't have an "undelete" function. However, if you are quick to write-protect the disk or if you can guarantee that no new files get created or existing files extended, your data is still on the disk and it may be possible to retrieve it. The FLORIAN tool available from various websites can potentially recover the file, see question Section 13.1 for pointers. Other alternatives here include the DFU tool, available on the OpenVMS Freeware CD-ROM distribution. If you are setting up a user environment for yourself or for others, it is quite easy to use DCL to intercept the DELETE command, using a symbol: $ DEL*ETE :== @SYS$LOGIN:MYDELETE.COM The DELETE symbol will cause the procedure to be invoked whenever the user enters the DELETE command, and it can copy the file(s) to a "trashcan" subdirectory before issuing a "real" DELETE on the files. Other procedures can retrieve the file(s) from the "trashcan" subdirectory, and can (and should) clean out the "trashcan" as appropriate. (Realize that this DELETE symbol can interfere with DELETE/GLOBAL and other similar DCL commands.) __________________________________________________________ 9.2 Why does SHOW QUOTA give a different answer than DIR/SIZE? DIRECTORY/SIZE doesn't take into account the size of file headers which are charged to your quota. Also, unless you use DIRECTORY/SIZE:ALL, you will see only the "used" size of the file, not the allocated size which is what gets charged against your quota. Also, you may have files in other directories. 9-1 Files $ DIRECTORY/SIZE=ALL/GRAND [username...] Grand total of D1 directories, F1 files, B1/B2 blocks. $ DIRECTORY/SIZZ=ALL/GRAND [-]username.DIR Grand total of 1 directory, 1 file, B3/B4 blocks. $ SHOW QUOTA User [username] has B5 blocks used, B6 available of B7 authorized and permitted overdraft of B8 blocks on disk If the user has no files in other directories and all file-headers are only 1 block, then the following should apply: B5=B2+B4+F1+1 If the diskquota has drifted out of synchronization, then the system-manager can force a quota rebuild-due to various factors, the quota file can potentially drift from the actual use over time, and a periodic rebuild can be performed at appropriate intervals. Also be aware that the DIRECTORY/SIZE command can report larger values than might otherwise be expected when used to evaluate files and/or directories that are alias links-such as the system roots on OpenVMS system disks-as the command reports a total that is cumulative over all of the files and directories examined, without regard for which ones might be alias entries and which are not. (In other words, a DIRECTORY/SIZE of an entire OpenVMS system disk will report a disk useage value larger than the (usually more accurate) value reported by the SHOW DEVICE command. This as a result of the alias entries linking each SYS$SYSDEVICE:[SYSCOMMON]SYS*.DIR directory file and the SYS$SYSDEVICE:[000000]VMS$COMMON.DIR file together.) __________________________________________________________ 9.3 How do I make sure that my data is safely written to disk? If your application must absolutely guarantee that data is available, no matter what, there's really no substitute for RMS Journaling and host- or controller- based shadowing. However, you can achieve a good degree of data integrity by issuing a SYS$FLUSH RMS call at appropriate times (if you're using RMS, that is.) If you're using a high-level language's I/O system, check 9-2 Files that language's documentation to see if you can access the RMS control blocks for the open file. In C you can use fflush followed by fsync. For details on disk bad block handling on MSCP and on SCSI disk devices, please see Ask The Wizard (ATW) topic (6926). o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. __________________________________________________________ 9.4 What are the limits on file specifications and directories? A file specification has an aggregate maximum size of 255 characters (NAM$C_MAXRSS) at present, assuming ODS-2 limits and traditional DCL process parsing settings (SET PROCESS/PARSE_STYLE). The node and device specification may be up to 255 characters each- file name and file types may be up to 39 characters each. File versions are from 1 through 32767, though 0 (latest version), -0 (oldest version) and -n (n'th previous version) can be used in most contexts. A file specification may not have more than 8 directories and subdirectories or-with a rooted directory, two sets of eight are possible-and while it is possible to create subdirectories of greater depth, accessing them under ODS-2 is somewhat problematic in most cases, and thus should be avoided. Under ODS-5 with extended DCL parsing (SET PROCESS/PARSE_STYLE), the filename length limits are up around 4,095 (NAML$C_MAXRSS) characters, and directories can be around 255 levels deep. 9-3 Files Application developers should use OpenVMS-supplied routines for parsing file specifications - this ensures that changes in what is allowable will not tend to break your application. Consider that various parts of the file specification may contain quoted strings with embedded spaces and other punctuation! Some routines of interest are SYS$FILESCAN, SYS$PARSE and LIB$TRIM_ FILESPEC. For further information, see the OpenVMS Guide to File Applications. Performance of larger directory files improves (greatly) with OpenVMS V7.2 and later-operations on directory files of 128 blocks and larger were rather slower on earlier OpenVMS releases due to the smaller size of the directory cache and due to the directory I/O processing logic. For fastest directory deletions, consider a reverse deletion-delete from the last file in the directory to the first. This reversal speeds the deletion operation by avoiding unnecessary directory I/O operations as the files are deleted. Tools such as the Freeware DFU can be used for this purpose, as can various available reverse-DELETE DCL command procedures. Also see Section 5.44. __________________________________________________________ 9.5 What is the largest disk volume size OpenVMS can access? One Terabyte (TB; 2**31 blocks of 2**9 bytes; 0x07FFFFFFF blocks). 255 volumes in a volume set. The largest contiguous allocation possible for any particular file is 0x03FFFFFFF blocks. Prior to the release of V6.0, the OpenVMS file system was limited to disk volumes of 8.38 GB (2**24 blocks, 16777216 blocks) or less. On some systems, there are restrictions in the console program that limit the size of the OpenVMS system disk. Note that data disks are not affected by console program limits. For example, all members of the VAXstation 3100 series are limited to a system disk to 1.073 GB or less due to the console, though larger data disks are possible. This limit due to the SCSI 9-4 Files drivers used by and built into the console ROM to read the OpenVMS bootstrap files, and these same drivers are also used by OpenVMS to write the system crashdump. There are numerous discussions of this VAXstation 3100 in the comp.os.vms newsgroup archives. Please use Google newsgroup search to search the archives for further details, for discussions of the workarounds, and for details of the potential for a simple failed bootstrap and particularly for discussions of the potential for severe system disk corruptions on crashes. Some SCSI disks with capacities larger than 8.58 gigabytes (GB) will require the use of an OpenVMS ECO kit (eg: ALPSCSI04_062 or later; see Section 14.25 for details) for new SCSI device drivers. Failure to use this ECO can cause "rounding errors" on the SCSI disk device capacity-OpenVMS will not use nor display the full capacity of the drive-and "%sysinit-e-error mounting system device status equals 000008C4" (8C4 -> "%SYSTEM-?-FILESTRUCT, unsupported file structure level") errors during bootstrap. (One workaround for the bootstrap when the bitmap is located far into the disk is the use of INIT/INDEX=BEGIN.) The problem here involves the particular extensions and fields used for larger capacity disks within the SCSI specifications and within the various intepretations of same. For ATA (IDE) disk drives: o Versions of SYS$DQDRIVER *BEFORE* X-15 topped out at 8.455 GB. Fixed drivers (equal or greater than "X-15") were shipped in: o OpenVMS Alpha V7.2-1, and later o V7.2 UPDATE V1.0 ECO, and later o V7.1-2 UPDATE V1.0 ECO, and later o V7.1-2 UPDATE V3.0 ECO, and later 9-5 Files o The newer SYS$DQDRIVER driver operates to disks up to 33 GB without (known) problems, and effectively works with rather larger disks (up to circa 137 GB) but is known to report an incorrect number of "cylinders" with disks above 33 GB. See Section 14.4.4.2 for additional ATA SYS$DQDRIVER information. Be aware that a known restriction in certain older versions of the Alpha SRM Console prevents booting most ATA (IDE) drives larger than 8.455 GB, depending on exactly where the various files are located on the volume. Updated SRM consoles for systems with SRM and ATA (IDE) drive support are (will be) available. (OpenVMS Engineering has successfully bootstrapped 20GB ATA (IDE) disks using the appropriate SRM console version.) Note All disk-related listed in this section are stated in units of "disk (base ten) gigabytes" (1 GB = 10^9 bytes) and not in units of "software (base two) gigabytes" (1 GB = 2^30; 1 GB = 1073741824.) bytes. Please see Section 14.25 for details of the nomenclature and of the units. Be aware that larger disks that are using an extension of SCSI-2- disks that are using a mode page field that the SCSI-2 specifications normally reserved for tape devices-to permit a larger disk volume size will require a SCSI driver update for OpenVMS, and this change is part of V7.1-2 and later, and also part of ALPSCSI07_062 and later. (These larger disks disks will typically report a DRVERR, or will see the volume size "rounded down".) SCSI disks larger than 16777216 blocks cira 8.455 GB (base ten); 8GB (base two) require this ECO, or require the use of OpenVMS Alpha V7.1-2 or later. Applications written in C can be limited to file sizes of two gigabytes and less, as a result of the use of longword values within C file operations, and specifically off_t. This restriction is lifted in OpenVMS V7.3-1 and later, and with the application of 9-6 Files the C ECO kits available for specific earlier releases. The use of a longword for off_t restricts applications using native C I/O to file sizes of two gigabytes or less, or these applications must use native RMS or XQP calls for specific operations. Also see Section 14.13, Section 14.25. __________________________________________________________ 9.6 What is the maximum file size, and the RMS record size limit? RMS can store individual files of a size up to the maximum supported volume size. Under OpenVMS V6.0 and later, the volume size and the RMS maximum file size limit is 2**31 * 512 bytes-one terabyte (1 TB). "Use a volume set to provide a large, homogeneous public file space. You must use a volume set to create files that are larger than a single physical disk volume. (The file system attempts to balance the load on the volume sets, for example, by creating new files on the volume that is the least full at the time.)" "You can add volumes to an existing volume set at any time. The maximum number of volumes in a volume set is 255." Further, with a 255 member bound-volume set, the theoretical maximum limit of files is 4,261,478,145 files, less the directories and reserved files. The RMS formats-sequential, relative, and indexed- are limited by the one terabyte maximum volume size. RMS relative files are further limited to a number of records that will fit in 32 bits-4 billion records. Sequential and indexed formats do not have a record limit. Also see Section 2.17.1, Section 14.25. 9-7 Files __________________________________________________________ 9.7 How do I write CD-Recordable or DVD media on OpenVMS? How to create CD-R, CD-RW, DVD-R, DVD+R, DVD-RW, or DVD+RW media on OpenVMS? For information on CD and DVD optical media drives on OpenVMS, please see Section 14.29. For information on the creation of OpenVMS media and of OpenVMS bootable media, a full step-by-step sequence is documented in the OpenVMS Ask The Wizard topic (9820). An abbreviated version of the sequence is included here. Recording (writing) of CD and DVD optical media requires a recording or media mastering application or tool, and both commercial and non-commercial options are available. For OpenVMS V8.3 and later, see the COPY/RECORDABLE_MEDIA command available within OpenVMS itself. Alternatively, please see CDRECORD (both non- DVD and DVD versions are available, and at least one commercial version is available), and also see DVDwrite (commercial) or DVDRECORD (open source). A port of CDRECORD is present in OpenVMS V7.3-1 and later. o Acquire a comparatively recent SCSI-based or ATAPI (IDE) CD-R or DVD-R/RW or DVD+R/RW drive. Older drives can be very problematic, while newer drives are readily available, and are cheap and very fast, and tend to have better compliance with current standards. Use of older drives is not recommended. Related device requirements information is available in Section 14.29. o Get the most recent LDDRIVER available on the Freeware, or activate and use the LD version latent in OpenVMS Alpha V7.3-1 and V7.3-2 by loading the LD command verb (look within SYS$MANAGER:CDRECORD.COM for related details), or use the integrated LD found in OpenVMS V8.2 and later. In particular, you will want to use the current ECO kit for LDDRIVER (as available), or the version of LD distributed with V8.2. The OpenVMS V8.2 version of LDDRIVER was also kitted on Freeware V7.0 as LD071. 9-8 Files If you are not running OpenVMS V8.2, the specified LD071 kit or later, or a current ECO with the update, you will want to upgrade, or you will want to use the DCL command: SET FILE/CACHING_ATTRIBUTES=NO_CACHING on the LD partition file. This is a workaround for an incompatibility found between older LDDRIVER versions and the XFC caching support. As an alternative to LD and LDDRIVER, you can acquire and load the VD64 package from the Freeware. o Use the COPY/RECORDABLE_MEDIA command available within OpenVMS V8.3 and later, or use the version of CDRECORD built in V7.3-1 or later, or obtain and utilize one of the open source or commercial versions of the CDRTOOLS/CDRECORD or DVDRTOOLS/CDRECORD tools, or other similar recording tools. Freeware V6.0 distribution. ( http://www.hp.com/go/openvms/freeware/ ) An OpenVMS port of the cmcd CD audio ripper is also reportedly available. http://www.amb.org/xmcd/ Versions of CDRECORD (non-DVD) are latent in OpenVMS Alpha V7.3-1 and later. Commercial versions of CDDRECORD-with DVD capabilities-are also available for various platforms, and particularly a variant of CDRECORD known as CDRECORD-ProDVD. COPY/RECORDABLE_ MEDIA is built into OpenVMS V8.3 and later. Beware the tool chosen: some versions and configurations of CDRECORD can record DVD media, as can the DVDRECORD package, as can the commercial DVDwrite package. Many versions of CDRECORD cannot record DVD media, including the version of CDRECORD latent within OpenVMS and the version found on Freeware V6.0; these versions cannot record DVD media. o Build the contents of the disk on the LD or VD64 device partition. o Use the chosen recording tool to record the contents of the LD or VD64 partition directly onto the optical medium. 9-9 Files Alternatively, consider the following command on OpenVMS Alpha V7.3-1 and later: @SYS$MANAGER:CDRECORD.COM HELP While folks have had success getting PC-based CD-R/RW or DVD-R/RW or DVD+R/RW tools to work with OpenVMS partitions, it is far easier and more reliable to use the OpenVMS-based versions of these tools and directly- attached devices. If you use a Windows-based tool, you will want to specifically select its raw mode, image mode, or block-copy mode, depending on the terminology within the particular tool. The transfer mode and selections is variously refered to as a disk-at-once (DAO) 2048-byte block ISO Mode 1 raw/image/block data disk recording mode. More details: Creation of CD recordable or DVD recordable media under OpenVMS typically involves one of two approaches: the use of the optional CD-R (`Scribe') capabilities available for the InfoServer or other "offline" hardware packages (PC-based packages will be included in this), or the use of a host-based package such as the CDRECORD or COPY/RECORDABLE_MEDIA (V8.3 and later) or other utilities, including OpenVMS ports of common open-source tools made available by Dr. Eberhard Heuser-Hofmann and various others. Commercial packages and options are also available. Dr. Heuser- Hofmann has DVDwrite , a commercial package which can record DVD media. ( http://home.tiscali.de/dvd4openvms ) OpenVMS can read ODS-2, ODS-5, and ISO-9660 format CD- ROMs and DVD-ROMs directly. (If you are very careful, you can create a dual-format CD-R; a CD-R with both ODS-2 and ISO-9660 or both ODS-5 and ISO-9660 or both.) OpenVMS does not support ISO-9660:1999, nor the Joliet or Rock Ridge extensions to ISO-9660, nor can OpenVMS decrypt copy-protected video DVDs. InfoServer hardware configurations are no longer available from HP, but may potentially be acquired through other means; as used equipment. InfoServer support also has very specific CD-R recording device 9-10 Files prerequisites, and these recording devices are no longer generally available. Packages related to the use of DVD archiving are also available, see the multi-volume capabilities of the DVDarchive/restore Freeware. http://www.geocities.com/SiliconValley/Lakes/9999/vmscdwri.html Additional information is available at the following sites: o http://www.djesys.com/vms/cdrom.html o http://www.cd-info.com/CDIC/Technology/CD-R/vms.html o http://www.faqs.org/faqs/cdrom/cd- recordable/part1/preamble.html o http://www.tmesis.com/CDrom/ o http://www.tditx.com/~odsiso/ U.S. Design offers a package that includes the tools necessary to create a CD or DVD-R with either ISO-9660 or ODS-2 format, for standalone CD-R/RW, DVD-R, or DVD+R/RW drives, for recent OpenVMS versions. Details are available at: o http://www.usdesign.com/ Also see Section 9.7.2 for details on access to recorded media on older CD-ROM drives. _____________________________ 9.7.1 CD and DVD notation, terminology? CD-ROM is pre-recorded Compact Disk media, and is the original and oldest CD format. The original CD media was physically stamped, a recording process that is now largely reserved to the highest-volume media reproduction requirements. CD-R is CD Recordable, a write-once storage medium that can be read by all but the oldest of CD drives; a format which can be read and often even recorded by most CD-RW drives. 9-11 Files CD-RW is CD ReWritable, a format which is readable by many CD drives and by most CD-R drives, and with media that can be recorded and re-recorded by CD-RW drives. CD media recording speeds are listed as multiples of 150 kilobytes per second, so a 10X drive records at 1500 kilobytes (1.5 megabytes) per second. 600 MB (70 minutes) and 700 MB (80 minutes) recording capacities are both widely available. The minutes designation is derived from the traditional audio-format recording capacity of the particular media. DVD-R/RW is the older of two common Digital Versatile Disk recording formats, and the DVD-R Recordable or DVD-RW ReWritable media can be read by many DVD drives. As with CD-R formats in older CD drives, older DVD and particularly first-generation DVD players may have problems reading this media format. DVD+R/RW is the newer of the two common Digital Versatile Disk recording formats, and the DVD+R Recordable or DVD+RW ReWritable media can be read by many DVD drives. Akin to DVD-R/RW media, older and particularly first-generation DVD drives can have problems reading this media format. The DVD Plus-series drives and media tend to record faster than Minus drives, as (as of this writing) the Plus (+) drives do not require an initial media formatting pass and the Minus (-) drives do. While the appropriate Plus (+) or Minus (-) DVD raw media must be chosen for the particular DVD recorder (and DVD recording drives that are compatible with and capable of using both Plus and Minus media are available), the resulting recorded media is generally readable (playable) in all recent DVD drives and DVD players, regardless of type. (Compatibility is best within the same media-series devices of course, but be certain to verify compatibility across devices regardless of the particular device or particular recording media chosen.) 9-12 Files Presently Plus (+) media is slightly more expensive than Minus (-), but with the prices of all CD and all DVD media continuing to consistently fall, the differences in DVD media costs are becoming irrelevent for all but the production of huge volumes of DVD media. The rated DVD recording speeds are in multiples of 1353 kilobytes per second, thus a DVD 1X drive is roughly equivalent to a CD 9X drive in I/O requirements and transfer speed. DVD drive recording speed can and does vary. DVD disk drive recording speed is limited by the rated recording speed of the media used, so the slower (and cheaper) DVD media will not record any more quickly in a faster drive. A 2.4X DVD drive loaded with 1X media will record at 1X. _____________________________ 9.7.2 Use of RRD42 and other older (embossed-media) CD drives? The RRD42 series SCSI CD-ROM drive is sufficiently old that it can have problems processing CD-R and CD-RW media. Other very old CD drives can have equivalent media compatibility problems when attempting to read (much) newer CD media and newer CD media technologies. These older CD drives are generally intended for use with the so-called embossed media, rather than with non-embossed recorded (recordable) media now in common circulation. Please consider using a slightly-less-ancient CD-ROM or CD-R or CD-RW drive when working with non-embossed recorded CD media. To paraphrase one knowledgable-though deliberately nameless-storage engineer, "The RRD42 drive is just past the drooling idiot stage". 9-13 Files _____________________________ 9.7.3 Creating Bootable OpenVMS I64 CD or DVD Media? SYS$SETBOOT? If you are creating a bootable CD or DVD media for use with OpenVMS I64, you will want to specify the SYS$SETBOOT block size of 2048, and you will also want a disk cluster factor that is a multiple of four via INITIALIZE/CLUSTER=4 (or 8, or...), or you will want to ensure that SYS$EFI.SYS and SYS$DIAGNOSTICS.SYS are aligned to a multiple of four blocks; to a 2048 byte boundary. This alignment and this blocking is only necessary for OpenVMS I64, and only when creating optical media OpenVMS I64 for bootstraps. The default 512-byte block setting used by SYS$SETBOOT is the correct and expected value for traditional disk bootstraps on OpenVMS I64 systems. Once the boot files are loaded, OpenVMS I64 operates with 512-byte blocks; as is the case with ATAPI disks on OpenVMS Alpha, all application code will only see 512-byte blocks on optical media on OpenVMS I64. OpenVMS I64 V8.2 and later are expected to have a version of SYS$SETBOOT that will flag a misaligned SYS$EFI.SYS and (if present) a misaligned SYS$DIAGNOSTICS.SYS file. For information on SYS$SETBOOT and the SET BOOTBLOCK command, please see Section 14.3.9 and see the OpenVMS documentation. The purpose and intent of the SYS$SETBOOT.EXE image and the SET BOOTBLOCK command is analogous to the WRITEBOOT.EXE image on existing OpenVMS VAX and OpenVMS Alpha systems. For information on CD and DVD optical media drives on OpenVMS, please see Section 14.29. For additional related information on creating bootable OpenVMS media, please see Ask The Wizard topic (9820). 9-14 Files __________________________________________________________ 9.8 What I/O transfer size limits exist in OpenVMS? The maximum transfer size is an attribute of the particular I/O device, controller and driver combination; there is no inherent limit imposed by OpenVMS (other than the fact that, today, byte counts and LBNs are generally limited to 32 bits). The maximum size of a device I/O request is limited by the value in UCB$L_MAXBCNT, which is set by the device driver based on various factors. (Also check the setting of the MAXBUF system parameter for buffered I/O transfers, and check the process quotas.) Currently, SCSI drivers limit I/O transfers to FE00(16) bytes, 65024 bytes (decimal). The reasons for this transfer size limitation are largely historical. Similarly, DSSI devices are limited to the same value, this for hardware-specific reasons. Transfers to HSC and HSJ device controllers via the CI are limited to 1,048,576 bytes. Client MSCP-served devices are limited to 65535 bytes-to help ensure that the I/O fragmentation processing happens on the client and not on the server system. Parts of the OpenVMS I/O subsystem are optimized for data transfers less than 64KB, because (obviously) most I/O operations are (substantially) less than that. OpenVMS can handle larger transfers, if the driver and the device can handle it. Also see Section 9.4, Section 9.5. __________________________________________________________ 9.9 Can I use ODBC to connect to OpenVMS database files? Yes, you can use various available third-party packages that permit remote ODBC clients to access RMS files and various commercial databases via the network. For RMS, consider acquiring one of the packages available from EasySoft, Attunity Connect (formerly known as ISG Navigator), Oracle (DB Integrator), SolutionsIQ, OpenLink Software (OpenLink Universal Data Access), and Synergex. 9-15 Files The unixODBC package available at http://www.unixodbc.org has variously been found to operate on OpenVMS, as well. For specific commercial databases (other than RMS, of course), contact the database vendor directly for assistance. __________________________________________________________ 9.10 If my disks are shown as VIOC Compatible, am I using XFC? Yes, you are using XFC caching. Disks that are using XFC caching use communication and coordination protocols that are compatible with the older VIOC caching implementation. With the initial implementation of XFC on OpenVMS, you can use the command SHOW MEMORY/CACHE to see no disks reported in full XFC mode; all disks shown will be listed in "VIOC Compatable Mode". If you have the OpenVMS system parameter VCC_FLAGS set to 2 and are using OpenVMS Alpha V7.3-1 or later, or are using OpenVMS Alpha V7.3 with the VMS73_XFC V2.0 ECO kit or later or with the UPDATE kits, you are using XFC. Another confusion: the XFC product version is and remains V1.0 in all released configurations, please do not confuse the internal XFC product version (displayed by various commands) with the version number associated with the various ECO kit(s). XFC V1.0 does not permit volumes to enter full XFC caching, as displayed by the "Vols in Full XFC mode" portion of the DCL command SHOW MEMORY/CACHE output. __________________________________________________________ 9.11 RMS Sequential Files and Platform Portability? When working with mixed platforms, you will want to become familiar with the various RMS sequential record formats, including Variable with Fixed Control (VFC), stream, stream LF, and stream CR, among other record formats. 9-16 Files Switching formats uses CONVERT/FDL or SET FILE/ATTRIBUTES. The former converts files, the latter resets attributes. Text editors tend to select attributes when creating new files that may or may not meet requirements. If the default attributes do not match your requirements, create a stub file, SET FILE/ATTR, then edit the existing file. (Most editors will preserve attributes on an existing file.) When working with Windows, stream is usually the best choice for sequential file operations. Stream LF is most commonly used with UNIX and C applications. Windows and UNIX tend not to be able to directly read files of "unexpected" sequential RMS record formats. VFC is a common OpenVMS format, encoding the record length into the record. It is this extra data that can cause corruption-like problems when viewed without RMS; either directly via $qio or via the file system API on other operating system platforms. You will want to look at the low-level record formats, and at the RMS and the Files and Applications documentation in the OpenVMS manuals. If transfering through other platforms, use of a current version of Zip (with the "-Vv" or "-V" option) and unzip, or use of a BACKUP saveset will contain and maintain the RMS file and record attributes. (For BACKUP and its own attributes requirements, see the restoration tool.) __________________________________________________________ 9.12 How to read locked files? Files can be locked by applications, and various approaches including CONVERT/SHARE and DUMP/ALLOCATED can be used, as can the following command sequence: $ open/read/share=write x lockedfile.txt $ type x If you can rebuild the application from source, details related to file sharing are in Section 10.17. 9-17 _______________________________________________________ 10 OpenVMS Programming Information __________________________________________________________ 10.1 Modular Programming, Facility Prefixes and Symbol Naming? Please first review the OpenVMS Programming Concepts Manual and the Guide to Modular Programming manuals. Both are available within the OpenVMS documentation set, and provide details of the expected norms for OpenVMS programs. o Learn about the facility prefix, and use a the appropriate prefix uniformly throughout all external symbols, all logical names, and all files located in shared directories. The prefix and the use of the dollar sign (<$>) and the underscore (<_>) help avoid collisions with other products. Use of the dollar sign is reserved to registered products. o Please consider use of tools such as the Freeware SDL package, and the GNM package. These permit you to generate include files and message documentation akin to that of OpenVMS, providing users of your product with a familiar environment. o For product installations, consider use of the PCSI installation utility, and provide a product-specific configuration DCL command procedure (usually SYS$MANAGER:prefix$CONFIG.COM) if configuration is required. o The product startup file is usually named SYS$STARTUP:prefix$STARTUP.COM, and the shutdown file (if needed) is usually SYS$STARTUP:prefix$SHUTDOWN.COM. OpenVMS provides a registry for facility prefixes and for MESSAGE message compiler codes. To request a prefix and a message facility code for a product you distributinng to other customer sites, send your 10-1 OpenVMS Programming Information request in a mail message addressed to product[-at- sign-]hylndr.sqp.zko.dec.com, requesting the submission form and details of the registration process. Note Please do not request facility prefixes for products that local to your business, your site, or your system. Facility prefixes and message codes and the facility registration process are intended solely for HP products and Partner Products (and yes, even OpenVMS Freeware packages) that will be distributed across multiple OpenVMS customer sites. For a list of common coding bugs, please see the remainder of this section of the FAQ and specifically Section 10.22, please also see the Ask The Wizard topic (1661), and for information on debugging an OpenVMS application, please see topic (7552). o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. __________________________________________________________ 10.2 Can I have a source code example of calling...? Please use the available SEARCH command on OpenVMS, and please remember to search the available resources, including the support databases and the newsgroup archives. Please also realize that most OpenVMS system services use similar calling sequences, meaning that an example of calling sys$getjpi can be used as an example for sys$getsyi and sys$getdvi. Students: please do not expect folks to write your homework for you. As for search resources: o SEARCH SYS$EXAMPLES:*.* target o SEARCH TCPIP$EXAMPLES:*.* target 10-2 OpenVMS Programming Information o http://www.hp.com/go/openvms/freeware/ o http://www.google.com/ OpenVMS programming documentation, including the numerous example programs found in recent versions of the OpenVMS Programming Concepts manual, is available: o http://www.hp.com/go/openvms/doc/ As for details of argument passing, most OpenVMS system services and RTL routines pass string arguments by descriptor. Languages which support native string data types create descriptors automatically; those which do not (eg., C) require that you set them up explicitly. For further details on using descriptors and particularly for using descriptors from C, please see Section 10.13. There is extensive information available on how to call OpenVMS system services and OpenVMS Run-Time Library routines, including examples in numerous languages. Among the best available references are: o Your language's User Manual o OpenVMS Programming Environment Manual o OpenVMS Programming Concepts Manual o OpenVMS Programming Interfaces: Calling a System Routine o OpenVMS Calling Standard In addition, you can also locate answers, source code examples and related discussions in the James Search Assistant (formerly NLSA (Natural Language Search Assistant), itself formerly known as Ask Compaq (AskQ)) database: o http://www2.itrc.hp.com/service/james/CPQhome.do In this area, you will find the source code of programming examples for calls to many of the OpenVMS system services (and from various programming languages), including calls to core services sys$getjpi[w], sys$getsyi[w] and sys$qio[w], as well 10-3 OpenVMS Programming Information as source code examples for calls to many other system services and run-time library routines, and examples of one of the more difficult calling interfaces found on OpenVMS systems, that of the smg$create_menu routine. Arne Vajhøj has put together a collection of OpenVMS example programs. It can be found at: o ftp://ftp.hhs.dk/pub/vms/ Additional information and examples for OpenVMS are available via: o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. and via: o http://www.hp.com/go/openvms/freeware/ __________________________________________________________ 10.3 How do I get the arguments from the command line? If you're writing a program and want to accept arguments from a foreign command, you can use LIB$GET_ FOREIGN to get the command line and parse it yourself, or if you're programming in C, use the normal argc/argv method. To write an application which uses the normal DCL verb/qualifier/parameter syntax for invocation, see the description of the CLI$ routines in the OpenVMS Callable Utility Routines Reference Manual. It is possible to write an application which can be used both ways; if a DCL verb isn't used to invoke the image, the application parses the command line itself. One way to do this is to call CLI$GET_VALUE for a required parameter. If it is not present (or you get an error), call LIB$GET_FOREIGN to get the command line and do the manual parse. 10-4 OpenVMS Programming Information See also Section 8.2. __________________________________________________________ 10.4 How do I get a formatted error message in a variable? Use the SYS$PUTMSG system service with an action routine that stores the message line(s) in the variable of your choice. Be sure the action routine returns a "false" (low bit clear) function value so that SYS$PUTMSG doesn't then try to display the message (unless you want it to.) See the description of $PUTMSG in the System Services Reference Manual for an example of using an action routine. __________________________________________________________ 10.5 How do I link against SYS$SYSTEM:SYS.STB on an Alpha system? LINK/SYSEXE is the OpenVMS Alpha equivalent of linking against SYS.STB. This links against the base image: SYS$BASE_IMAGE.EXE Also see Section 10.11, particularly for pointers to the details on shareable images and shareable image creation, and see Section 10.22 for details of inner- mode floating point requirements, of data alignment, requirements for use of /NOSYSLIB, and other related inner-mode programming details, and see Section 10.11 for image-related information. __________________________________________________________ 10.6 How do I do a SET DEFAULT from inside a program? The problem is that SYS$SETDDIR only changes the default directory - NOT the default disk. The default disk is determined by the logical SYS$DISK. If you want to change the default disk within a program, then call LIB$SET_LOGICAL to change the logical SYS$DISK. You will need to call both LIB$SET_LOGICAL and SYS$SETDDIR to change both default disk and the default directory! 10-5 OpenVMS Programming Information __________________________________________________________ 10.7 How do I turn my Fortran COMMON into a shareable image on Alpha? You need to add SYMBOL_VECTOR=(=PSECT) to your options file. On OpenVMS VAX all OVR/REL/GBL psects were automatically exported into the shareable image's Global Symbol Table. On OpenVMS Alpha you have to tell the linker that you want this done by means of the PSECT keyword in the SYMBOL_VECTOR options file statement. This has several advantages over OpenVMS VAX. First, you don't have to worry about the address of the psect when you try to create a new, upwardly compatible version of the shareable image. Second, you can control which psects, if any, are made visible outside the shareable image. By default, COMMON PSECTs in HP Fortran for OpenVMS Alpha (as well as most other OpenVMS Alpha compilers) are NOSHR. On VAX, the default was SHR which required you to change the attribute to NOSHR if you wanted your COMMON to be in a shareable image but not write- shared by all processes on the system. If you do want write-sharing, use: CDEC$ PSECT common-name=SHR in the Fortran source code (the CDEC$ must be begin in column 1) or a linker options file PSECT_ATTR statement to set the COMMON PSECT attribute to SHR. For further information, see the Linker manual. __________________________________________________________ 10.8 How do I convert between IEEE and VAX floating data? In OpenVMS V6.1 and later, the routine CVT$CONVERT_ FLOAT is documented in the LIB$ Run-Time Library Reference Manual, and can perform floating point conversions between any two of the following floating datatypes: VAX (F,D,G,H), little-endian IEEE (single, double, quad), big-endian IEEE (single, double, quad), CRAY and IBM System\370, etc. 10-6 OpenVMS Programming Information HP Fortran (all OpenVMS platforms) has a feature which will perform automatic conversion of unformatted data during input or output. See the HP Fortran documentation for information on "non-native data in I/O" and the CONVERT= OPEN statement keyword. There are floating-point conversion source code packages available for various platforms. For further floating-point related information, see: o http://www.hhs.dk/anonymous/pub/vms/collection/ieee.zip __________________________________________________________ 10.9 How do I get the argument count in a Fortran routine? On VAX, many programmers would use a MACRO routine which accessed the AP register of the caller to get the address of the argument list and hence the argument count. This was not guaranteed to work on VAX, but usually did. However, it doesn't work at all on OpenVMS Alpha, as there is no AP register. On Alpha systems, you must use a language's built-in function to retrieve the argument count, if any. In Fortran this is IARGCOUNT, which is also available in DEC Fortran on OpenVMS VAX. Note that omitting arguments to Fortran routines is non-standard and is unsupported. It will work in many cases - read the DEC Fortran release notes for additional information. __________________________________________________________ 10.10 How do I get a unique system ID for licensing purposes? Many software developers desire to use a unique hardware ID to "lock" a given copy of their product to a specific system. Most VAX and Alpha systems do not have a unique hardware-set "system ID" that can be used for this purpose. HP OpenVMS products do not use hardware IDs in the licensing methods, as many users consider a hardware-based licensing scheme to be negative attribute when considering software purchases. 10-7 OpenVMS Programming Information HP OpenVMS uses a software-based system called the License Management Facility (LMF). This provides for software keys (Product Authorization Keys or PAKS) which support capacity and user-based license checking. HP offers an LMF PAK Generator to DSPP (formerly CSA) members-see Section 2.8.3 for general details on the DSPP offerings, and on the DSPP-provided Freeware PAKGEN PAK that is available for those that are interested in details. (Sorry, no; you can't use the Freeware PAKGEN PAK to generate any PAK you might want. Folks at HP also thought of that one, too.) For information on licensing, please see Section 12.4. However, if a hardware-based method is required, the most common method is based on an Ethernet adaptor hardware address. Sample source code for implementing this is available at: o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. __________________________________________________________ 10.11 What is an executable, shareable, system or UWSS image? Executable code in OpenVMS typically resides in an image-an image is a file-the file extension is typically .EXE-that contains this code. Common types of images include executable images, shareable images, system images, and protected (UWSS) images. Executable images are programs that can be directly executed. These images can grant enhanced privileges, with an INSTALL of the image with /PRIVILEGE, or can grant enhanced access with the specification of a subsystem identifier on the ACL associated with the image. 10-8 OpenVMS Programming Information Shareable images contain code executed indirectly, these images are referenced from executable images and/or from other shareable images. These images can not grant enhanced privileges, even with the use of INSTALL with /PRIVILEGE or a subsystem identifier. These shareable images can be dynamically activated (a LINK that occurs at run-time) via the LIB$FIND_ IMAGE_SYMBOL run-time library (RTL) routine. (See `protected images' for information on `privileged shareable images'.) System images are intended to run directly on the VAX or Alpha hardware-these are normally used for the kernel code that comprises an operating system. Protected images-also refered to as User-Written System Services (UWSS), or as privileged shareable images-are similiar in some ways to a standard shareable images, but these images include a `change mode' handler, and execute in an `inner' processor mode (privileged mode; executive or kernel), and code executing in inner modes has implicit SETPRV privilege. Must be INSTALLed with /PROTECT. Note that inner-mode code has restrictions around calling library routines, around calling various system services, and around calling code located in other protected or shareable images. Loadable images and device drivers are images that can be used to add code into the OpenVMS kernel. Pseudo- device drivers are a particularly convenient way to add executable code, with associated driver-defined data structures, into the kernel. The pseudo-device driver includes the UCB and DDB data structures, and a calling interface with support for both privileged and unprivileged access to the driver code via sys$qio[w] calls. A cookbook approach to creating OpenVMS shareable images is available at the URL: o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) 10-9 OpenVMS Programming Information For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. __________________________________________________________ 10.12 How do I do a file copy from a program? There are several options available for copying files from within a program. Obvious choices include using lib$spawn(), system(), sys$sndjbc() or sys$creprc() to invoke a DCL COPY command. Other common alternatives include using the callable convert routines and the BACKUP application programming interface (V7.1 and later). __________________________________________________________ 10.13 What is a descriptor? A descriptor is a data structure that describes a string or an array. Each descriptor contains information that describes the type of the data being referenced, the size of the data, and the address of the data. It also includes a description of the storage used for the data, typically static or dynamic. Descriptors are passed by reference. The following are examples of creating and using descriptors in C, with the use of the angle brackets normally expected by the C include statements deliberately altered in deference to HTML: #include {descrip.h} #include {lib$routines.h} #include {stsdef.h} int RetStat; char TxtBuf[TXTSIZ] struct dsc$descriptor StaticDsc = { 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL }; struct dsc$descriptor DynDsc = { 0, DSC$K_DTYPE_T, DSC$K_CLASS_D, NULL }; int DynDscLen = 255; $DESCRIPTOR( ConstDsc, "This is a string" ); 10-10 OpenVMS Programming Information /* finish setting up a static descriptor */ StaticDsc.dsc$w_length = TXTSIZ; StaticDsc.dsc$a_pointer = (void *) TxtBuf; /* finish setting up a dynamic descriptor */ RetStat = lib$sget1_dd( &DynDscLen, &DynDsc ); if ( !$VMS_STATUS_SUCCESS( RetStat ) ) return RetStat; /* release the dynamic storage */ RetStat = lib$sfree1_dd( &DynDsc ); if (!$VMS_STATUS_SUCCESS( RetStat )) return RetStat; Static descriptors reference storage entirely under application program control, and the contents of the descriptor data structure can be modified as required (by the application). OpenVMS routines do not modify the contents of a static descriptor, nor do they alter the address or length values stored in the static descriptor. (The term "static" refers to the descriptor data structure, and not necessarily to the storage referenced by the descriptor.) Dynamic descriptors reference storage under the control of the run-time library, and the contents of a dynamic descriptor data structure-once initialized- can only be modified under control of run-time library routines. The dynamic storage referenced by the dynamic descriptor is allocated and maintained by the run-time library routines. Various OpenVMS routines do alter the contents of the descriptor data structure, changing the value for the amount and the address of the storage associated with the dynamic descriptor, as required. Routines can obviously access and alter the contents of the storage referenced by the descriptor. OpenVMS languages that include support for strings or arrays are expected to use descriptors for the particular structure. Most OpenVMS languages, such as Fortran and BASIC, use descriptors entirely transparently. Some, like DEC C, require the programmer to explicitly create and maintain the descriptor. 10-11 OpenVMS Programming Information For further information on string descriptors, see the OpenVMS Programming Concepts manual, part of the OpenVMS documentation set. Fortran defaults to passing integers by reference and characters by descriptor. The following sites discuss mixing Fortran and C source code in the same application: o http://www.hhs.dk/anonymous/pub/vms/misc/FORTRAN_C_ CALL.COM o ftp://ftp.hhs.dk/pub/vms/misc/FORTRAN_C_CALL.COM __________________________________________________________ 10.14 How do I create a process under another username? Many server processes can operate within the context of the target user using privileges, using calls such as sys$chkpro and (more commonly in this context) sys$check_access as needed to determine if access would be permitted for the specified user within the current security model. With OpenVMS V6.2 and later, the persona system services (SYS$PERSONA_*) can be used to assume the persona of the specified user-these allow the server to operate as the specified user, in a controlled fashion. The persona services can be used as a "wrapper" around a sys$creprc process creation call, as well-this will create a seperate process entirely under the assumed persona. Information on the persona system services is included in the OpenVMS V6.2 new features documentation, and in the OpenVMS V7.1 and later system services documentation. These system services exist and are supported in OpenVMS V6.2 and later releases. Typical mechanisms for creating a process under another username include: o personna services around a sys$creprc call. See above. 10-12 OpenVMS Programming Information o via DECnet task-to-task, using explicit specification of username and password, or using a DECnet proxy. This creates a network-mode job under the target user. The network-mode job might do little more than a RUN/DETACH of an image passed in via task-to-task-task-to-task communications are fully available using strictly DCL-to-DCL processing, or using a compiled language and DCL, etc.) o SUBMIT/USER, or the username argument on the sys$sndjbc call. This creates a batch-mode job under the specified username. The batch-mode job might do little more than a RUN/DETACH of an image passed in via a parameter. o the UIC argument on the sys$creprc call. This mimics the UIC of the target user, and is certainly not the prefered mechanism for this task. o Via pseudo-terminals... There are likely a few other mechanisms around... There are various tools available from DECUS and other sources that allow various forms of user impersonation, as well. These tools will require version-dependent kernel code and enhanced privileges for some of (or all of) their operations. __________________________________________________________ 10.15 Why do lib$spawn, lib$set_symbol fail in detached processes? The processing within run-time library (RTL) calls such as lib$attach, lib$disable_ctrl, lib$do_command, lib$enable_ctrl, lib$get_symbol, lib$run_program, lib$set_symbol, lib$set_logical, and lib$spawn, is dependent on and requires the presence of a command language interpreter (CLI), such as DCL. Without a CLI present in the current process, these calls will fail with a "NOCLI, no CLI present to perform function" error. Detached processes typically do not have a CLI present. 10-13 OpenVMS Programming Information In place of lib$spawn, sys$creprc can often be used. The context of the parent process (symbols and logical names) will not be propogated into the subprocess when sys$creprc is used, though when there is no CLI present in the process this (lack of) propogation is moot. To create a detached process with a CLI, you must specify LOGINOUT as the target image as discussed elsewhere in the FAQ, or only use these calls (and any other calls requiring a CLI) from images that are running in an "interactive", "batch", or "other" mode process. Also note that the lib$spawn and the C system call will fail in a CAPTIVE login environment. The lib$spawn call can be gotten to work in this environment with the specification of the TRUSTED flag. __________________________________________________________ 10.16 Where can I obtain Bliss, and the libraries and supporting files? The Bliss language compilers and documentation are available on the OpenVMS Freeware distributions. Bliss language source code that contains the following statement: LIBRARY 'SYS$LIBRARY:STARLET.L32'; or similar requires the presence of the Bliss libraries. These libraries are created on the target system using the Bliss require files, and are built using the following Bliss commands: STARLET.L32 contains the public interfaces to OpenVMS: $ BLISS /LIBRARY=SYS$COMMON:[SYSLIB]STARLET.L32 - SYS$LIBRARY:STARLET.REQ LIB.L32 contains both the public and private interfaces to OpenVMS: $ BLISS /LIBRARY=SYS$COMMON:[SYSLIB]LIB.L32 - SYS$LIBRARY:LIB.REQ+SYS$LIBRARY:STARLET.REQ 10-14 OpenVMS Programming Information The equivilent files for Bliss64 are created with: $ BLISS/A64/LIBRARY=SYS$COMMON:[SYSLIB]LIB.L64 - SYS$LIBRARY:LIB.R64+STARLET.REQ+STARLET.R64 $ BLISS/A64/LIBRARY=SYS$COMMON:[SYSLIB]STARLET.L64 - SYS$LIBRARY:STARLET.R64 Some Bliss code may also require the OpenVMS VAX architecture flags. The following is the equivilent of the Alpha ARCH_DEFS.REQ module: ! ! This is the OpenVMS VAX version of ARCH_DEFS.REQ, and ! contains the architectural definitions for conditionally ! compiling OpenVMS Bliss sources for use on VAX systems. ! (If you should encounter compilation errors here, please ! seriously consider upgrading your Bliss compiler.) ! MACRO VAXPAGE = 1%; MACRO BIGPAGE = 0%; ! MACRO VAX = ! = 1 if compiled BLISS/VAX %BLISS(BLISS32V)%; ! = 0 if not compiled BLISS/VAX MACRO EVAX = ! = 1 if compiled BLISS/E* (Obsolete, old name) (%BLISS(BLISS32E) OR %BLISS(BLISS64E))%; ! = 0 if compiled /VAX /Inn MACRO ALPHA = ! = 1 if compiled BLISS/E* (New arch name) (%BLISS(BLISS32E) OR %BLISS(BLISS64E))%; ! = 0 if compiled /VAX /Inn MACRO IA64 = ! = 1 if compiled BLISS/I* (New arch name) (%BLISS(BLISS32I) OR %BLISS(BLISS64I))%; ! = 0 if compiled /VAX or /Ann MACRO ADDRESSBITS = %BPADDR%; ! = 32 or 64 based on compiler used Some Bliss code may require the definition files for the OpenVMS older LIBRTL routine lib$tparse, or the newer lib$table_parse call: $ BLISS /LIBRARY=SYS$COMMON:[SYSLIB]TPAMAC.L32 - SYS$LIBRARY:TPAMAC.REQ 10-15 OpenVMS Programming Information __________________________________________________________ 10.17 How can I open a file for shared access? When creating a file, it is often useful to allow other applications and utilities-such as TYPE-to share read access to the file. This permits you to examine the contents of a log file, for instance. A C source example that demonstrates how to do this is available in topic (2867) in the OpenVMS Ask The Wizard area: o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. Depending on the environment, you may need to use C calls such as fsync and fflush, and-in specific cases- the setvbuf(_IONBF) call. For related materials around commands that can potentially be used to override file locking-to view the file contents as currently written to disk-see Section 9.12. __________________________________________________________ 10.18 How can I have common sources for messages, constants? Use the GNM tools on the OpenVMS Freeware to have common sources for MSG (message) files and SDML (Document) documentation files. Use the DOCUMENT command to convert the SDML documentation into the necessary formats (Text, Postscript, HTML, etc). Use the MESSAGE/SDL tool (latent in OpenVMS) to create an SDL file based on the messages. Then use the SDL tool (available on the OpenVMS Freeware) to convert the SDL file into language-specific definitions. (There is also a converter around to convert SDL into SDML, if you want to get pictures of the data structures for your documentation.) 10-16 OpenVMS Programming Information __________________________________________________________ 10.19 How do I activate the OpenVMS Debugger from an application? #include {lib$routines.h} #include {ssdef.h} #include {string.h} main() { char ascic_debug_commands[128]; char *dbgcmd = "*show calls;go;exit"; strcpy( ascic_debug_commands, dbgcmd ); ascic_debug_commands[0] = (char) strlen( dbgcmd ) - 1; lib$signal(SS$_DEBUG,1,ascic_debug_commands); return 1; } Also see Section 10.28 for another related discussion of the OpenVMS Debugger, and of a technique that uses the SS$_DEBUG signal. __________________________________________________________ 10.20 Dealing with Endian-ness? OpenVMS VAX, OpenVMS Alpha and OpenVMS I64 (as well as all Microsoft Windows implementations) all support and all use the little-endian byte ordering. Certain Alpha microprocessors and certain Intel Itanium processors can be configured to operate in big-endian and potentially in bi-endian mode. HP-UX typically operates big-endian. With little-endian byte order, the least significant byte is always the first byte; the byte at the lowest address. With big-endian byte ordering, the byte storage order in memory is dependent on the size of the data (byte, word, longword) that is being referenced. Endian-ness is a problem has been solved many times before. Some of the typical solutions include htonl/htons and ntohl/ntohs in the standard C library and the TCP/IP Services XDR (eXternal Data Representation) libraries. One of the more recently 10-17 OpenVMS Programming Information introduced network formats, and one that is seeing extensive press and marketing coverage, is XML. __________________________________________________________ 10.21 How to resolve LINK-I-DATMISCH errors? The message LINK-I-DATMISCH is informational, and indicates that the version of the specified shareable image found in the system shareable image directory does not match the version of the shareable image that was originally loaded into IMAGELIB.OLB, one of the OpenVMS libraries typically searched by the LINKER. From a privileged username, you can usually completely repair this via the following DCL command: $ LIB/REPLACE/SHARE SYS$LIBRARY:IMAGELIB.OLB SYS$SHARE:LIBRTL.EXE This command assumes that the shareable image that was found in the SYS$SHARE: area is valid and upward- compatiable, and that the image has simply replaced an older version without also updating IMAGELIB. __________________________________________________________ 10.22 HP C and other OpenVMS C Programming Considerations? VAX C V3.2 was released for OpenVMS VAX systems in 1991. DEC C V4.0 replaced VAX C V3.2 in 1993 as the HP C compiler for OpenVMS VAX systems. HP C is the ANSI C compiler for OpenVMS Alpha systems. VAX C predates the ANSI C standards, and has various areas that are not compliant with ANSI C requirements. HP C is an ANSI C compiler, and can also compile most VAX C code when /STANDARD=VAXC is specified. Versions of this compiler between V3.2 and V6.5 (exclusive) were known as DEC C, DIGITAL C, and Compaq C. Both compilers can be installed at the same time on the same OpenVMS VAX system, allowing a migration from VAX C to DEC C, and allowing the same DEC C code to be used on OpenVMS VAX and OpenVMS Alpha. The system manager can choose the system default C compiler when HP C is installed on a system with VAX C, and a C programmer can explicitly select the required compiler for a any particular compilation. 10-18 OpenVMS Programming Information A current "C" license PAK allows access to both VAX C and HP C on the same OpenVMS VAX system. Various HP C versions can be installed on OpenVMS VAX V5.5-2 and later. OpenVMS VAX releases such as V5.5-2 and V6.0 will require the installation of a HP C RTL kit, a kit that is included with the HP C compiler. OpenVMS VAX versions V6.1 and later do not require a seperate RTL kit, but HP C RTL ECO kits are available to resolve problems found with the C RTL on various OpenVMS releases. With HP C, for automatic resolution of the standard C library routines by the LINKER utility, use the /PREFIX qualifier, such as /PREFIX=ALL_ENTRIES. If a particular application program replaces an existing C library routine, use /PREFIX=(ALL_ENTRIES,EXCEPT=(...)). (VAX C required explicit specification of an RTL shareable image or C object library during the link.) When the /PREFIX is requested, the compiler generates a "decc$" prefix on the specified symbols. This prefix allows the LINKER to resolve the external symbols against the symbols present in the DECC$SHR library. The DECC$SHR library is included in the IMAGELIB.OLB shareable image library, and IMAGELIB is searched by default when any program (written in any language) is LINKed. Because the standard C library routine names are very likely to match application routines written in other languages, a prefix "decc$" is added to the C symbol names to assure their uniqueness; to prevent symbol naming conflicts. C programs, however, can sometimes have private libraries for various purposes, and the external routines share the same names as the library routines. (This is not recommended, but there are applications around that use this technique.) Thus the need to explicity specify whether or not the "decc$" prefix should be prepended to the external symbol names by the compiler. The qualifiers, and most (all?) with associated pragmas, that may be of interest when migrating VAX C code to HP C include: 10-19 OpenVMS Programming Information o Failure to specify the prefixing qualifier (on certain and usually older versions of C) can cause the compiler to not add the prefixes for the names of the C library routines into the references placed in the object module, which can in turn cause problems resolving the external symbols in the library when the object code is linked: /PREFIX=ALL_ENTRIES o Some VAX C programs erroneously write to the string literals. By default, HP C does not allow the constants to change. /ASSUME=WRITABLE_STRING_LITERALS o Enables sharing ("shr") of globals and of extern variables. HP C sets externs as non-shareable ("noshr"), VAX C as "shr". /SHARE_GLOBALS o VAX C assumes common block model for external linkages. /EXTERN_MODE=COMMON_BLOCK o Refers to the padding placed between member elements within a struct. Disabling member alignment packs the data more tightly into memory, but this packaging has performance implications, both on OpenVMS VAX and particularly on OpenVMS Alpha systems. /[NO]MEMBER_ALIGNMENT o Enable all manner of useful compiler diagnostics: /WARN=ENABLE=(LEVEL4,QUESTCODE)/STANDARD=PORT/ACCEPT=NOVAXC_KEYWORDS You can disable extraneous diagnostics with the following: #ifdef __DECC #pragma message save #pragma message disable /* insert message tag here */ #endif 10-20 OpenVMS Programming Information Permit structure members to be naturally aligned whenever possible, and avoid using /NOMEMBER_ ALIGNMENT. If you need to disable member alignment, use the equivilent #pragma to designate the specific structures. The alignment of structure members normally only comes into play with specific unaligned data structures-such as the sys$creprc quota itemlist- and with data structures that are using data that was organized by a system using byte or other non-member alignment. Versions of HP C such as V6.0 include the capability to extract the contents of the standard header libraries into directories such as SYS$SYSROOT:[DECC$LIB...], and provide various logical names that can be defined to control library searches. With HP C versions such as V6.0, the default operations of the compiler match the expectations of most OpenVMS programmers, without requiring any definitions of site-specific library- related logical names. (And logical names left from older DEC C versions can sometimes cause the compiler troubles locating header files.) HP C V5.6 and later include a backport library, a mechanism by which HP C running on older OpenVMS releases can gain access to newer RTL routines added to the RTL in later OpenVMS releases-the language RTLs ship with OpenVMS itself, and not with the compilers. Example C code is available in SYS$EXAMPLES:, in DECW$EXAMPLES (when the DECwindows examples are installed), in TCPIP$SERVICES (or on older releases, UCX$EXAMPLES) when HP TCP/IP Services is installed), on the Freeware CD-ROMs, and at web sites such as o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. 10-21 OpenVMS Programming Information _____________________________ 10.22.1 Other common C issues The localtime() function and various other functions maintain the number of years since 1900 in the "struct tm" structure member tm_year. This field will contain a value of 100 in the year 2000, 101 for 2001, etc., and the yearly incrementation of this field is expected to continue. The C epoch typically uses a longword (known as time_ t) to contain the number of seconds since midnight on 1-Jan-1970. At the current rate of consumption of seconds, this longword is expected to overflow (when interpreted as a signed longword) circa 03:14:07 on 19-Jan-2038 (GMT), as this time is circa 0x7FFFFFFF seconds since the C base date. (The most common solution is to ensure that time_t is an unsigned.) If C does not correctly handle the display of the local system time, then check the UTC configuration on OpenVMS-the most common symptom of this is a skew of one hour (or whatever the local daylight saving time change might be). This skew can be caused by incorrect handling of the "is_dst" setting in the application program, or by an incorrect OpenVMS UTC configuration on the local system. (See section Section 4.4.) Floating point is prohibited in OpenVMS Alpha inner- mode (privileged) code, and in any process or other execution context that does not have floating point enabled. C programmers developing and working with OpenVMS Alpha high-IPL kernel-mode code such as device drivers will want to become familiar with the floating point processing available in the environment, and with the C compiler qualifier /INSTRUCTION_SET=[NO]FLOATING_ POINT. Device drivers and other similar kernel-mode C code must be compiled with /INSTRUCTION_SET=FLOATING_ POINT and /EXTERN_MODEL=STRICT_REFDEF. Additionally, the SYS$LIBRARY:SYS$LIB_C.TLB/LIBRARY parameter will be needed to be appended to the module specification or declared via the C compiler's include library logical name mechanism when the C compiler is resolving kernel-mode data structures and definitions. This library contains OpenVMS kernel-mode and other 10-22 OpenVMS Programming Information system declaractions, and particularly a mixture of undocumented definitions and declarations, and particularly definitions and declarations that are subject to change (and that can accordingly lead to requirements for the recompilation of application code). In addition to the user-mode C Run-Time Library (RTL) mentioned in the OpenVMS C RTL documentation and referenced over in Section 3.9, there is a second and parallel kernel-mode RTL accessable to device drivers and other kernel code on OpenVMS Alpha and OpenVMS I64. The most common time this second C library is noticed is when C code is (erroneously) linked with /SYSEXE/SYSLIB, and duplicate symbol errors typically then arise. As code running in supervisor-, executive- or kernel-mode context cannot call out a user-mode RTL or other user-mode library, you will want to respecify the command as LINK /SYSEXE/NOSYSLIB. This will eliminate the duplicate symbol errors, since only the kernel-mode library will be referenced, and it will also avoid calling out into the user-mode libraries. When sharing variables with other languages, here is some example HP C code... ... #pragma extern_model save #pragma extern_model strict_refdef extern int VMS$GL_FLAVOR; #pragma extern_model restore ... and here is some associated example Bliss code... ... EXTERNAL VMS$GL_FLAVOR, .... 10-23 OpenVMS Programming Information _____________________________ 10.22.2 Other common C++ issues HP C++ (a separate compiler from HP C) provides both symbol mangling and symbol decoration. Some of the details of working with longer symbol names and the resulting symbol name mangling in mixed language environments are listed in the shareable image cookbook, and in the C++ documentation. Symbol name decoration permits the overloading of functions (by adding characters to the external symbol for the function to indicate the function return type and the argument data types involved), and mixed- language external references can and often do need to disable this decoration via the extern "C" declaration mechanism: extern "C" { extern int ExternSymbol(void *); extern int OtherExternSymbol(void *); } Also see Section 14.7 for information on /ARCHITECTURE and /OPTIMIZE=TUNE. See Section 10.15 for information on the C system and the lib$spawn call in CAPTIVE environments. Constructs such as the order of incrementation or decrementation and the order of argument processing within an argument list are all implementation-defined. This means that C coding constructs such as: i = i++; a[i] = i++; foo( i, i++, --i); are undefined and can have (adverse) implications when porting the C code to another C compiler or to another platform. In general, any combination of ++, -, =, +=, -=, *=, etc operators that will cause the same value to be modified multiple times (between what the ANSI/ISO C standard calls "sequence points") produce undefined and implementation-specific results. 10-24 OpenVMS Programming Information Within C, the following are the "sequence points": the ";" at the end of a C statment, the ||, &&, ?:, and comma operators, and a call to a function. Note specifically that = is NOT a sequence point, and that the individual arguments contained within a function argument list can be processed from right to left, from left to right, or at any random whim. HP C for OpenVMS VAX (formerly DEC C) and VAX C do differ in the related processing. So you are looking for OpenVMS-specific definitions (include files)? UCBDEF.H, PCBDEF.H and other OpenVMS-specific definitions-these are considered part of OpenVMS and not part of the C compiler kit-are available on all recent OpenVMS Alpha releases. To reference the version-dependent symbol library sys$share:sys$lib_c.tlb, use a command similar to the following for compilation: $ CC sourcea+SYS$LIBRARY:SYS$LIB_C/LIB You can also define DECC$TEXT_LIBRARY to reference the library. You will want to review the Programming Concepts manual, and specifically take a quick look at Chapter 21. And some general background: the STARLET definitions (and thus the sys$starlet_c.tlb library) contain the symbols and the definitions that are independent of the OpenVMS version. The LIB definitions (and thus sys$lib_c) contain symbols and definitions that can be dependent on the OpenVMS version. You won't need to rebuild your code after an OpenVMS upgrade if you have included definitions from STARLET. The same cannot be said for some of the definitions in LIB-you might need to rebuild your code. (The UCB structure can and has changed from release to release, for instance.) Recent versions of C automatically search sys$starlet_ c.tlb. Explicit specification of sys$lib_c.tlb is required. 10-25 OpenVMS Programming Information Also see the Ask The Wizard website topics (2486), (3803), and (1661): o http://www.hp.com/go/openvms/wizard/ (retired; use ITRC forums) For additional information on the OpenVMS Ask The Wizard (ATW) area and for a pointer to the available ATW Wizard.zip archive, please see Section 3.8. ATW has been superceded (for new questions) by the ITRC discussion forums; the area remains available for reference. See Section 9.5 for information on the C off_t limitations, resolved in OpenVMS V7.3-1 and later and in ECO kits available for specific OpenVMS releases. The use of a longword for off_t restricts applications using native C I/O to file sizes of two gigabytes or less, or these applications must use native RMS or XQP calls for specific operations. __________________________________________________________ 10.23 Status of Programming Tools on OpenVMS VAX? DECthreads V7.3 and the HP C compiler (also known as Compaq C and DEC C) V6.4 are presently expected to be the last updates and the last releases of these development packages for use on OpenVMS VAX. The run- time support for both DECthreads (CMA$RTL) and for C (DECC$CRTL) will continue to be maintained, and will continue to be available on OpenVMS VAX. The VAX C V3.2 compiler is the final VAX C compiler release for OpenVMS VAX, and the VAX C Run-Time Library (VAXCRTL) will also continue to be available. New development and new features and product enhancements continue for the OpenVMS Alpha and the OpenVMS IA-64 DECthreads and C compilers. 10-26 OpenVMS Programming Information __________________________________________________________ 10.24 Choosing a Version Number for Application Code? One of the common rules-of-thumb used for choosing a displayed version number string for a new version of a layered product or an application, its implications, and its expected effects on client applications and users, follows: o No functional and no application-visible changes, bugfixes only-the edit number is incremented. These tend to be very small, very isolated, or ECO- level changes. These can also be distributions for specific hardware configurations or platforms, as is the case with an OpenVMS Limited Hardware Release (LHR). Application rebuilds are not expected, and there is an assumption that general user-provided application-related regression testing will not be required. o Minimal functional and very few user-visible changes-the maintenance number is incremented. These tend to be very small or even ECO-level changes, though somewhat larger than an edit-level change. Application rebuilds are not expected, and there is an assumption that user-provided application-related regression testing will not be required. o Various small and upward-compatible functional changes-the minor version number is incremented. The changes are user-visible, and are intended to be user-visible. Application rebuilds are not expected. Some application programmers may choose to perform regression tests. o Large and/or potentially incompatible changes- the major version number is incremented. Some applications might need to be rebuilt. Various application programmers will choose to perform regression tests of their respective applications. For additional version-numbering materials and for information on assigning module generation numbers, please see the OpenVMS (POLYCENTER) Software Product Installation Utility-variously refered to by acronyms 10-27 OpenVMS Programming Information including PCSI and SPIA-reference manual available within the OpenVMS documentation set. Of course, all of this is obviously subject to interpretation, particularly around the distinction between large and small changes and such. The scale of the application is also a factor, as larger and more complex applications will tend toward smaller increments and will tend to see the maintenance number incremented, while new releases of smaller applications will tend to see the minor version incremented somewhat more frequently. The goal of all this is to provide a guide to relative scale of changes and the associated effort involved in an upgrade for the user and/or for the application programmer. __________________________________________________________ 10.25 Selecting a Process Dump Directory? You can customize the device and directory for the process dump by defining the logical names SYS$PROCDMP and SYS$PROTECTED_PROCDMP. The former is for non- privileged dumps, while the latter is the location where privileged image dumps are written, and preferably an area protected against untrusted access. For example: $ define SYS$PROCDMP SYS$ERRORLOG: $ define /exec SYS$PROTECTED_PROCDMP SYS$ERRORLOG: The abouve presumes that the SYS$ERRORLOG logical name points to a valid location. There is presently no means to change the name of the generated dump file from IMAGENAME.DMP to something else. Accordingly, you will want to use different target directories for this purpose, particularly if there is more than one application or process potentially writing process dumps. 10-28 OpenVMS Programming Information __________________________________________________________ 10.26 Access to Itanium Assembler? If you are interested in accessing the native Intel Itanium assembler within the OpenVMS I64 GNV environment-and since the iasi64 assembler is a Unix program and GNV is a Unix environment for OpenVMS I64- you can simply copy iasi64.ext into your gnu:[bin] directory in place of "as.", and of "AS.EXE". Alternately and probably also better, you can write an "as." script to invoke the iasi64.exe image from its particular prefered location on the local system. A typical "as." script looks like this: path/iasi64.exe $1 $2 $3 $4 $5 __________________________________________________________ 10.27 Kernel-mode coding restrictions? Floating point is prohibited in OpenVMS Alpha inner- mode (privileged) code, and within any process or other execution context that does not have floating point enabled and available. Programmers developing and working with OpenVMS Alpha high-IPL kernel-mode code, such as device drivers, will further want to become familiar with the floating- point processing and the instruction set emulation available in the particular target environment (if any). When working with C, inner-mode programmers will want to become familiar with the C compiler qualifier /INSTRUCTION_SET=[NO]FLOATING_POINT. Device drivers and other similar kernel-mode C code must be compiled with /INSTRUCTION_SET=FLOATING_POINT and /EXTERN_MODEL=STRICT_REFDEF. Additionally, inner-mode code cannot call out to the user-mode language run-time libraries nor to any of the OpenVMS system run-time libraries. In particular, this prohibition prevents pages of inner-mode-protected memory from being allocated and interspersed within the user-mode heap or other such user-mode data structures. 10-29 OpenVMS Programming Information The prohibtion on user libraries also generally means that such code must be linked with LINK /NOSYSLIB, and quite probably also with /SYSEXE. The former causes the linker to avoid searching the system shareable image libraries (via IMAGELIB.OLB), while the latter brings in symbols typically only known to or otherwise accessable from the OpenVMS executuve. To include kernel-mode C programming definitions, macros and system constants within a C compilation, include SYS$LIBRARY:SYS$LIB_C.TLB/LIBRARY on the C compilation. (Constructs defined within the system macro library LIB.MLB or within its C equivalent SYS$LIB_C.TLB tend to be version-dependent, or undocumented, or both.) As an example of the compilation, the following is a typical C device driver compilation command: $ CC /STANDARD=RELAXED_ANSI89/INSTRUCTION=NOFLOATING_POINT/EXTERN=STRICT - 'DEBUG_CC_DQ_OPT' 'ARCH_CC_OPT' 'CHECK_CC_OPT' 'SHOW_CC_OPT' - /LIS=LIS$:xxDRIVER/MACHINE_CODE/OBJ=OBJ$:xxDRIVER - SRC$:xxDRIVER.C+SYS$LIBRARY:SYS$LIB_C.TLB/LIBRARY Additionally, code running in executive mode in an AST or in kernel mode cannot call RMS services, or routines which directly or indirectly call RMS. For related kernel-mode programming materials and driver documentation, please see the Writing OpenVMS Alpha Device Driversin C book, ISBN 1-55558-133-1. __________________________________________________________ 10.28 Decoding an Access Violation (ACCVIO) Error? To decode the virtual addresses returned by an access violation or by another similar OpenVMS display, you need to have created and retained a listings file- preferably one with machine code generation enabled-and a full link map. Starting with the virtual address reported by the error, use the link map to find the module that contributed the code that contains the virtual address range. Calculate the offset from the base of the range, by subtracting the base of the range from teh failing virtual address. Then use the compiler listings for 10-30 OpenVMS Programming Information the particular component that contributed the code to locate the offset of the failing instruction. If the map and listings information was not maintained, working backwards is far more difficult-you are left to use the binary instruction data around the failure to locate the associated source code, and this process is far more involved. This usually involves matching up blocks of decoded instructions around the failing code, or the direct analog involving matching up ranges of decoded instructions. Keep the maps and listing files around, in other words. Rather easier than an approach based on virtual address arithmetic and far easier than working backwards from the instruction stream is to use integrated debugging- this inclusion is arguably an essential component of any non-trivial application-and to use the OpenVMS Debugger. The OpenVMS Debugger in particular can be used to examine the source code, to examine the stack, and can even be programmed to wait patiently for the incidence of a particular value or failure or condition, and this is far easier than working backwards from the instruction stream is to use integrated debugging- this inclusion is arguably an essential component of any non-trivial application-and to use the OpenVMS Debugger. The debugger can also be activated from within a signal handler, and commands to generate a traceback can be generated directly, or through the invocation of a procedure containing a series of debugger commands. Details on the debugger are in the OpenVMS Debugger Manual, and also see the discussion of dyanmically activating the Debugger in Section 10.19. 10-31 OpenVMS Programming Information __________________________________________________________ 10.29 Generating an AUTODIN-II CRC32? The following code can be used to generate an AUTODIN- II 32-bit Cyclic Redundency Check (CRC32) value from an input string descriptor, similar to that used by the HP C compiler for its /NAMES=SHORTENED mechanism, and by various other applications requiring a CRC32. The routine uses the OpenVMS library routine lib$crc_ table to generate a sixteen longword array of data from the specified encoded polynomial coefficient (AUTODIN- II, in this case), and then lib$crc to generate the CRC32 value from the array and the input data. static int CreateCRC32( struct dsc$descriptor *InputDataDesc ) { uint32 AUTODIN2; uint32 Seed = ~0UL; uint32 Coefficient = 0x0EDB88320UL; uint32 CRCArray[16]; lib$establish( lib$sig_to_ret ); lib$crc_table( (void *) &Coefficient, (void *) CRCArray ); AUTODIN2 = lib$crc( (void *) CRCArray, (void *) &Seed, InputDataDesc ); AUTODIN2 ^= Seed; return AUTODIN2; } __________________________________________________________ 10.30 Enabling built-in tracing? $ RUN SYS$SYSTEM:SYSMAN SYSMAN> SYS_LOAD ADD TR$DEBUG TR$DEBUG/LOAD_ STEP=INIT/LOG SYSMAN> Exit $ @SYS$UPDATE:VMS$SYSTEM_IMAGES.COM To stop it from loading early in boot $ RUN SYS$SYSTEM:SYSMAN SYSMAN> SYS_LOAD REMOVE TR$DEBUG TR$DEBUG/LOG SYSMAN> Exit $ @SYS$UPDATE:VMS$SYSTEM_IMAGES.COM 10-32 OpenVMS Programming Information The first occurance of the name TR$DEBUG within the command is considered the "product" and the second is considered the "image" that should exist within SYS$LOADABLE_IMAGES. When TR$DEBUG loads in the init phase, it will automatically turn on tracing. Also see the SDA TR extension. 10-33 _______________________________________________________ 11 DECwindows __________________________________________________________ 11.1 How do I let someone else display something on my workstation? On a workstation, you will want to use the "Customize" menu of the session manager utility and select "Security". When the pop-up box appears, you can select the host node, username, and tranport that will allow you to launch an application that targets the workstation display. If this does not provide you with access to the display, You need a checklist of sorts: o Make sure that you've specified the X-windows "display" correctly on the remote host. For a DECnet transport, the specification uses two colons, while the TCP/IP transport typically uses one. The X Windows server and the X Windows screen follow the host specification, delimited by a period. For example: ________________________________________________________________ Table 11-1 X Windows Display Commands _______________________________________________________ Shell_____Command______________________________________ csh # setenv DISPLAY vms.domain:0.0 sh and ksh # $ DISPLAY=vms.domain:0.0 ; export DISPLAY DCL $ SET DISPLAY/CREATE/NODE=vms.domain - ___________________/TRANSPORT=TCPIP/SERVER=server/SCREEN=screen_ o If you have verified the command is correct and things are still not working, ensure the Security settings on the OpenVMS host side will allow the 11-1 DECwindows incoming connection: Pull down the "Options" menu in the Session Manager, and select "Security...". If you do not find your host and username and transport listed among the authorized users, you will need to add an entry. o There are various transports available, including LOCAL, DECNET, LAT, and TCPIP. You must Select the transport appropriate to the incoming connection. o If the transport is "DECnet", do NOT add the double colon (::) to the node name. o If the transport is "TCPIP", "Username" must be an asterisk (*). Why? Because unlike DECnet, the TCP/IP protocol does not provide the remote username information in the incoming connection. o If the connection is "TCPIP", it is best to use a full domain name (e.g. Node.Subd.Domain). However, you may have to use the IP address itself, if your host does not have a way to resolve the address via DNS. If you have the luxury of fixed addresses (eg: you are not using DHCP), then it can be helpful to add two entries for each TCP/IP host, one that specifies the host name and one that specifies the host address. o There are various TCP/IP packages for OpenVMS, and you must use syntax appropriate to the transport installed. o If a TCP/IP connection is still not working, ensure that the transport you want has been activated for use with DECwindows. See Section 11.14 for details of configuring TCP/IP as a transport. o There is a log file created in SYS$MANAGER: which can tell you which transports are loaded, and also tell you what connect attempts were rejected, including showing what the presented credentials were. This file is SYS$MANAGER:DECW$SERVER_0_ ERROR.LOG, although the 0 could be another number if you have multiple servers on the workstation. I 11-2 DECwindows have found this file to be very useful for tracking down what needs to be put in the Session Manager Security entries. __________________________________________________________ 11.2 How do I create a display on another workstation? To create a display from an OpenVMS host to a remote X Windows display, use one of the following DCL commands: $ SET DISPLAY /CREATE /TRANSPORT=net_transport /NODE=remote_node $ SET DISPLAY /CREATE /TRANSPORT=LAT /NODE=remote_node $ SET DISPLAY /CREATE /TRANSPORT=DECnet /NODE=remote_node $ SET DISPLAY /CREATE /TRANSPORT=TCPIP /NODE=remote_node Note that LAT is typically used only for the VXT series X Windows terminals, but it can also be used from OpenVMS to OpenVMS systems on various OpenVMS releases, such as on OpenVMS Alpha V6.1 and later. For details on configuring the TCP/IP transport, see Section 11.14. If you are interested in X Windows terminals and have an older VAXstation system around, please see the EWS package on Freeware V5.0. __________________________________________________________ 11.3 How can I get the information from SHOW DISPLAY into a symbol? Use the undocumented SHOW DISPLAY/SYMBOL, and then reference the symbols DECW$DISPLAY_NODE, DECW$DISPLAY_ SCREEN, DECW$DISPLAY_SERVER and/or DECW$DISPLAY_ TRANSPORT. An example of calling the underlying (and also undocumented) sys$qio programming interface for the WSDRIVER (WSAn:) is available at: http://www.hp.com/go/openvms/freeware/ Look in the Freeware V4.0 directory /srh_examples/DECUS_UNDOC_ CLINIC/. 11-3 DECwindows __________________________________________________________ 11.4 How do I get a log of a DECterm session? If you are working from a DECwindows DECterm terminal emulator, you can use the AutoPrint feature. Choose the "Printer..." menu item from the "Options" menu, set the printing destination to the name of the file you want, and set "Auto Print Mode". You are now free to continue. It should be noted that all of the characters and escape sequences are captured, but if you display the resulting log file on a DECterm, then you will see exactly what was originally displayed. You can also use the "Print Screen" screen capture available in the DECwindows session manager menus, if you simply wish to snapshot a particular portion of the X Windows display. If you are using the Freeware VTstar terminal emulator package, you will find a similar logging mechanism is available in the menus. __________________________________________________________ 11.5 Why is DECwindows Motif not starting? First check to see if there is a graphics device, usually a G* device. (eg: On a DEC 2000 model 300, use the command SHOW DEVICE GQ) If you do not find a graphics device: o OpenVMS has failed to find the appropriate IRQ information for an EISA graphics card (on the DEC 2000 series) such as the HP (Compaq) QVision, and did not autoconfigure it. Run the correct ECU (for Tru64 UNIX and OpenVMS) and reboot. This is necessary only on EISA-based systems. o You have an EISA-based system (such as the DEC 2000 model 300) and do not have a HP (Compaq) QVision video card. This EISA graphics card should have Compaq printed on it, and identifies itself as a CPQ3011 or a CPQ3111. If it is not one of these two EISA devices, then OpenVMS does not support it. (There are no other supported EISA graphics controllers, and EISA graphics are normally 11-4 DECwindows used with DECwindows only on the DEC 2000 series systems.) o You have a PCI-based system, and do not have a supported graphics controller-examples of supported controllers include the following: o Radeon 7500 o PowerStorm 3D30, PowerStorm 4D20 o 3DLabs Oxygen VX1 See Section 5.16 for further information on some of these graphics controllers. o You have booted the system minimally, or have otherwise disabled the device autoconfiguration process. If there is a G* graphics device present: o There may have been a severe error in the DECwindows startup. Type the contents of SYS$MANAGER:DECW$SERVER_0_ERROR.LOG for any information on errors starting the server. o The system parameter WINDOW_SYSTEM is not set to 1. While this was a common way for system managers to disable the DECwindows server startup, it is not particularly reliable as DECwindows can now "correct" this setting. If you really do not want an OpenVMS system with workstation hardware to bootstrap and configure itself as a workstation, add the following definition to SYLOGICALS.COM: $ DEFINE/SYSTEM/EXEC DECW$IGNORE_WORKSTATION TRUE o You may not have a valid DECwindows Motif license loaded. To check for the two most common types of Motif product authorization keys (PAKs), use the following DCL commands: $ LICENSE LIST DW-MOTIF/FULL $ LICENSE LIST NET-APP-SUP*/FULL 11-5 DECwindows and examine the information displayed. Make sure that one of these licenses is present, valid and active. For information on registering software license product authorization keys (PAKs) when you cannot log into the system directly, please see Section 5.6.2. o Check that the DECW$PRIVATE_SERVER_SETUP.COM is correct for the graphics controller in use. For instance: The following is from the 9FX Vision 330 Owners Guide, EK-V330G-OG pg 2-9. Place the following in DECW$PRIVATE_SERVER_SETUP.COM, creatibng .COM from .TEMPLATE if necessary. Locate the DECW$PRIVATE_ SERVER_SETUP.COM file in SYS$SPECIFIC:[SYSMGR] or in SYS$COMMON:[SYSMGR] as appropriate; the former file is used for this system within a cluster configuration, and the latter is used for all systems that do not also have a local copy of this file in SYS$SPECIFIC:[SYSMGR]. $ DECW$XSIZE_IN_PIXELS == xvalue $ DECW$YSIZE_IN_PIXELS == yvalue $ DEFINE/SYSTEM DECW$SERVER_REFRESH_RATE rate_in_Hz Also see Section 11.11. Details of the PowerStorm 3D30 and 4D20 settings are available in the OpenVMS Ask The Wizard area. __________________________________________________________ 11.6 How do I set the title on a DECterm window? If you are creating a new DECterm window, check $ HELP CREATE /TERMINAL /WINDOW_ATTRIBUTES If you want to change the title of an existing window, use the following control sequences, where is the ANSI escape code, value decimal 27, and "text label" is what you want to display: To set the DECterm title, send the escape character, then the characters "]21;", then the text label string, and then an escape character followed by a backslash character. 11-6 DECwindows To set the icon label, send the escape character, then the characters "]2L;", then the icon label string, and then an escape character followed by a backslash character. To set both the DECterm title and icon to the full device name, you can use the following DCL commands: $ esc[0,7] = 27 $ fulldevnam = F$Edit(F$GetDVI("TT","FULLDEVNAM"),"UPCASE,COLLAPSE") $ write sys$output esc+ "]21;" + fulldevnam + esc + "\" $ write sys$output esc+ "]2L;" + fulldevnam + esc + "\" You can also change the title and the icon using the Options-Window... menu. Also see Section 12.1 and Section 8.13. __________________________________________________________ 11.7 How do I customize DECwindows, including the login screen? To customize various DECwindows Motif characteristics including the defaults used by the SET DISPLAY command, the DECwindows login screen background logo used (the default is the DIGITAL, Compaq, or HP logo), various keymaps (also see Section 11.7.2 and Section 11.7.1), the FileView defaults, session manager defaults, the DECwindows login processing, DECwindows log file processing, and various other DECwindows attributes, see the example file: $ SYS$MANAGER:DECW$PRIVATE_APPS_SETUP.TEMPLATE This example template file is typically copied over to the filename SYS$COMMON:[SYSMGR]DECW$PRIVATE_APPS_ SETUP.COM and then modified to meet site-specific requirements. Additionally, various X tools such as xsetroot, bitmap and xrdb-some these can be useful in customizing the appearance of an application or of the DECwindows Motif display-are provided in the DECW$UTILS: area. When using DECwindows V1.2-4 and later on OpenVMS Alpha, the default desktop is the Common Desktop Environment (CDE). You can select your preferred desktop (CDE or DECwindows Motif) when logging in, or you can change the default to the DECwindows 11-7 DECwindows Motif desktop using the DCL symbol decw$start_new_ desktop in the DECwindows private application setup command procedure. See SYS$MANAGER:DECW$PRIVATE_APPS_ SETUP.TEMPLATE for further details, and how to create DECW$PRIVATE_APPS_SETUP.COM. Note that with DECwindows CDE, the root window is no longer visible by default. The root window is hidden behind the "backdrop" window of the current CDE workspace. To make the root window visible, use the CDE style manager selection "backdrop none", and use information such as that in the OpenVMS FAQ to set the root window. To add a new backdrop to the DECwindows CDE environment, the backdrop must first be in or be converted into X11 pixmap format. (This conversion is often possible using tools such as xv.) Then (if necessary) create the default backdrop directory SYS$COMMON:[CDE$DEFAULTS.USER.BACKDROPS]. Place the X11 pixmap file containing the desired image into the backdrops directory, ensure that it has a filename extension of .PM. (The xv default filename extension for the X11 pixmap file is .XPM, while CDE expects only to see files with .PM.) Now invoke the CDE style manager and select a new backdrop. You will find your image will be placed at the end of the list of backdrops available. If you require a message be included on the initial display-where the start session display and the logo appears-you can use either of the following approaches: o The simplest approach requires OpenVMS V7.3-2 or later, and the corresponding DECwindows V1.3- 1 kit or later. You will want to create a file named SYS$COMMON:[SYSMGR]DECW$GREET.TXT, and this will be displayed in a popup-with an OK button- when the login box is displayed. This is intended specifically for applications requiring such a display. 11-8 DECwindows o The second approach involves copying the file XRESOURCES.DAT from SYS$SYSDEVICE:[VMS$COMMON.CDE$DEFAULTS.SYSTEM.CONFIG.C] into the directory SYS$SYSDEVICE:[VMS$COMMON.CDE$DEFAULTS.USER.CONFIG.C] and editing the copy. Specifically, look for the following: Dtlogin*greeting.labelString: The line is normally commented out, and by default contains the string: Welcome to %localhost% You can change this text to something akin to the following: Dtlogin*greeting.labelString: Welcome to Heck \n\ This is a Trusted System owned by the Rulers of the planet Zark\n\ \n\ We Come In Peace\n\ \n If you want Privacy, you've come to the wrong place\n\ \n The lines of text will be centered for you. In most DECwindows versions, you will be able to onbtain only about eight (8) lines of text. Changes have been implemented in DECwindows V1.3 and later that permit up to about twenty-five (25) lines of text. The login logo is stored as an XPM bitmap image in the text file SYS$SYSROOT:[SYSCOMMON.CDE$DEFAULTS.SYSTEM.APPCONFIG.ICONS.C]DECDTLOGO.PM, and it can be changed. Copy the file to SYS$SYSROOT:[SYSCOMMON.CDE$DEFAULTS.USER.APPCONFIG.ICONS.C]DECDTLOGO.PM, as DECwindows upgrades can replace the system version of this file. On DECwindows V1.3-1 and later (and possibly on V1.3), both DECwindows CDE and DECwindows Motif displays use this logo file. On older releases, only the DECwindows CDE displays used this logo file, while the logo used for the Motif login display was hard-coded into the package and the only available override is the 11-9 DECwindows DECW$LOGINLOGO command procedure mechanism within the customized, site-specific DECW$PRIVATE_APPS_SETUP.COM file. Look at the contents of the DECDTLOGO.PM file and at other *.XPM files and tools for additional details. _____________________________ 11.7.1 How do I customize DECwindows keymapping? Various keymaps can be implemented on OpenVMS and other X Windows systems, allowing the implementation of a Dvorak-style or other alternate keymappings. For details, see the available X Windows documentation (this is the documentation associated with X Windows itself, and not the product documentation for the OpenVMS operating system nor for the DECwindows X Windows implementation) and see the DECwindows *.DECW$KEYMAP (text-format) files found in the DECwindows DECW$KEYMAP: directory. For other keymapping information, see Section 11.7.2. _____________________________ 11.7.2 Why does the DELETE key delete forward instead of backward? Some operating systems use as ; as the character back-delete key. Most OpenVMS applications, VT-series terminals (check the terminal settings, many can have this configured within the terminal set-up menus), and DECterm terminals all use as the character back-delete, and use as a request to move to the beginning of the command line. The Integrity EFI console does use as ; as the character back-delete key. Also see the SET TERMINAL/BACKSPACE command available on OpenVMS V8.2 and later. This behaviour involves the Motif virtual key bindings. When a Motif application starts, it looks at the vendor string returned in the display connection information and attempts to match the string to a table of virtual bindings. 11-10 DECwindows You can override the default bindings in your decw$xdefaults.dat file. Here is the entry you would make to get the default OpenVMS bindings. *defaultVirtualBindings:\ osfCancel : \n\ osfLeft : \n\ osfUp : \n\ osfRight : \n\ osfDown : \n\ osfEndLine :Alt \n\ osfBeginLine :Alt \n\ osfPageUp : \n\ osfPageDown : \n\ osfDelete :Shift \n\ osfUndo :Alt \n\ osfBackSpace : \n\ osfAddMode :Shift \n\ osfHelp : \n\ osfMenu : \n\ osfMenuBar : \n\ osfSelect :