*DECK DMLPRV                                                            001010
      PROC DMLPRV(PRVFLAG,PRTYPE,IORD,EORD,OPTS,PRKEY1,PRKEY2,PRKEY3);
  BEGIN                                                                 001030
 #
* *   DMLPRV - PRIVACY INTERFACE ROUTINE
*     W. REHLING                                      10/25/77
* 
* DC  PURPOSE 
* 
*     ISSUE A PRIVACY REQUEST TO CDCS 
* 
* DC  ENTRY CONDITIONS
* 
* DC  PARAMETERS
* 
*     PRVFLAG  --  PRIVACY ROUTINE FLAGS
*       FTN5VAR - 1 - FORTRAN 5 PRIVACY VARIABLE
*       LITFLAG - 0 - PRIVACY VARIABLE OR FDBF 1.1
*                     PRIVACY LITERAL (1 PARAMETER) 
*                 1 - PRIVACY LITERAL (3-1 WORD PARAMETERS) 
* 
*     PRKEY1-3  --  PRIVACY KEY LITERAL OR ITEM ADDRESS 
*                   LITERAL - (3-1 WORD PARAMETERS) 
*                   VARIABLE OR FDBF 1.1 LITERAL - (ONE PARAMETER)
* 
*     PRTYPE  --  PRIVACY ELEMENT TYPE (1=REALM)
* 
*     EORD  --  AREA RECORD ORDINAL 
* 
*     IORD  --  ITEM ORDINAL (0 FOR REALM PRIVACY)
* 
*     OPTS  --  PRIVACY OPTIONS (40B=I, 20B=O, 60B=IO)
* 
* DC  ASSUMPTIONS 
* 
*     NONE
* 
* 
* DC  EXIT CONDITIONS 
* 
*     CONTROL IS RETURNED TO THE APPLICATION PROGRAM UPON 
*     RETURN FROM CDCS. IF A PRIVACY ERROR HAS OCCURRED, CONTROL
*     IS NOT RETURNED FROM CDCS.
* 
* DC  CALLING ROUTINES
* 
*     DMLPRV IS CALLED FROM THE APPLICATION PROGRAM 
*     AS A RESULT OF A DML PRIVACY STATEMENT. 
* 
* DC  CALLED ROUTINES 
* 
*     DB$PVC  --     CDCS PRIVACY INTERFACE ROUTINE 
*     DMLPRVC --     DML CHARACTER PRIVACY KEY ROUTINE
* 
* DC  NON-LOCAL VARIABLES 
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     A CALL TO DMLPRV IS GENERATED BY THE PREPASS AS A RESULT
*     OF A DML PRIVACY STATEMENT.  PRVFLAG CONTAINS FLAGS 
*     INDICATING ONE OR THREE PRIVACY KEY PARAMETERS AND THE
*     POSSIBLE EXISTANCE OF A CHARACTER DATA TYPE PARAMETER.
*     IF A CHARACTER DATA TYPE PRIVACY KEY IS PASSED, DMLPRVC IS
*     CALLED TO CONVERT AN OFF-WORD BOUNDARY PARAMETER TO AN ON-
*     WORD BOUNDARY PARAMETER (IF NECESSARY). DMLPRV ISSUES THE 
*     PRIVACY REQUEST TO CDCS AND RETURNS TO THE APPLICATION
*     PROGRAM.
 #
      CONTROL EJECT;                                                    001040
      CONTROL DISJOINT;                                                 001050
      CONTROL INERT;                                                    001060
                                                                        001070
# THE FOLLOWING ARE PARAMETERS FROM THE "PRIVACY" CALLING SEQUENCE     #001080
                                                                        001090
      ARRAY PRVFLAG S(1);        # PRIVACY ROUTINE FLAGS               #
        BEGIN 
        ITEM FILLER  U(0,0,58);  # UNUSED AREA                         #
        ITEM FTN5VAR B(0,58,1);  # FTN 5 VARIABLE - PRIVACY PARAMETER  #
        ITEM LITFLAG B(0,59,1);  # LITERAL FLAG - PRIVACY PARAMETER    #
        END 
      ITEM PRKEY   C(30);        # PRIVACY KEY LITERAL/ITEM ADDR (OUT) #
      ITEM PRKEY1  C(30);        # PRIVACY KEY LITERAL/ITEM ADDR (IN)  #
  
                                 # WARNING:  DO NOT REFERENCE THE      #
                                 #           FOLLOWING UNLESS LITFLAG  #
                                 #           IS SET                    #
      ITEM PRKEY2  C(10);        # PRIVACY LITERAL ADDRESS (IN)        #
      ITEM PRKEY3  C(10);        # PRIVACY LITERAL ADDRESS (IN)        #
  
      ITEM PRTYPE;               # PRIVACY ELEMENT TYPE (1=REALM/AREA) #001140
      ITEM EORD;                 # AREA/RECORD ORDINAL                 #001150
      ITEM IORD;                 # ITEM ORDINAL (0 FOR REALM PRIV)     #001160
      ITEM OPTS;                 # PRIVACY OPTIONS(40B=I,20B=O,60B=IO) #
                                                                        001180
      XREF                       #-----------------XREFS---------------#
        BEGIN 
        PROC DB$PVC;             # PRIVACY INTERFACE ROUTINE           #
        PROC DMLPRVC;            # DML CHARACTER PRIVACY KEY ROUTINE   #
        END 
  
                                 #----------LOCAL ITEMS----------------#
      ITEM SHIFTPK     C(30);    # SHIFTED PRIVACY KEY - DMLPRVC       #
      CONTROL EJECT;                                                    001220
                                                                        001230
#     INSERT PRIVACY KEY LITERAL/VARIABLE ADDRESS INTO CALL            #
  
      IF LITFLAG                 # IF WE HAVE THREE LITERAL PARAMETERS #
      THEN
        BEGIN 
        C<0,10>PRKEY = C<0,10>PRKEY1;  # MOVE THE LITERAL INTO CALL    #
        C<10,10>PRKEY = PRKEY2; 
        C<20,10>PRKEY = PRKEY3; 
        END 
      ELSE                       #                  ELSE               #
        BEGIN 
        IF FTN5VAR               # CHECK FOR FTN 5 PRIVACY VARIABLE    #
        THEN
          BEGIN 
          DMLPRVC(PRKEY1,SHIFTPK);  # CALL ROUTINE TO PLACE CHARACTER  #
                                    # VARIABLE ON WORD BOUNDARY        #
          PRKEY = SHIFTPK;       # MOVE VARIABLE TO CALL STATEMENT     #
          END 
        ELSE                     #             ELSE                    #
          BEGIN 
          PRKEY = PRKEY1;        # MOVE THE FDBF 1.1 VARIABLE OR       #
                                 # LITERAL INTO CALL STATEMENT         #
          END 
        END 
  
# ISSUE PRIVACY REQUEST PASSING THE REARRANGED PARAMETERS              #001240
                                                                        001250
      DB$PVC(PRKEY,PRTYPE,EORD,IORD,OPTS);                              001260
                                                                        001270
# *** ON PRIVACY ERROR, JOB ABORTS - DOES NOT RETURN HERE ***          #001280
                                                                        001290
      RETURN;                                                           001300
      END                                                               001310
TERM                                                                    001320
