1 /* Alpha VMS external format of Descriptors. 2 3 Copyright (C) 2010-2014 Free Software Foundation, Inc. 4 Written by Tristan Gingold <gingold (at) adacore.com>, AdaCore. 5 6 This file is part of BFD, the Binary File Descriptor library. 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 3 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program; if not, write to the Free Software 20 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 21 MA 02110-1301, USA. */ 22 23 #ifndef _VMS_DSC_H 24 #define _VMS_DSC_H 25 26 /* Descriptors. */ 27 #define DSC__K_DTYPE_Z 0 /* Unspecified. */ 28 #define DSC__K_DTYPE_V 1 /* Bit. */ 29 #define DSC__K_DTYPE_BU 2 /* Byte logical. */ 30 #define DSC__K_DTYPE_WU 3 /* Word logical. */ 31 #define DSC__K_DTYPE_LU 4 /* Longword logical. */ 32 #define DSC__K_DTYPE_QU 5 /* Quadword logical. */ 33 #define DSC__K_DTYPE_B 6 /* Byte integer. */ 34 #define DSC__K_DTYPE_W 7 /* Word integer. */ 35 #define DSC__K_DTYPE_L 8 /* Longword integer. */ 36 #define DSC__K_DTYPE_Q 9 /* Quadword integer. */ 37 #define DSC__K_DTYPE_F 10 /* Single-precision floating. */ 38 #define DSC__K_DTYPE_D 11 /* Double-precision floating. */ 39 #define DSC__K_DTYPE_FC 12 /* Complex. */ 40 #define DSC__K_DTYPE_DC 13 /* Double-precision Complex. */ 41 #define DSC__K_DTYPE_T 14 /* ASCII text string. */ 42 #define DSC__K_DTYPE_NU 15 /* Numeric string, unsigned. */ 43 #define DSC__K_DTYPE_NL 16 /* Numeric string, left separate sign. */ 44 #define DSC__K_DTYPE_NLO 17 /* Numeric string, left overpunched sign. */ 45 #define DSC__K_DTYPE_NR 18 /* Numeric string, right separate sign. */ 46 #define DSC__K_DTYPE_NRO 19 /* Numeric string, right overpunched sign. */ 47 #define DSC__K_DTYPE_NZ 20 /* Numeric string, zoned sign. */ 48 #define DSC__K_DTYPE_P 21 /* Packed decimal string. */ 49 #define DSC__K_DTYPE_ZI 22 /* Sequence of instructions. */ 50 #define DSC__K_DTYPE_ZEM 23 /* Procedure entry mask. */ 51 #define DSC__K_DTYPE_DSC 24 /* Descriptor, used for arrays of dyn strings. */ 52 #define DSC__K_DTYPE_OU 25 /* Octaword logical. */ 53 #define DSC__K_DTYPE_O 26 /* Octaword integer. */ 54 #define DSC__K_DTYPE_G 27 /* Double precision G floating, 64 bit. */ 55 #define DSC__K_DTYPE_H 28 /* Quadruple precision floating, 128 bit. */ 56 #define DSC__K_DTYPE_GC 29 /* Double precision complex, G floating. */ 57 #define DSC__K_DTYPE_HC 30 /* Quadruple precision complex, H floating. */ 58 #define DSC__K_DTYPE_CIT 31 /* COBOL intermediate temporary. */ 59 #define DSC__K_DTYPE_BPV 32 /* Bound Procedure Value. */ 60 #define DSC__K_DTYPE_BLV 33 /* Bound Label Value. */ 61 #define DSC__K_DTYPE_VU 34 /* Bit Unaligned. */ 62 #define DSC__K_DTYPE_ADT 35 /* Absolute Date-Time. */ 63 #define DSC__K_DTYPE_VT 37 /* Varying Text. */ 64 #define DSC__K_DTYPE_T2 38 /* 16-bit char. */ 65 #define DSC__K_DTYPE_VT2 39 /* 16-bit varying char. */ 66 67 #define DSC__K_CLASS_S 1 /* Fixed-length scalar/string. */ 68 #define DSC__K_CLASS_D 2 /* Dynamic string. */ 69 #define DSC__K_CLASS_V 3 /* Reserved. */ 70 #define DSC__K_CLASS_A 4 /* Contiguous array. */ 71 #define DSC__K_CLASS_P 5 /* Procedure argument descriptor. */ 72 #define DSC__K_CLASS_PI 6 /* Procedure incarnation descriptor. */ 73 #define DSC__K_CLASS_J 7 /* Reserved. */ 74 #define DSC__K_CLASS_JI 8 /* Obsolete. */ 75 #define DSC__K_CLASS_SD 9 /* Decimal (scalar) string. */ 76 #define DSC__K_CLASS_NCA 10 /* Non-contiguous array. */ 77 #define DSC__K_CLASS_VS 11 /* Varying string. */ 78 #define DSC__K_CLASS_VSA 12 /* Varying string array. */ 79 #define DSC__K_CLASS_UBS 13 /* Unaligned bit string. */ 80 #define DSC__K_CLASS_UBA 14 /* Unaligned bit array. */ 81 #define DSC__K_CLASS_SB 15 /* String with bounds. */ 82 #define DSC__K_CLASS_UBSB 16 /* Unaligned bit string with bounds. */ 83 84 /* Common part. */ 85 86 struct vms_dsc 87 { 88 unsigned char length[2]; 89 unsigned char dtype; 90 unsigned char bclass; 91 unsigned char pointer[4]; 92 }; 93 94 struct vms_dsc64 95 { 96 unsigned char mbo[2]; 97 unsigned char dtype; 98 unsigned char bclass; 99 unsigned char mbmo[4]; 100 unsigned char length[8]; 101 unsigned char pointer[8]; 102 }; 103 104 struct vms_dsc_nca 105 { 106 unsigned char length[2]; 107 unsigned char dtype; 108 unsigned char bclass; 109 unsigned char pointer[4]; 110 111 unsigned char scale; 112 unsigned char digits; 113 unsigned char aflags; 114 unsigned char dimct; 115 116 unsigned char arsize[4]; 117 unsigned char a0[4]; 118 }; 119 120 struct vms_dsc_ubs 121 { 122 unsigned char length[2]; 123 unsigned char dtype; 124 unsigned char bclass; 125 unsigned char base[4]; 126 unsigned char pos[4]; 127 }; 128 129 #endif /* _VMS_DSC_H */ 130