*DECK FFSUSUV 
USETEXT TEXTFFS 
      PROC FFSUSUV(CALLTYPE); 
*CALL COPYRITE
# TITLE FFSUSUV - SET USER VALIDATION.                                # 
  
      BEGIN  # FFSUSUV #
  
# 
**    FFSUSUV - SET USER VALIDATION.
* 
*     FFSUSUV SETS THE USER VALIDATION FOR THE LOCAL (FTPI/FTPS 
*     CONTROL STATEMENT) ENVIRONMENT.  THIS IS NECESSARY SINCE
*     FTPS/FTPI RUNS AS AN SSJ= JOB WITH ITS OWN SPECIAL SYSTEM 
*     JOB ENVIRONMENT.
* 
*     CALLTYPE = 0:-
*     'FFSUSUV' SETS THE USER VALIDATIONS IN THE SSJ= BLOCK AND THE 
*     CONTROL POINT AREA VIA CPM. IT ALSE ISSUES THE SETPFP TO SET
*     THE PERMANENT FILE PERMISSIONS FOR THE ENTERED USER IN THE CPA. 
* 
*     CALLTYPE = 1:-
*     'FFSUSUV' SETS THE USER INDEX TO THE ONE IN THE PFB BLOCK HANDED
*     ACROSS BY FTP. THIS CALL IS ONLY USED BY FTPI - AND ONLY IN THE 
*     CASE OF A CALL WHICH HAS NO USER-NAME SPECIFIED. ALSO A SETPFP IS 
*     ISSUED FOR FAMILY NAME AND UI.
* 
*     DESCRIPTION.
* 
*       CALL SETPFP TO SET FAMILY/USER NUMBER/USER INDEX IN CONTROL 
*         POINT AREA TO VALIDATED VALUES. 
*       CALL SETVAL TO SET VALIDATION AND ACCESS LIMITS TO THOSE
*         OF NEW USER.
* 
*     RETURN. 
* 
# 
  
  
        ITEM CALLTYPE       U;       # 0 = NORMAL CALL, 1 = SET UI    # 
  
      XREF
        BEGIN 
        PROC FFSUCLR ;               # CLEAR MEMORY ROUTINE           # 
        PROC SETPFP;                 # SET PERMANENT FILE PARAMETERS  # 
        PROC SETUI;                  # SET USER INDEX                 # 
        PROC SETVAL;                 # SET USER VALIDATION PARAMETERS # 
        END 
  
      ARRAY ZEROFILL S(1) ; 
        BEGIN 
        ITEM ZEROWORD C(00,00,10) ; 
        ITEM ZERO     U(00,00,60) = [0] ; 
        END 
  
      BASED ARRAY DUMMYBA[0:0] ;; 
                                               CONTROL EJECT; 
      P<VAL$BLOCK> = LOC (JOB$VAL);    # POSITION VALIDATION TEMPALTE  #
  
# 
*     SET JOB PERMANENT FILE PARAMETERS.
# 
  
      P<PFB$FMT> = LOC (JOB$PFP);    # POSITION PFP BLOCK             # 
      FFSUCLR(LOC(JOB$PFP), PFP$LEN); 
      PFB$FAMILY = VAL$FAMILY;       # SET ACCOUNT FAMILY NAME        # 
      PFB$USEFAM = TRUE;
      PFB$USEPAK = FALSE;            # DO NOT ALTER PACK NAME         # 
      PFB$INDEX  = VAL$INDEX;        # SET ACCOUNT USER INDEX         # 
      PFB$USEIDX = TRUE;
      IF CALLTYPE EQ 0
      THEN
        BEGIN 
        PFB$USER   = VAL$USER;       # SET ACCOUNT USER NUMBER        # 
        PFB$USEUSR = TRUE;
        END 
      ELSE
        BEGIN 
        PFB$USEUSR = FALSE; 
        END 
      SETPFP (JOB$PFP);              # SET PERMANENT FILE PARAMETERS  # 
  
      IF CALLTYPE EQ 0
      THEN
        BEGIN 
        P<DUMMYBA> = LOC(VAL$ACCESS); 
        SETVAL (DUMMYBA);            # SET ACCOUNT ACCESS/VALIDATION  # 
        END 
      ELSE
        BEGIN 
        SETUI(VAL$INDEX); 
        VAL$PROJCT = JBC$PROJCT;
        VAL$PROJC2 = JBC$PROJC2;
        VAL$CHARGE = JBC$CHARGE;
        END 
  
      RETURN; 
  
      END    # FFSUSUV #
  
      TERM
