Google
 

Trailing-Edge - PDP-10 Archives - BB-JF18A-BM - sources/diu/diutlb.bli
There are 4 other files named diutlb.bli in the archive. Click here to see a list.
%TITLE 'DIU Transform Structure Library'
!++
!	COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1986.
!	ALL RIGHTS RESERVED.
!
!	THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY  BE  USED  AND
!	COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH
!	THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.   THIS  SOFTWARE  OR
!	ANY  OTHER  COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE
!	AVAILABLE TO ANY OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE
!	SOFTWARE IS HEREBY TRANSFERRED.
!
!	THE INFORMATION IN THIS SOFTWARE IS  SUBJECT  TO  CHANGE  WITHOUT
!	NOTICE  AND  SHOULD  NOT  BE CONSTRUED AS A COMMITMENT BY DIGITAL
!	EQUIPMENT CORPORATION.
!
!	DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF
!	ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.
!
!   FACILITY: Data Interchange Utility (DIU)
!
!   ABSTRACT: DIUMLB is the library of definitions and data structures
!             used by the Mapping routines (see module DIUMAP).
!
!   AUTHOR: Sandy Clemens, Creation Date: 25-Oct-84
!
!   EDIT HISTORY:
!
!       3	Clean up copyright notices.  Change 6-char macros
!               to reflect changes in other modules.
!		Sandy Clemens	14-Jun-85
!
!       10	Make default transform generation code use the DIU top level
!               condition handler rather than DIU$TRANS_HANDLER.
!               Sandy Clemens	20-Jun-85
!
!       14      Add transform execution code and conversion warnings report
!               code.  FILES:  DIUETR.BLI (NEW), DIUCSR.BLI (NEW), DIUDMP.BLI,
!               DIUABO.B36, INTFAC.BLI, DIUTLB.BLI.
!               Sandy Clemens	15-Jul-85
!
!       23	Remove DIU$CDD_EXTRACT from DIUTUT module and put it
!               into INTFAC.  It's only part of INTFAC, not DIU.  It was
!               commented out of DIUTLB anyway...  FILES: INTFAC.BLI,
!               DIUTUT.BLI, DIUTLB.BLI.
!               Sandy Clemens	18-Jul-85
!
!	25	Allow initial values of dimensionned fields.
!		Charlotte Richardson	13-Aug-85
!
!  236  Change library of DIXLIB to DIUDIX.
!       Sandy Clemens  19-Jun-86
!
!--

%BLISS32 (LIBRARY 'SYS$LIBRARY:XPORT';)

%BLISS36 (LIBRARY 'BLI:XPORT';)

LIBRARY 'DIUDIX';

! define literal for debugging
LITERAL diu$k_tra_debug = 0;            ! set to ON for debug, OFF for nodebug

! Define literals to indicate whether the transforms source FFD is an
! initial value FFD, not a usual FFD which points at a source field. 
! If the source FFD points to an initial value field, then set TRA_OPCODE
! field to DIU$K_INITIAL.

LITERAL diu$k_no_initial = 0,
        diu$k_initial = 1;

! define literals for move-matching and move-others-matching flags
LITERAL diu$k_mov_mat = 0,
        diu$k_mov_others = 1;

! define the structure IDs

LITERAL diu$k_transform = 100,
	diu$k_dimsnode = 101;

! Define literal for PRO operating system type.  Note that DIU knows about PRO,
! but DIL doesn't.  In order to talk to the DIL, a user must first change PRO
! operating system type to SYS_8BIT.  SYS_8BIT, SYS_LCG and SYS_MAX are defined
! in DIL module DIXLIB.

LITERAL sys_pro = sys_max + 1;

! Define the dims structure.  The dims structure is a linked list of addresses
! of the start of each dimension list that applies to this field.

$FIELD dims_flds =
       SET
       dims$a_next = [$ADDRESS],        ! next DIMS node
       dims$a_previous = [$ADDRESS],    ! backpointer to previous DIMS node
       dims$b_id = [$BYTE],             ! node ID fld at same offset as CRX id fields
       dims$b_dimensions_cnt = [$BYTE], ! number of dimensions
       dims$a_list = [$ADDRESS],        ! pointer to first CRX dimension node
       dims$l_tot_cells = [$INTEGER]    ! the total number of cells in the array
       TES;

LITERAL dims$k_size = $FIELD_SET_SIZE;

MACRO dims = BLOCK [dims$k_size]
             FIELD (dims_flds) % ;

! define the transform structure

