*DECK DUDD
USETEXT COMCBEG 
USETEXT COMCAPR 
USETEXT COMCCAE 
USETEXT COMQDEF 
USETEXT COMQCAF 
USETEXT COMQFIL 
USETEXT COMQNET 
    PROC DUDD;
      BEGIN #DUDD#
# 
*     PROC DUDD - DECIDE ON FIP DD AND RPOS DD. 
* 
*     ENTRY FILEDDC = RFT-DD IF ANY RECIEVED, ELSE = C8.
*           FILERMH = REMOTE MAINFRAME TYPE.
* 
*     EXIT  FILEDDC = DD TO BE USED BY OUR FIP TO 
*           TRANSFER FILE.
*           AN RPOS-DD IS SENT IF NEEDED. 
*           FILEIDDC = DD TO BE SAVED WITH FILE (DSP-DD), 
*                    = "  ", IF NO EXPLICIT DD. 
* 
*     PROCESS 
*         SEE PCM00.
# 
  
# 
****  XREF BEGIN
# 
      XREF
        BEGIN 
        PROC APSTOR;
        FUNC DDC        I;
        PROC NAME;
        END 
  
# 
****  XREF END
# 
  
  
      STATUS RMHTYPE               # REMOTE HOST TYPE # 
           SAME                    # SAME (NS2 -> NS2, NBE -> NBE) #
          ,NS2NBE                  # NS2 -> NBE, NBE -> NS2 # 
          ,NOS1                    # NOS 1 #
          ,OTHER                   # OTHER #
          ; 
  
      SWITCH RMS:RMHTYPE
           RMS$SAME  :SAME
          ,RMS$NS2NBE:NS2NBE
          ,RMS$NOS1  :NOS1
          ,RMS$OTHER :OTHER 
          ; 
  
      ARRAY [0:RMHTYPE"OTHER"] S(1);
        BEGIN 
        ITEM RMH$C      C(00,00,03) = 
                 [HTSAME , HTNS2NBE ,   NOS , "***"]; 
        ITEM RMH$SW     S:RMHTYPE(00,42,18) = 
                 [S"SAME", S"NS2NBE", S"NOS1", S"OTHER"]; 
        END 
  
      SWITCH DSP$ICS
           DISPLAYX 
          ,ASCIIX 
          ,BINX 
          ,TRANSX 
          ; 
  
      ITEM RFT$DD     C(AT$DDL);   # DD RECEIVED ON RFT # 
      ITEM RPOS$DD    C(AT$DDL);   # DD TO SEND ON RPOS # 
      ITEM RTYPE      S:RMHTYPE;   # REMOTE HOST TYPE # 
  
        $BEGIN
        NAME("DUDD"); 
        $END
  
      RPOS$DD = "  ";              # ASSUME NO RPOS-DD #
      RFT$DD = FILEDDC;            # SAVE RFT DD #
      FILEIDDC = FILEDDC;          # SAVE PROVISIONAL DSP-DD #
      RMH$C[RMHTYPE"OTHER"] = FILERMH;
      RTYPE = 0;
      ASLONGAS RMH$C[RTYPE] NE RMH$C[RMHTYPE"OTHER"]
      DO
        BEGIN 
        RTYPE = RTYPE + 1;
        END 
  
      GOTO RMS[RTYPE];             # CASE MAINFRAME TYPE OF # 
  
