*DECK     DCMREL  - RELOCATE AND LINK A MAPPING CAPSULE.
          IDENT  DC$MREL
          LIST   F,X
          TITLE  DC$MREL - RELOCATE AND LINK A MAPPING CAPSULE. 
          COMMENT   RELOCATE AND LINK A MAPPING CAPSULE.
 DC$MREL  SPACE  4,8
**        DC$MREL - RELOCATE AND LINK A MAPPING CAPSULE.
* 
*         R. H. GOODELL.     76/12/07.
* 
*         DC$MREL RELOCATES AND LINKS A RECORD OR KEY MAPPING CODE
*         CAPSULE SO THAT IT CAN BE EXECUTED BY *CDCS*. 
*         WHEN DB$MCAP HAS JUST READ A MAPPING CAPSULE INTO MANAGED 
*         MEMORY, IT CALLS DC$MREL WHICH IN TURN CALLS FDL.REL TO 
*         RELOCATE THE INSTRUCTION ADDRESSES WITHIN THE CAPSULE AND 
*         FILL IN THE LOCATIONS OF COMMUNICATION CELLS IN *CDCS*, 
*         WHICH ARE CODED AS EXTERNAL REFERENCES IN THE CAPSULES. 
*         DC$MREL MOSTLY CONSISTS OF *PASSLOC* TABLES FOR PROVIDING 
*         THESE SYMBOL NAMES AND LOCATIONS TO THE MAPPING CAPSULES. 
* 
*         ENTRY (DB$MFWA) = CAPSULE FIRST WORD ADDRESS. 
* 
*         EXIT  (DB$MERR) = STATUS RETURNED FROM *FDL*. 
*                            0 = NO ERROR.
*                            4 = BAD CAPSULE FORMAT.
*                            5 = BAD PASSLOC FORMAT.
* 
*         USES   ALL. 
* 
*         CALLS  FDL.REL. 
  
  
 DC$MREL  SUBR   =           ENTRY/EXIT 
          SA2    =XDB$MFWA   (X2) = CAPSULE FWA 
          SX4    PL          (X4) = PASSLOC LIST FWA
          SX2    X2 
          RJ     =XFDL.REL   FAST DYNAMIC LOADER, RELOCATE+LINK FUNCTION
          SA6    =XDB$MERR   STORE FDL STATUS 
          JP     EXIT.       RETURN 
 PASSLOC  SPACE  4,8
**        PASSLOC LISTS.
  
  
 PL       BSS    0
          CON    DC$CMBF     COMMON CELLS IN DC$BTOF/DC$FTOF
          CON    DC$CMFD     COMMON CELLS IN DC$FTOD
          CON    DB$XXXX     EXTERNAL DATA
          CON    DC$XXXX     OTHER DATA 
          CON    ROUTINES    ROUTINES 
          CON    0
  
  
*         MACRO FOR GENERATING PASSLOC LIST.
  
  
 PL       MACRO  P
 L        MICRO 
          IRP    P
 L        MICRO  1,,*"L",(P,,,P)* 
          IRP 
 L        MICRO  2,,*"L"* 
          LDREQ  PASSLOC,("L")
          ENDM
  
*                PASSLOC VARIABLES MUST BE IN ALPHABETICAL ORDER        000220
  
*         PASSLOC LISTS FOR COMMON DATA.
  
 DC$CMBF  PL  (DOUBLE,EXPONEN,FLAGDBL,LOWINT,RETURNC,SIGN,SINGLE,UPINT) 
 DC$CMFD  PL     (ADDRSR,CRETURN,DBLFGSR,DECPTTG,DISPCTG,SGNPLTG) 
  
*         PASSLOC LIST FOR EXTERNAL DATA. 
  
 DB$XXXX  PL     (DB$MBUF,DB$MDCA,DB$MDCC,DB$MDCU,DB$MDCX,DB$MDNA,DB$MER
,F,DB$MERP,DB$MFIT,DB$MIOR,DB$MKEY,DB$MLEN,DB$MMOD,DB$MRBF,DB$MROR,DB$MS000240
,SO,DB$MSUB)                                                            000250
  
*         PASSLOC LIST FOR OTHER DATA.
  
 DC$XXXX  PL     (DC$MSCH,DC$MSCR,DC$SBBP,DC$SBWP,DC$SFWA,DC$TBBP,DC$TBW
,P,DC$TFWA) 
  
*         PASSLOC LIST FOR ROUTINES CALLED BY CAPSULES. 
  
 ROUTINES PL     (DB$DPII,DC$BTOF,DC$CMPR,DC$CONV,DC$DBLA,DC$FTOD,DC$FTO
,F,DC$MBIT,DC$MWD,DC$NLFL,DC$XFER)
 COMMON   SPACE  4,8
**        COMMON DATA.
  
  
          USE    /DC$CMBF/
*                      COMMUNICATION TO DC$BTOF 
 UPINT    BSS    1           UPPER 54 BITS OF 108-BIT INTEGER 
 LOWINT   BSS    1           LOWER 54 BITS
 EXPONEN  BSS    1           SCALING FACTOR, POWER OF 10
 SIGN     BSS    1           SIGN -- +0 OR -0 
 FLAGDBL  BSS    1           IF DOUBLE PRECISION RESULT DESIRED 