$FIELD tra_fields =

       SET
       tra_next = [$ADDRESS],                   ! addr of next transform node
       tra_id = [$BYTE],                        ! always = DIU$K_TRANSFORM
       tra_src_addr = [$ADDRESS],		! address of the node in the
						! src record def tree
       tra_src_nam = [$ADDRESS],    		! addr of fully qualified name
						! of field (crx stringlist str)
       tra_src_dims = [$ADDRESS],		! address of a dims structure (defined above)
       tra_src_ffd = [$SUB_BLOCK(0)],
       ffd_flds ('tra_src'),                    ! define 'tra_src' ffd -- see DIXLIB
       $ALIGN (FULLWORD)
       tra_dst_addr = [$ADDRESS],		! address of the node in the
						! dst record def tree
       tra_dst_nam = [$ADDRESS],    		! addr of fully qualified name
						! of field (crx stringlist str)
       tra_dst_dims = [$ADDRESS],		! address of a dims structure (defined above)
       tra_dst_ffd = [$SUB_BLOCK(0)],
       ffd_flds ('tra_dst'),                    ! define 'tra_dst' ffd -- see DIXLIB
       $ALIGN (FULLWORD)
       tra_err_codes = [$SUB_BLOCK (9)],
       $OVERLAY (tra_err_codes)         ! string error codes
       tra_str_rounded = [$INTEGER],
       tra_str_unimp = [$INTEGER],      ! note all 3 "unimp" codes are at the
       tra_str_graphic = [$INTEGER],    ! same offset for each sub_block.  if
       tra_str_fmtlost = [$INTEGER],    ! this changes there may be problems...
       tra_str_nonprint = [$INTEGER],
       tra_str_trunc = [$INTEGER],
       tra_str_invalchar = [$INTEGER],
       tra_str_fill = [$SUB_BLOCK(2)],
       $CONTINUE
       $OVERLAY (tra_err_codes)         ! fixed-point error codes
       tra_fix_rounded = [$INTEGER],
       tra_fix_unimp = [$INTEGER],
       tra_fix_toobig = [$INTEGER],
       tra_fix_impossible = [$INTEGER],
       tra_fix_unsigned = [$INTEGER],
       tra_fix_invdnumchr = [$INTEGER],
       tra_fix_invdnumsgn = [$INTEGER],
       tra_fix_invpddgt = [$INTEGER],
       tra_fix_invpdsgn = [$INTEGER],
       $CONTINUE
       $OVERLAY (tra_err_codes)         ! floating-point error codes
       tra_fp_rounded = [$INTEGER],
       tra_fp_unimp = [$INTEGER],
       tra_fp_toobig = [$INTEGER],
       tra_fp_unnorm = [$INTEGER],
       tra_fp_impossible = [$INTEGER],
       tra_fp_fill = [$SUB_BLOCK(4)],
       $CONTINUE
       tra_worst = [$INTEGER],          ! most severe warning for this field
       tra_opcode = [$ADDRESS]
       TES;

LITERAL tra_size = $field_set_size;

MACRO transform_str = BLOCK [tra_size]
                      FIELD (tra_fields) %;
! Define routine name equivalences for TOPS-10/20 LINK...

%IF %BLISS (BLISS36) %THEN
MACRO
DIU$DEL_DIMS = DELDIM %,
DIU$DEL_TRANS_NODE = DELTND %,
DIU$DEL_TRANS_LIST = DELTRA %,
DIU$CLEAN_TRANS = CLETRA %,
DIU$DUMP_DIMS = DMPDIM %,
DIU$DUMP_FQN = DMPFQN %,
DIU$DMP_TRA_SRC = DMPTRS %,
DIU$DMP_TRA_DST = DMPTRD %,
DIU$DUMP_TRANSFORM = DMPTRA %,
DIU$COPY_DIMS = COPDIM %,
DIU$COPY_FQN = COPFQN %,
DIU$TRAVERSE_SUBTREE = SUBTRV %,
DIU$TRAVERSE_TREE = TRETRV %,
DIU$MAP_FROM_CDD = FROCDD %,
DIU$MAP_FROM_DTR = FRODTR %,
DIU$MAP_FROM_DIL = FRODIL %,
DIU$MAP_DATATYPES = MAPDTP %,
CHECK_DIMS = CHKDMS %,
CHECK_FQNS = CHKFQN %,
CHECK_MATCH = CHKMAT %,
DIU$MATCH_TRANS = MATTRA %,
DIU$DEF_TRANS = DEFTRA %,
DIU$MOVE_MAT = MOVMAT %,
DIU$OFFSETS = DIUOFS %,
DIU$RECORD_OFFSETS = RECOFF %,
DIU$DIX_PORTAL = DIXPRT %,
DIU$MAKE_FFDS = MAKFFD %,
DIU$LOAD_TRANS = LODTRA %,
DIU$UPDATE_FFD = UPDFFD %,
DIU$CHECK_DEP_ITM = CHKDEP %,
DIU$PROCESS_DIMENS = PRODMN %,
DIU$EXECUTE_TRANS = EXETRA %,
SINGLE_FQN_NAME = SNGNAM %,
DIU$DIXERR_HANDLER = DIXERR %,
DIU$CONV_STATS = CVSTAT %;
%FI