	Subroutine FTP$Set
c
	Include 'FTP$DEVINFO.FOR'
	Include 'FTP$FLAGS.FOR'
	Include 'FTP$TRANSTBL.FOR'
c
c	*** FTP error messages
c
	External	FTP$_INVRECCHR
	External	FTP$_INVBLKCHR
	External	FTP$_INVRECSIZ
	External	FTP$_INVBLKSIZ
	External	FTP$_RECNOTMULT
	External	LIB$AB_ASC_EBC
	External	LIB$AB_EBC_ASC
c
	Character*255	String
c
	Integer		CLI$Get_Value,		CLI$Present
	Integer		TMP$PADCHAR,		TMP$BUFSIZ
	Integer		TMP$RECSIZ
	Integer		SLen,			Status
c
10	Format( I10 )
c
	If ( CLI$Present('TRANSLATION.ASCII_TO_EBCDIC') ) Then
	    FTP$ASCEBC_FLG = .True.
	    FTP$EBCASC_FLG = .False.
	    FTP$OTHER_FLG = .False.
	    FTP$TRANSLATE_FLG = .True.
	    Call FTP$LOAD_TABLE( FTP$TRANS_TABLE, LIB$AB_ASC_EBC )
	Else If ( CLI$Present('TRANSLATION.EBCDIC_TO_ASCII') ) Then
	    FTP$ASCEBC_FLG = .False.
	    FTP$EBCASC_FLG = .True.
	    FTP$OTHER_FLG = .False.
	    FTP$TRANSLATE_FLG = .True.
	    Call FTP$LOAD_TABLE( FTP$TRANS_TABLE, LIB$AB_EBC_ASC )
	Else If ( CLI$Present('TRANSLATION.OTHER') ) Then
	    Call CLI$Get_Value('TRANSLATION.OTHER', String, Slen)
	    Call FTP$READ_TABLE(FTP$TRANS_TABLE, String(:Slen), Status)
	    If ( Status ) Then
		FTP$ASCEBC_FLG = .False.
		FTP$EBCASC_FLG = .False.
		FTP$OTHER_FLG = .True.
		FTP$TRANSLATE_FLG = .True.
	    End If
	Else If ( CLI$Present('TRANSLATION.NONE') ) Then
	    FTP$TRANSLATE_FLG = .False.
	    FTP$ASCEBC_FLG = .False.
	    FTP$EBCASC_FLG = .False.
	    FTP$OTHER_FLG = .False.
	Else If ( CLI$Present( 'PAD_CHARACTER' ) ) Then
	    If (CLI$Present('PAD_CHARACTER.RECORD')) Then
		Call CLI$Get_Value('PAD_CHARACTER.RECORD', String, Slen)
		Read(String(:Slen),10) TMP$PADCHAR
		If ((TMP$PADCHAR.gt.127).or.(TMP$PADCHAR.lt.0)) Then
		    Call Lib$Signal( FTP$_INVRECCHR )
		Else
		    FTP$REC_PADCHAR = TMP$PADCHAR
		End If
	    End If
	    If ( CLI$Present( 'PAD_CHARACTER.BLOCK' ) ) Then
		Call CLI$Get_Value('PAD_CHARACTER.BLOCK', String, Slen)
		Read(String(:Slen),10) TMP$PADCHAR
		If ((TMP$PADCHAR.gt.127).or.(TMP$PADCHAR.lt.0)) Then
		    Call Lib$Signal( FTP$_INVBLKCHR )
		Else
		    FTP$BLK_PADCHAR = TMP$PADCHAR
		End If
	    End If
	Else If ( CLI$Present('BLOCK_SIZE') ) Then
	    Call CLI$Get_Value('BLOCK_SIZE', String, Slen)
	    Read(String(:SLen),10) TMP$BUFSIZ
	    If ((TMP$BUFSIZ .lt. 14).or.(TMP$BUFSIZ .gt. 65535)) Then
		Call Lib$Signal( FTP$_INVBLKSIZ )
	    Else
		FTP$BUFSIZ = TMP$BUFSIZ
	    End If
	Else If ( CLI$Present('RECORD_SIZE') ) Then
	    Call CLI$Get_Value('RECORD_SIZE', String, Slen)
	    Read(String(:Slen),10) TMP$RECSIZ
	    If ((TMP$RECSIZ.lt.1).or.(TMP$RECSIZ.gt.FTP$BUFSIZ)) Then
		Call Lib$Signal(FTP$_INVRECSIZ,%Val(1),%Val(FTP$BUFSIZ))
	    Else
		FTP$RECSIZ = TMP$RECSIZ
	    End If
	Else If (CLI$Present( 'CARRIAGE_CONTROL.LIST' )) Then
	    FTP$CARRIAGE_CONTROL = 'LIST    '
	Else If (CLI$Present( 'CARRIAGE_CONTROL.FORTRAN' )) Then
	    FTP$CARRIAGE_CONTROL = 'FORTRAN '
	Else If (CLI$Present( 'CARRIAGE_CONTROL.NONE' )) Then
	    FTP$CARRIAGE_CONTROL = 'NONE    '
	End If
c
	Return
	End
