CONTENTS Title Page Copyright Page Preface 1 Program Development 1.1 Compiling and Linking an Application with FORTRAN Modules 1.1.1 COMPILING 1.1.2 Linking 1.1.3 Building the System 1.1.4 Booting and Down-Line Loading 1.1.5 Debugging 1.2 FORTRAN Commons 2 Programming Considerations 2.1 Partially Supported Statements 2.1.1 CLOSE Statement 2.1.2 OPEN Statement 2.1.3 PAUSE Statement 2.1.4 READ Statement 2.1.5 WRITE Statement 2.2 Unsupported Statements 2.3 VAX FORTRAN Extensions to FORTRAN-77 2.3.1 System Subroutines 2.3.2 VAX FORTRAN System Subroutine Library 2.3.3 PDP-11 Compatibility Subroutines 2.4 Default File Specification Strings 2.5 File Organizations 2.6 Logical Name Support 2.7 Alternative I/O Methods 2.8 System Services 2.9 Floating-Point Underflow 2.10 Using Floating-Point Emulation for G-Floating Instructions on a MicroVAX I 2.11 Carriage Control Attributes Not Processed When Terminal I/O Is Redirected 2.12 Parallel Processing of DO Loops 3 Writing Exception Handlers in FORTRAN 3.1 VAXELN FORTRAN Exception Handlers 3.2 Establishing and Canceling an Exception Handler 3.3 Exception Arguments and Types 3.3.1 Signal Arguments 3.3.2 Mechanism Arguments 3.4 Program Example 4 VAXELN Kernel Procedures 4.1 VAXELN FORTRAN Arguments 4.2 VARYING_STRING Records 4.3 Return Status 4.4 Kernel Service Calls KER$ACCEPT_CIRCUIT KER$ALLOCATE_MAP KER$ALLOCATE_MEMORY KER$ALLOCATE_PATH KER$ALLOCATE_SYSTEM_REGION KER$CLEAR_EVENT KER$CONNECT_CIRCUIT KER$CREATE_AREA KER$CREATE_AREA_EVENT KER$CREATE_AREA_SEMAPHORE KER$CREATE_DEVICE KER$CREATE_EVENT KER$CREATE_JOB KER$CREATE_MESSAGE KER$CREATE_NAME KER$CREATE_PORT KER$CREATE_PROCESS KER$CREATE_SEMAPHORE KER$CURRENT_PROCESS KER$DELETE KER$DISABLE_ASYNCH_EXCEPTION KER$DISABLE_SWITCH KER$DISCONNECT_CIRCUIT KER$ENABLE_ASYNCH_EXCEPTION KER$ENABLE_SWITCH KER$ENTER_KERNEL_CONTEXT KER$EXIT KER$FREE_MAP KER$FREE_MEMORY KER$FREE_PATH KER$FREE_SYSTEM_REGION KER$GET_JCB KER$GET_TIME KER$GET_UPTIME KER$GET_USER KER$INITIALIZATION_DONE KER$JOB_PORT KER$LOCK_DEVICE KER$MEMORY_SIZE KER$RAISE_EXCEPTION KER$RAISE_PROCESS_EXCEPTION KER$RECEIVE KER$RESUME KER$SEND KER$SET_JOB_ELIGIBILITY KER$SET_JOB_PRIORITY KER$SET_PROCESS_PRIORITY KER$SET_TIME KER$SET_USER KER$SIGNAL KER$SIGNAL_DEVICE KER$SUSPEND KER$TRANSLATE_NAME KER$UNLOCK_DEVICE KER$UNWIND KER$WAIT_ALL, KER$WAIT_ANY 5 VAXELN Utility Procedures 5.1 VAXELN FORTRAN Arguments 5.2 VARYING_STRING Records 5.3 Summary of VAXELN Utility Procedures 5.4 Return Status 5.5 Utility Procedure Calls ELN$ADD_INTERLOCKED ELN$ADD_LARGE_INTEGERS_LIST ELN$ADQ_INITIALIZE ELN$ADQ_QUEUE_READ ELN$ADQ_START ELN$ADQ_TRANSFER_DONE ELN$ADV_INITIALIZE ELN$ADV_QUEUE_READ ELN$ADV_TRANSFER_DONE ELN$ALLOCATE_STACK ELN$AUTH_ADD_USER ELN$AUTH_MODIFY_USER ELN$AUTH_REMOVE_USER ELN$AUTH_SHOW_USER ELN$AXV_INITIALIZE ELN$AXV_READ ELN$AXV_WRITE ELN$BI_NODE_MASK ELN$BI_STOP ELN$CANCEL_EXIT_HANDLER ELN$COPY_FILE ELN$CREATE_DIRECTORY ELN$CREATE_MUTEX ELN$DEALLOCATE_STACK ELN$DECLARE_EXIT_HANDLER ELN$DELETE_FILE ELN$DELETE_MUTEX ELN$DIRECTORY_CLOSE ELN$DIRECTORY_LIST ELN$DIRECTORY_OPEN ELN$DISABLE_INTERRUPT ELN$DISK_READ ELN$DISK_WRITE ELN$DISMOUNT_TAPE_VOLUME ELN$DISMOUNT_VOLUME ELN$DLL_CLEAR_LINE ELN$DLL_CLEAR_NODE ELN$DLL_GET_LINE ELN$DLL_GET_NODE ELN$DLL_LOAD ELN$DLL_SET_LINE ELN$DLL_SET_NODE ELN$DLL_TRIGGER ELN$DLV_INITIALIZE ELN$DLV_READ_BLOCK ELN$DLV_READ_STRING ELN$DLV_WRITE_STRING ELN$DRB_FINISHED_TRANSFER ELN$DRB_INITIALIZE ELN$DRB_QUEUE_READ ELN$DRB_QUEUE_WRITE ELN$DRB_READ_CTRL ELN$DRB_WRITE_CTRL ELN$DRQ3B_INITIALIZE ELN$DRQ3B_QUEUE_READ ELN$DRQ3B_QUEUE_WRITE ELN$DRQ3B_READ_FUNCTION ELN$DRQ3B_TRANSFER_DONE_READ ELN$DRQ3B_TRANSFER_DONE_WRITE ELN$DRQ3B_WRITE_FUNCTION ELN$DRV_DMA_INITIALIZE ELN$DRV_DMA_QUEUE_READ ELN$DRV_DMA_QUEUE_WRITE ELN$DRV_DMA_READ_STATUS ELN$DRV_DMA_TRANSFER_DONE ELN$DRV_DMA_WRITE_FUNCTION ELN$DRV_INITIALIZE ELN$DRV_READ ELN$DRV_WRITE ELN$ENABLE_INTERRUPT ELN$ESTABLISH ELN$GET_STATUS_TEXT ELN$GP_AUXILIARY_COMMAND ELN$GP_CLEAR_EVENT ELN$GP_CONFIGURE ELN$GP_DEFINE_PATH ELN$GP_GET_CONTROL ELN$GP_GOTO_STANDBY ELN$GP_INITIALIZE ELN$GP_LOAD_PARALLEL_POLL ELN$GP_PARALLEL_POLL ELN$GP_PARALLEL_POLL_CONFIG ELN$GP_PASS_CONTROL ELN$GP_RECEIVE_CONTROL ELN$GP_REQUEST_SERVICE ELN$GP_SEND_COMMAND ELN$GP_SENSE_MODE ELN$GP_SERIAL_POLL ELN$GP_SET_EVENT ELN$GP_TRANSFER ELN$GP_UNIT_INIT ELN$INITIALIZE_AREA_LOCK ELN$INIT_TAPE_VOLUME ELN$INIT_VOLUME ELN$INSERT_ENTRY ELN$KWV_INITIALIZE ELN$KWV_READ ELN$KWV_WRITE ELN$LAT_CLEAR_COUNTERS ELN$LAT_CONNECT_PORT ELN$LAT_CREATE_PORT ELN$LAT_CREATE_SERVICE ELN$LAT_DELETE_PORT ELN$LAT_DELETE_SERVICE ELN$LAT_DISCONNECT_PORT ELN$LAT_MAP_PORT ELN$LAT_SET_NODE ELN$LAT_SET_PORT ELN$LAT_SET_SERVICE ELN$LAT_SHOW_CHAR ELN$LAT_SHOW_COUNTERS ELN$LAT_SHOW_PORT ELN$LAT_SHOW_PORT_MAPPING ELN$LAT_SHOW_SERVERS ELN$LAT_START_NODE ELN$LAT_STOP_NODE ELN$LAT_WAIT_FOR_CONNECTION ELN$LOAD_KA800_PROCESSOR ELN$LOAD_PROGRAM ELN$LOAD_UNIBUS_MAP ELN$LOCK_AREA ELN$LOCK_MUTEX ELN$MFPR ELN$MOUNT_TAPE_VOLUME ELN$MOUNT_VOLUME ELN$MTPR ELN$NETMAN_START_NETWORK ELN$NETMAN_STOP_NETWORK ELN$NI_ALLOCATE_BUFFER ELN$NI_CONNECT ELN$NI_DISCONNECT ELN$NI_GET_ATTRIBUTES ELN$NI_GET_CONFIGURATION ELN$NI_RECEIVE ELN$NI_TRANSMIT ELN$NI_TRANSMIT_STATUS ELN$PHYSICAL_ADDRESS ELN$PROGRAM_ARGUMENT ELN$PROGRAM_ARGUMENT_COUNT ELN$PROTECT_FILE ELN$READ_BYTE_REGISTER ELN$READ_LONG_REGISTER ELN$READ_WORD_REGISTER ELN$REMOVE_ENTRY ELN$RENAME_FILE ELN$SCSI_CONNECT_DEVICE ELN$SCSI_DISCONNECT_DEVICE ELN$SCSI_FREE_CONFIG_DATA ELN$SCSI_FREE_CONTROL_PORT ELN$SCSI_GET_CONFIG_DATA ELN$SCSI_GET_CONTROL_PORTS ELN$SCSI_ISSUE_COMMAND ELN$SCSI_MAP_MESSAGE_BUFFER ELN$SCSI_UNMAP_MESSAGE_BUFFER ELN$SET_DEFAULT_FILESPEC ELN$START_QUEUE ELN$SUB_LARGE_INTEGERS_LIST ELN$TIME_FIELDS_LIST ELN$TIME_STRING ELN$TIME_VALUE_LIST ELN$TTY_ASSERT_BREAK ELN$TTY_CANCEL_MODEM_EVENTS ELN$TTY_CANCEL_OOB_CHARACTERS ELN$TTY_GET_CHARACTERISTICS ELN$TTY_READ ELN$TTY_RECEIVE_MODEM_EVENTS ELN$TTY_RECEIVE_OOB_CHARACTERS ELN$TTY_SET_CHARACTERISTICS ELN$TTY_SIGNAL_MODEM_EVENTS ELN$TTY_SIGNAL_OOB_CHARACTERS ELN$TTY_WRITE ELN$UNIBUS_MAP ELN$UNIBUS_UNMAP ELN$UNLOAD_PROGRAM ELN$UNLOCK_AREA ELN$UNLOCK_MUTEX ELN$WRITE_BYTE_REGISTER ELN$WRITE_LONG_REGISTER ELN$WRITE_WORD_REGISTER A Writing FORTRAN Device Drivers EXAMPLES 3-1 Using a FORTRAN Exception Handler 4-1 Using the status Argument TABLES 5-1 VAXELN Utility Procedures 5-2 Mask Values for Clear_Fields Argument 5-3 Mask Values for Clear_Fields Argument 5-4 Contents of DLL$LINE_INFORMATION Record 5-5 Contents of DLL$NODE_INFORMATION Record 5-6 Mask Values for Specified_Fields Argument 5-7 Mask Values for New_Fields Argument 5-8 Mask Values for New_Fields Argument 5-9 Mask Values for Specified_Fields Argument 5-10 Mask Values for NETMAN$INFORMATION_FIELDS 5-11 Description of ELN$NI_CONNECT form Argument 5-12 Description of ELN$NI_RECEIVE form Argument 5-13 Description of ELN$NI_TRANSMIT form Argument 5-14 SCSI$CONFIG_MSG Structure 5-15 SCSI$CONFIG_TBL_TYPE Structure