*                      COMMUNICATION FROM DC$BTOF AND DC$FTOF 
 SINGLE   BSS    1           SINGLE PRECISION RESULT
 DOUBLE   BSS    1           DOUBLE PRECISION RESULT
 RETURNC  BSS    1           RETURN CODE (0=OKAY, 66B=SIGNIF. LOST) 
  
  
          USE    /DC$CMFD/
*                      COMMUNICATION TO DC$FTOD 
 ADDRSR   BSS    1           LOC SOURCE 
 DBLFGSR  BSS    1           IF SOURCE IS DOUBLE PRECISION
*                      COMMUNICATION FROM DC$FTOD 
 DISPCTG  BSS    2           18-CHARACTER RESULT
 DECPTTG  BSS    1           DECIMAL POINT POSISION OF RESULT 
 SGNPLTG  BSS    1           SIGN OF RESULT -- +1 OR -1 
 CRETURN  BSS    1           RETURN CODE (0=OKAY, 667B=INFINITE/INDEF.) 
  
  
          USE    0
 EXTERNAL SPACE  4,8
**        EXTERNAL DATA.
**        EXTERNAL DATA LIST MUST BE IN ALPHABETICAL ORDER.             000170
  
  
          EXT    DB$MBUF     FWA OF 26-WORD SCRATCH AREA FOR KEY MAPPERS
          EXT    DB$MDCA     DISPLAY CODE TO ASCII COLLATING SEQUENCE 
          EXT    DB$MDCC     DISPLAY CODE TO COBOL COLLATING SEQUENCE 
          EXT    DB$MDCU     DISPLAY CODE TO USER  COLLATING SEQUENCE 
          EXT    DB$MDCX     DISPLAY CODE TO DISPLAY CODE COLLATING SEQ.
          EXT    DB$MDNA     DATA-NAME ADDRESS (FOR RESTRICT ITEM MAP)
          EXT    DB$MERF     MAPPING ERROR FLAG 
          EXT    DB$MERP     FWA OF DB$DPII APLIST FOR ITEM-LEVEL 
                                   ERROR DATA-BASE-PROCEDURES 
          EXT    DB$MFIT     FWA OF FIT FOR MAPPING ROUTINES
          EXT    DB$MIOR     ITEM ORDINAL (FOR KEY AND RESTRICT ITEM
                                   MAPPING) 
          EXT    DB$MKEY     KEY MAPPER MODE. 0=RESTRICT ITEM, 1=KEY
          EXT    DB$MLEN     LENGTH (WORDS) OF SUBSCHEMA RECORD WSA 
          EXT    DB$MMOD     WRITE/REWRITE MODE. 0=STORE, 1=MODIFY
          EXT    DB$MRBF     RESULT IN BUFFER FLAG
          EXT    DB$MROR     RECORD ORDINAL (FOR KEY AND RESTRICT 
                                   ITEM MAPPING)
          EXT    DB$MSSO     SUBSCHEMA ITEM ORDINAL                     000190
          EXT    DB$MSUB     FWA OF SUBSCHEMA RECORD WSA
 OTHER    SPACE  4,8
**        OTHER DATA. 
  
  
 DC$MSCH  BSS    1           FWA OF SCHEMA RECORD WSA (FROM FIT)
 DC$MSCR  BSS    26          SCRATCH AREA FOR RECORD MAPPING CAPSULES 
 DC$SBBP  BSS    1           SOURCE ITEM BEGINNING BIT POSITION 
 DC$SBWP  BSS    1           SOURCE ITEM BEGINNING WORD POSITION
 DC$SFWA  BSS    1           SOURCE ITEM FIRST WORD ADDRESS 
 DC$TBBP  BSS    1           TARGET ITEM BEGINNING BIT POSITION 
 DC$TBWP  BSS    1           TARGET ITEM BEGINNING WORD POSITION
 DC$TFWA  BSS    1           TARGET ITEM FIRST WORD ADDRESS 
 ROUTINES SPACE  4,8
**        ROUTINES CALLED BY CAPSULES.
  
  
          EXT    DB$DPII     DATABASE-PROCEDURES INTERFACE, ITEM-LEVEL
          EXT    DC$BTOF     CONVERT BINARY INTEGER TO FLOATING POINT 
          EXT    DC$CMPR     COMPARE VALUES 
          EXT    DC$CONV     CONVERT VALUE
          EXT    DC$DBLA     DOUBLE PRECISION ADDITION
          EXT    DC$FTOD     CONVERT FLOATING POINT TO DECIMAL DISPLAY
          EXT    DC$FTOF     CONVERT FLOATING POINT TO FLOATING POINT 
          EXT    DC$MBIT     MOVE BIT STRING
          EXT    DC$MWD      MOVE WORDS 
          EXT    DC$NLFL     NULL-FILL
          EXT    DC$XFER     TRANSFER DATA
  
  
          END 
