! ! ************************************************************************* ! * * ! * © Copyright 2010, Hewlett-Packard Development Company, L.P. * ! * * ! * Confidential computer software. Valid license from HP and/or * ! * its subsidiaries required for possession, use, or copying. * ! * * ! * Consistent with FAR 12.211 and 12.212, Commercial Computer Software, * ! * Computer Software Documentation, and Technical Data for Commercial * ! * Items are licensed to the U.S. Government under vendor's standard * ! * commercial license. * ! * * ! * Neither HP nor any of its subsidiaries shall be liable for technical * ! * or editorial errors or omissions contained herein. The information * ! * in this document is provided "as is" without warranty of any kind and * ! * is subject to change without notice. The warranties for HP products * ! * are set forth in the express limited warranty statements accompanying * ! * such products. Nothing herein should be construed as constituting an * ! * additional warranty. * ! * * ! ************************************************************************* ! ******************************************************************************************************************************** ! Created: 30-Mar-2010 17:25:54 by OpenVMS SDL EV3-3 ! Source: 13-FEB-2008 00:08:30 $1$DGA7274:[BACKUP.SRC]BAPIDEF.SDL;1 ! ******************************************************************************************************************************** !*** MODULE bckapidef IDENT X-18 *** macro bck$pointer = 0,0,0,0 %; literal s_bck$pointer = 8; macro string_ptr = 0,0,32,0 %; ! 32/64-bit compatible address/pointer macro ptr_extended = 4,0,32,0 %; ! bit 31 of "ptr" (previous field) ! sign-extended macro bck64$descriptor = 0,0,0,0 %; literal bckdsc64$s_bck64$descriptor = 24; macro bckdsc64$w_mbo = 0,0,16,0 %; ! Must Be == 1 macro bckdsc64$b_dtype = 2,0,8,0 %; macro bckdsc64$b_class = 3,0,8,0 %; macro bckdsc64$l_mbmo = 4,0,32,1 %; ! Must_Be_MINUS_ONE (-1) macro bckdsc64$q_length = 8,0,0,0 %; literal bckdsc64$s_length = 8; ! 64-bit length macro bckdsc64$r_pointer = 16,0,0,0 %; literal bckdsc64$s_pointer = 8; ! 64-bit address/pointer macro bckEvent = 0,0,0,0 %; literal bckevt_s_bckEvent = 28; macro bckevt_r_event_buffer = 0,0,0,0 %; literal bckevt_s_event_buffer = 8; ! pointer to the event data macro bckevt_l_event_type = 8,0,32,0 %; ! type of event macro bckevt_l_event_subtype = 12,0,32,0 %; ! Additional event specifiers macro bckevt_q_event_ctx = 16,0,0,0 %; literal bckevt_s_event_ctx = 8; ! (reserved for future use) macro bckevt_l_event_handle = 24,0,32,0 %; ! (reserved for future use) ! ! BACKUP Operation Event Types ! literal BCK_K_EVENT_MIN = 1; literal BCK_EVENT_K_CONTROL = 1; literal BCK_EVENT_K_ERROR_MSG = 2; literal BCK_EVENT_K_FILE_OPEN = 3; literal BCK_EVENT_K_FILE_READ = 4; literal BCK_EVENT_K_FILE_WRITE = 5; literal BCK_EVENT_K_FILE_CLOSE = 6; literal BCK_EVENT_K_JOURNAL_OPEN = 7; literal BCK_EVENT_K_JOURNAL_WRITE = 8; literal BCK_EVENT_K_JOURNAL_CLOSE = 9; literal BCK_EVENT_K_LIST_OPEN = 10; literal BCK_EVENT_K_LIST_WRITE = 11; literal BCK_EVENT_K_LISTJOUR_WRITE = 12; literal BCK_EVENT_K_LIST_CLOSE = 13; literal BCK_EVENT_K_LOG = 14; literal BCK_EVENT_K_OP_PHASE = 15; literal BCK_EVENT_K_SAVESET_OPEN = 16; literal BCK_EVENT_K_SAVESET_READ = 17; literal BCK_EVENT_K_SAVESET_WRITE = 18; literal BCK_EVENT_K_SAVESET_CLOSE = 19; literal BCK_EVENT_K_STATISTICS = 20; literal BCK_EVENT_K_USER_MSG = 21; ! ! Start for New callback event by R.Sato literal BCK_EVENT_K_CONVERT_FILENAME = 22; ! ! End for New callback event by R.Sato literal BCK_K_EVENT_MAX = 22; literal BCK_K_EVENT_ALL = -1; ! ! BACKUP Operation Event Type MASK def's ! literal BCK_EVENT_M_CONTROL = %X'1'; literal BCK_EVENT_M_ERROR_MSG = %X'2'; literal BCK_EVENT_M_FILE_OPEN = %X'4'; literal BCK_EVENT_M_FILE_READ = %X'8'; literal BCK_EVENT_M_FILE_WRITE = %X'10'; literal BCK_EVENT_M_FILE_CLOSE = %X'20'; literal BCK_EVENT_M_JOURNAL_OPEN = %X'40'; literal BCK_EVENT_M_JOURNAL_WRITE = %X'80'; literal BCK_EVENT_M_JOURNAL_CLOSE = %X'100'; literal BCK_EVENT_M_LIST_OPEN = %X'200'; literal BCK_EVENT_M_LIST_WRITE = %X'400'; literal BCK_EVENT_M_LISTJOUR_WRITE = %X'800'; literal BCK_EVENT_M_LIST_CLOSE = %X'1000'; literal BCK_EVENT_M_LOG = %X'2000'; literal BCK_EVENT_M_OP_PHASE = %X'4000'; literal BCK_EVENT_M_SAVESET_OPEN = %X'8000'; literal BCK_EVENT_M_SAVESET_READ = %X'10000'; literal BCK_EVENT_M_SAVESET_WRITE = %X'20000'; literal BCK_EVENT_M_SAVESET_CLOSE = %X'40000'; literal BCK_EVENT_M_STATISTICS = %X'80000'; literal BCK_EVENT_M_USER_MSG = %X'100000'; literal BCK_EVENT_M_CONVERT_FILENAME = %X'200000'; literal BCK_EVENT_M_ALL = %X'400000'; macro BCK_EVENT_V_CONTROL = 0,0,1,0 %; macro BCK_EVENT_V_ERROR_MSG = 0,1,1,0 %; macro BCK_EVENT_V_FILE_OPEN = 0,2,1,0 %; macro BCK_EVENT_V_FILE_READ = 0,3,1,0 %; macro BCK_EVENT_V_FILE_WRITE = 0,4,1,0 %; macro BCK_EVENT_V_FILE_CLOSE = 0,5,1,0 %; macro BCK_EVENT_V_JOURNAL_OPEN = 0,6,1,0 %; macro BCK_EVENT_V_JOURNAL_WRITE = 0,7,1,0 %; macro BCK_EVENT_V_JOURNAL_CLOSE = 0,8,1,0 %; macro BCK_EVENT_V_LIST_OPEN = 0,9,1,0 %; macro BCK_EVENT_V_LIST_WRITE = 0,10,1,0 %; macro BCK_EVENT_V_LISTJOUR_WRITE = 0,11,1,0 %; macro BCK_EVENT_V_LIST_CLOSE = 0,12,1,0 %; macro BCK_EVENT_V_LOG = 0,13,1,0 %; macro BCK_EVENT_V_OP_PHASE = 0,14,1,0 %; macro BCK_EVENT_V_SAVESET_OPEN = 0,15,1,0 %; macro BCK_EVENT_V_SAVESET_READ = 0,16,1,0 %; macro BCK_EVENT_V_SAVESET_WRITE = 0,17,1,0 %; macro BCK_EVENT_V_SAVESET_CLOSE = 0,18,1,0 %; macro BCK_EVENT_V_STATISTICS = 0,19,1,0 %; macro BCK_EVENT_V_USER_MSG = 0,20,1,0 %; ! ! Start for New callback event by R.Sato macro BCK_EVENT_V_CONVERT_FILENAME = 0,21,1,0 %; ! ! End for New callback event by R.Sato macro BCK_EVENT_V_ALL = 0,22,1,0 %; ! ! BACKUP Operation Event Subtypes ! literal BCKEVTST_K_MIN_EVENT = 1; literal BCKEVTST_K_CONFIRM_EVENT = 1; literal BCKEVTST_K_ASSIST_EVENT = 2; literal BCKEVTST_K_RESTART_EVENT = 3; literal BCKEVTST_K_MAX_EVENT = 1; ! ! Journal List Information ! macro bckLisJourblk = 0,0,0,0 %; literal bck_s_bckLisJourblk = 28; macro bck_R_LJ_SS_Name = 0,0,0,0 %; literal bck_S_LJ_SS_Name = 8; ! [Current] Saveset Filename macro bck_Q_LJ_SS_Date = 8,0,0,0 %; literal bck_S_LJ_SS_Date = 8; ! " Saveset Creation Date macro bck_R_LJ_Vol_Name = 16,0,0,0 %; literal bck_S_LJ_Vol_Name = 8; ! [Current] Volume Name macro bck_L_LJ_Vol_Number = 24,0,32,0 %; ! " Relative Volume Number ! ! BACKUP API Message structure definitions ! literal BCKMSGDESC_HDR_SIZE = 8; macro bckMsgDesc = 0,0,0,0 %; literal s_bckMsgDesc = 40; ! User-Supplied Message Descriptor macro msg_code = 0,0,32,0 %; ! Error/condition value macro FAOarg_count = 4,0,16,0 %; ! Number of FAO parameters macro new_msg_options = 6,0,16,0 %; ! Message options for the current msg. macro FAO_param = 8,0,0,0 %; literal S_FAO_param = 32; ! FAO parameters (<9 for backup msgs) literal BCKMSGVECT_HDR_SIZE = 4; macro bckMsgVect = 0,0,0,0 %; literal s_bckMsgVect = 84; ! Std. Message Argument Vector macro bckMsgVect_argcnt = 0,0,16,0 %; ! Number of msg descriptors macro bckMsgVect_defmsgopts = 2,0,16,0 %; ! Default message options macro bckMsgVect_msgdescs = 4,0,0,0 %; literal s_bckMsgVect_msgdescs = 80; ! VARIABLE LENGTH array ! (used [2] for C compiler compatibility) ! ! BACKUP API Control definitions ! literal bckCntrl_m_response_required = %X'1'; macro bckControl = 0,0,0,0 %; literal bckCntrl_s_bckControl = 32; macro bckCntrl_l_event = 0,0,32,0 %; ! control event type macro bckCntrl_l_function = 4,0,32,0 %; ! backup operation type macro bckCntrl_a_outmsgvect = 8,0,32,0 %; ! output messages and parameters macro bckCntrl_l_ctlflags = 12,0,32,0 %; ! flags macro bckCntrl_v_response_required = 12,0,1,0 %; ! response required = 1 macro bckCntrl_r_response_buffer = 16,0,0,0 %; literal bckCntrl_s_response_buffer = 8; ! desc. for buffer to which ! response text is to be written macro bckCntrl_l_response_status = 24,0,32,0 %; ! (reserved for future use) macro bckCntrl_l_control_options = 28,0,32,0 %; ! (reserved for future use) ! ! BACKUP Operation Control Event Types ! literal BCKCNTRL_K_MIN_EVENT = 1; literal BCKCNTRL_K_CONFIRM_EVENT = 1; literal BCKCNTRL_K_OPER_ASSIST_EVENT = 2; literal BCKCNTRL_K_USER_ASSIST_EVENT = 4; literal BCKCNTRL_K_RESTART_EVENT = 8; literal BCKCNTRL_K_MAX_EVENT = 8; ! ! backup operation type definitions ! literal BCK_OP_K_MIN = 1; literal BCK_OP_K_SAVE = 1; literal BCK_OP_K_RESTORE = 2; literal BCK_OP_K_COPY = 4; literal BCK_OP_K_LIST = 8; literal BCK_OP_K_COMPARE = 16; literal BCK_OP_K_MAX = 16; literal BCK_K_OP_MASK = 31; ! ! arg buffer items/options ! literal BCK_OPT_K_BCK_K_OPT_MIN = 0; ! ! NEVER REMOVE from the following list !!! (obsolete items will be denoted) ! ! Always ADD items to the END of the following list !!! ! (To maintain interface compatibility with prior versions) ! literal BCK_OPT_K_END_OPT = 0; literal BCK_OPT_K_ALIAS = 1; literal BCK_OPT_K_ASSIST = 2; literal BCK_OPT_K_BACKUP = 3; literal BCK_OPT_K_BEFORE_TYPE = 4; ! before_backup usage is /BEFORE=BACKUP literal BCK_OPT_K_BEFORE_VALUE = 5; literal BCK_OPT_K_BLOCK = 6; ! block_value literal BCK_OPT_K_CREATED = 7; literal BCK_OPT_K_CARTRIDGE_MEDIA_IN = 8; literal BCK_OPT_K_CARTRIDGE_NAME_IN = 9; literal BCK_OPT_K_CARTRIDGE_SIDE_IN = 10; literal BCK_OPT_K_CARTRIDGE_MEDIA_OUT = 11; literal BCK_OPT_K_CARTRIDGE_NAME_OUT = 12; literal BCK_OPT_K_CARTRIDGE_SIDE_OUT = 13; literal BCK_OPT_K_COMMAND = 14; literal BCK_OPT_K_COMMENT = 15; literal BCK_OPT_K_COMPARE = 16; literal BCK_OPT_K_CONFIRM = 17; literal BCK_OPT_K_CRC = 18; literal BCK_OPT_K_DELETE = 19; literal BCK_OPT_K_DENSITY = 20; literal BCK_OPT_K_DISMOUNT = 21; ! Note: ! Dismount is _NOT_ supported and _NOT_ implemented, (ignored), ! but is included here as a place-holder. literal BCK_OPT_K_DISPOSITION = 22; ! disp_keep ! disp_release literal BCK_OPT_K_DRIVE_CLASS_IN = 23; literal BCK_OPT_K_DRIVE_CLASS_OUT = 24; literal BCK_OPT_K_ENCRYPT = 25; literal BCK_OPT_K_ENCRYPT_USERALG = 26; literal BCK_OPT_K_ENCRYPT_USERKEY = 27; literal BCK_OPT_K_ENCRYPT_KEY_VALUE = 28; literal BCK_OPT_K_EVENT_CALLBACK = 29; literal BCK_OPT_K_EXACT_ORDER = 30; literal BCK_OPT_K_EXCLUDE = 31; literal BCK_OPT_K_EXPIRED = 32; literal BCK_OPT_K_FAST = 33; literal BCK_OPT_K_FILE_CALLBACK = 34; ! Note: ! File_callback is _NOT_ implemented, but is included here as a place-holder. ! literal BCK_OPT_K_FILEMERGE = 35; ! Note: ! Filemerge is _NOT_ supported and _NOT_ implemented, ! but is included here as a place-holder. ! literal BCK_OPT_K_FULL = 36; literal BCK_OPT_K_GROUP = 37; literal BCK_OPT_K_HANDLE = 38; literal BCK_OPT_K_IGNORE_TYPES = 39; ! ignore_access ! ignore_interlock ! ignore_label ! ignore_nobackup literal BCK_OPT_K_IMAGE = 40; literal BCK_OPT_K_INCREMENTAL = 41; literal BCK_OPT_K_INITIALIZE = 42; literal BCK_OPT_K_INPUT = 43; literal BCK_OPT_K_INTERCHANGE = 44; literal BCK_OPT_K_JOURNAL = 45; literal BCK_OPT_K_JOURNAL_FILE = 46; literal BCK_OPT_K_LABEL = 47; literal BCK_OPT_K_LIST = 48; literal BCK_OPT_K_LIST_FILE = 49; literal BCK_OPT_K_LOG = 50; literal BCK_OPT_K_MEDIA_FORMAT = 51; ! media_compaction ! media_no_compaction literal BCK_OPT_K_MODIFIED = 52; literal BCK_OPT_K_NEW_VERSION = 53; literal BCK_OPT_K_OPERATION_TYPE = 54; ! compare ! copy ! list ! save ! restore literal BCK_OPT_K_OUTPUT = 55; literal BCK_OPT_K_OVERLAY = 56; literal BCK_OPT_K_OWNER_IN_VALUE = 57; ! own_uic (value or default) literal BCK_OPT_K_OWNER_OUT_TYPE = 58; ! own_default ! own_original ! own_parent ! own_uic literal BCK_OPT_K_OWNER_OUT_VALUE = 59; literal BCK_OPT_K_PHYSICAL = 60; literal BCK_OPT_K_PROTECTION = 61; literal BCK_OPT_K_RECORD = 62; literal BCK_OPT_K_RELEASE_TAPE = 63; literal BCK_OPT_K_REPLACE = 64; ! rewind is now obsolete, please use either REWIND_IN or REWIND_OUT. literal BCK_OPT_K_REWIND = 65; ! rewind is now obsolete, please use either REWIND_IN or REWIND_OUT. literal BCK_OPT_K_REWIND_IN = 66; literal BCK_OPT_K_REWIND_OUT = 67; literal BCK_OPT_K_SAVE_SET_IN = 68; literal BCK_OPT_K_SAVE_SET_OUT = 69; literal BCK_OPT_K_SCRATCH_ASGN_TYPE = 70; literal BCK_OPT_K_SCRATCH_COLLECTION = 71; literal BCK_OPT_K_SCRATCH_LOCATION = 72; literal BCK_OPT_K_SCRATCH_MEDIA_NAME = 73; literal BCK_OPT_K_SELECT = 74; literal BCK_OPT_K_SINCE_TYPE = 75; ! since_backup usage is /SINCE=BACKUP literal BCK_OPT_K_SINCE_VALUE = 76; literal BCK_OPT_K_STORAGE_MANAGEMENT = 77; literal BCK_OPT_K_TAPE_EXPIRATION = 78; literal BCK_OPT_K_TRUNCATE = 79; literal BCK_OPT_K_VALIDATE_PARAMETERS = 80; literal BCK_OPT_K_VERIFY = 81; literal BCK_OPT_K_UNSHELVE = 82; literal BCK_OPT_K_VOLUME = 83; ! ! Items added in V7.2 ! literal BCK_OPT_K_SNAPSHOT = 84; literal BCK_OPT_K_CONVERT = 85; literal BCK_OPT_K_MT3_DENSITY = 86; ! ! Items added *after* V7.2 for HSM support ! Changed HSM to HSMHEADER_ONLY ! HSM was never used so I changed it because ! HSMHEADER_ONLY does the same thing that HSM was suppose ! to do literal BCK_OPT_K_HSMHEADER_ONLY = 87; ! Changed OPTIONS_IN AND OPTIONS_OUT to /HSMOPTIONS_* ! they were not used before and I put am using /HSMOPTIONS ! for the qualifier so we do not waste a good /OPTIONS qualifier literal BCK_OPT_K_HSMOPTIONS_IN = 88; literal BCK_OPT_K_HSMOPTIONS_OUT = 89; literal BCK_OPT_K_PRESHELVED = 90; literal BCK_OPT_K_SHELVED = 91; ! Item added for /FILES_SELECTED and /INPUT_FILES literal BCK_OPT_K_FILES_SELECTED_IN = 92; literal BCK_OPT_K_INPUT_FILES_IN = 93; literal BCK_OPT_K_DVE_LIMIT = 94; literal BCK_OPT_K_DVE_SIZE = 95; literal BCK_OPT_K_IO_LOAD = 96; literal BCK_OPT_K_PROGRESS = 97; literal BCK_OPT_K_REPAIR = 98; literal BCK_OPT_K_DATA_FORMAT = 99; literal BCK_OPT_K_DATA_FORMAT_COMPRESS = 100; literal BCK_OPT_K_NOCONVERT = 101; literal BCK_OPT_K_WINDOW_TYPES = 102; ! window_full ! window_limited ! ! NEVER REMOVE items from the above list !!! ! (obsolete items will be denoted) ! ! Always ADD items to the END of the above list !!! ! (To maintain interface compatibility with prior versions) ! literal BCK_K_OPT_MAX = 102; ! ! Flag Definitions for various Types of Options ! literal BCK_OPTYP_BEFORE_K_BACKUP = 1; ! usage is /BEFORE=BACKUP literal BCK_K_OPTYP_BEFORE_MASK = 1; literal BCK_OPTYP_RELTAPE_K_NONE = 0; literal BCK_OPTYP_RELTAPE_K_UNLOAD = 1; literal BCK_OPTYP_RELTAPE_K_NO_UNLOAD = 2; literal BCK_OPTYP_DISMOU_K_UNLOAD = 1; literal BCK_OPTYP_DISMOU_K_NO_UNLOAD = 2; literal BCK_OPTYP_DISP_K_KEEP = 1; literal BCK_OPTYP_DISP_K_RELEASE = 2; literal BCK_OPTYP_IGNORE_K_NOBACKUP = 1; literal BCK_OPTYP_IGNORE_K_INTERLOCK = 2; literal BCK_OPTYP_IGNORE_K_LABELS = 4; literal BCK_OPTYP_IGNORE_K_ACCESS = 8; literal BCK_OPTYP_IGNORE_K_LIMIT = 1024; literal BCK_K_OPTYP_IGNORE_MASK = 2047; literal BCK_OPTYP_MEDIA_K_COMPACTION = 1; literal BCK_OPTYP_MEDIA_K_NO_COMPACTION = 2; literal BCK_OPTYP_OWN_OUT_K_DEFAULT = 1; literal BCK_OPTYP_OWN_OUT_K_ORIGINAL = 2; literal BCK_OPTYP_OWN_OUT_K_PARENT = 3; literal BCK_OPTYP_OWN_OUT_K_UIC = 4; literal BCK_OPTYP_SCR_ASGN_K_BASE = 1; literal BCK_OPTYP_SCR_ASGN_K_COMPOUND = 2; literal BCK_OPTYP_SCR_ASGN_K_PREASGN = 4; literal BCK_OPTYP_SCR_ASGN_K_SIDE = 8; literal BCK_K_OPTYP_SCR_ASGN_MASK = 15; literal BCK_OPTYP_SINCE_K_BACKUP = 1; ! usage is /SINCE=BACKUP literal BCK_K_OPTYP_SINCE_MASK = 1; literal BCK_OPTYP_WINDOW_K_FULL = 1; literal BCK_OPTYP_WINDOW_K_LIMITED = 2; ! *** RESERVED FOR POSSIBLE FUTURE USE *** ! File name string format flags, (used to indicate non-escaped/non-generated ! file name strings that are compatible with QIO parameter calls). ! literal BCK_FNSTR_K_ODS2 = 1; literal BCK_FNSTR_K_EXTENDED = 2; literal BCK_FNSTR_K_UCS2 = 4; literal BCK_K_FNSTR_MASK = 7; ! ! Backup Option Structures, (used to specify backup operation attributes). ! literal bck_opt_struct_flag_k_len = 8; macro bck_opt_struct_flag = 0,0,0,0 %; literal s_bck_opt_struct_flag = 8; macro option_type = 0,0,32,0 %; ! type of option/operation macro opt_flag_value = 4,0,32,0 %; ! option flag(s) literal bck_opt_struct_int_k_len = 16; macro bck_opt_struct_int = 0,0,0,0 %; literal s_bck_opt_struct_int = 16; macro opt_int_type = 0,0,32,0 %; ! type of option/operation macro int_filler = 4,0,32,0 %; ! (Quadword alignment filler) macro opt_int_value = 8,0,0,0 %; literal s_opt_int_value = 8; ! 64-bit/32-bit integer ! Note: the 32-bit integer should be ! sign-extended into 2nd longword literal bck_opt_struct_adr_k_len = 16; macro bck_opt_struct_adr = 0,0,0,0 %; literal s_bck_opt_struct_adr = 16; macro opt_adr_type = 0,0,32,0 %; ! type of option/operation macro opt_adr_attributes = 4,0,32,0 %; ! Address Attributes (uses) macro opt_adr_value = 8,0,0,0 %; literal s_opt_adr_value = 8; ! 64-bit/32-bit address ! Note: the 32-bit address should be ! sign-extended into 2nd longword literal bck_opt_struct_dsc_k_len = 16; macro bck_opt_struct_dsc = 0,0,0,0 %; literal s_bck_opt_struct_dsc = 16; macro opt_dsc_type = 0,0,32,0 %; ! type of option/operation macro dsc_flags = 4,0,32,0 %; ! Flags & Quadword alignment macro opt_dsc = 8,0,0,0 %; literal s_opt_dsc = 8; ! 32-bit string descriptor literal bck_opt_struct_dsc_k_len64 = 32; macro bck_opt_struct_dsc64 = 0,0,0,0 %; literal s_bck_opt_struct_dsc64 = 32; macro opt_dsc64_type = 0,0,32,0 %; ! type of option/operation macro dsc64_flags = 4,0,32,0 %; ! Flags & Quadword alignment macro opt_dsc64 = 8,0,0,0 %; literal s_opt_dsc64 = 24; ! 64-bit string descriptor literal bck_opt_struct_dt_k_len = 16; macro bck_opt_struct_dt = 0,0,0,0 %; literal s_bck_opt_struct_dt = 16; macro opt_adt_type = 0,0,32,0 %; ! type of option/operation macro adt_filler = 4,0,32,0 %; ! (Quadword alignment filler) macro opt_adt_value = 8,0,0,0 %; literal s_opt_adt_value = 8; ! date-time (ADT)