RMS$OTHER:  
      FILEDDC = DD$US;             # SET PROVISIONAL DD # 
      IF     ( RFT$DD EQ DD$C6 )
         OR  ( RFT$DD EQ DD$C8 )
         OR  ( RFT$DD EQ "  "  )
      THEN
        BEGIN 
          GOTO DSP$ICS[FILEICS];
  
  DISPLAYX: 
          FILEDDC = DD$C6;         # RFT-DD WAS CHAR, NO RPOS-DD #
          IF FILEIDDC NE "  "      # IF EXPLICIT DD SPECIFIED # 
          THEN
            BEGIN 
            FILEIDDC = DD$C6;      # FILE SAVED IN C6 FORMAT #
            END 
  
          GOTO ICCASEEND; 
  
  ASCIIX: 
          FILEDDC = DD$C8;         # RFT-DD WAS CHAR, NO RPOS-DD #
          IF FILEIDDC NE "  "      # IF EXPLICIT DD SPECIFIED # 
          THEN
            BEGIN 
            FILEIDDC = DD$C8;      # FILE SAVED IN C8 FORMAT #
            END 
  
          GOTO ICCASEEND; 
  
  BINX: 
          RPOS$DD = DD$US;         # RFT-DD WAS CHAR, MODIFY #
          FILEIDDC = RPOS$DD; 
          GOTO ICCASEEND; 
  
  TRANSX: 
          RPOS$DD = DD$US;         # RFT-DD WAS CHAR, MODIFY #
          FILEIDDC = RPOS$DD; 
          GOTO ICCASEEND; 
  
  ICCASEEND:                       # END CASE DSP-IC OF # 
  
        END;
  
      GOTO MFCASEEND; 
  
RMS$SAME:                          # NOS2 -> NOS2, NBE -> NBE # 
      FILEDDC = DD$UH;
      RPOS$DD = DD$UH;
      GOTO MFCASEEND; 
  
RMS$NS2NBE:                        # NOS2 -> NBE, NBE -> NOS2 # 
      FILEDDC = DD$US;
      IF    (RFT$DD NE DD$UU) 
        AND (RFT$DD NE DD$US) 
      THEN
        BEGIN 
        RPOS$DD = DD$US;
        END;
  
      GOTO MFCASEEND; 
  
RMS$NOS1:                          # NOS 1 #
  
    CONTROL IFEQ OS$NOS;
      FILEDDC = DD$UH;
    CONTROL ENDIF;
  
    CONTROL IFEQ OS$NOSBE;
      FILEDDC = DD$US;
    CONTROL ENDIF;
  
      IF RFT$DD EQ DD$C8           # IF C8 SPECIFIED ON RFT # 
      THEN
        BEGIN 
          IF FILEICS EQ 1          # IF WE DECIDED FILE IS ASCII #
          THEN
            BEGIN 
            FILEDDC = DD$C8;       # USE C8 FOR NETXFR #
            END 
  
          ELSE
            BEGIN 
            FILEDDC = DD$C6;       # USE C6 FOR NETXFR #
            FILEIDDC = DD$C6;      # FILE SAVED IN C6 FORMAT #
            END 
  
        END 
  
      ELSE
        BEGIN 
        IF RFT$DD NE FILEDDC       # IF NETXFR-DD UNLIKE RFT-DD # 
        THEN
          BEGIN 
          RPOS$DD = FILEDDC;       # SEND RPOS DD # 
          END 
  
        END 
  
      GOTO MFCASEEND; 
  
MFCASEEND:   # END CASE MAINFRAME TYPE OF#
      IF RPOS$DD NE "  "           # IF NEED TO MODIFY DD # 
      THEN
        BEGIN 
        APSTOR(NTA$B,AT$DD,ATQ$M,AT$DDL,RPOS$DD); 
        END 
  
      IF FILEINT                   # IF INPUT FILE #
        AND (NOT FILELIDSH)        #   AND NOT STORE-FORWARD #
        AND (FILEDDC EQ DD$C8)     #   AND NETXFR-DD IS C8 #
      THEN
        BEGIN 
        FILEDDC = DD$C6;           # HOST INPUT FILES MUST BE C6 #
        IF FILEIDDC NE "  "        # IF EXPLICIT DD SPECIFIED # 
        THEN
          BEGIN 
          FILEIDDC = DD$C6;        # FILE SAVED IN C6 FORMAT #
          END 
  
        END 
  
      FILEXDD = DDC(FILEDDC); 
  
    END  # DUDD # 
TERM
