SFTP2, SCP2, SFTP2 server, and SCP server use SRI mapping to preserve case and characters that are not valid in filenames on OpenVMS ODS-2 disks.
OpenVMS disk filenames can be 39 characters long (as can file extensions) and include only the following characters: 0 through 9, A through Z, dollar sign ($), hyphen (-), and underscore (_).
The below table shows the default SRI International mapping.
ASCII character... |
Is mapped to... |
With octal value... |
Ctrl/A (soh) |
$4A |
001 |
Ctrl/B (stx) |
$4B |
002 |
Ctrl/C (etx) |
$4C |
003 |
Ctrl/D (eot) |
$4D |
004 |
Ctrl/E (enq) |
$4E |
005 |
Ctrl/F (ack) |
$4F |
006 |
Ctrl/G (bel) |
$4G |
007 |
Ctrl/H (bs) |
$4H |
010 |
Ctrl/I (ht) |
$4I |
011 |
Ctrl/J (nl) |
$4J |
012 |
Ctrl/K (vt) |
$4K |
013 |
Ctrl/L (np) |
$4L |
014 |
Ctrl/M (cr) |
$4M |
015 |
Ctrl/N (so) |
$4N |
016 |
Ctrl/O (si) |
$4O |
017 |
Ctrl/P (dle) |
$4P |
020 |
Ctrl/Q (dc1) |
$4Q |
021 |
Ctrl/R (dc2) |
$4R |
022 |
Ctrl/S (dc3) |
$4S |
023 |
Ctrl/T (dc4) |
$4T |
024 |
Ctrl/U (nak) |
$4U |
025 |
Ctrl/V (syn) |
$4V |
026 |
Ctrl/W (etb) |
$4W |
027 |
Ctrl/X (can) |
$4X |
030 |
Ctrl/Y (em) |
$4Y |
031 |
Ctrl/Z (sub) |
$4Z |
032 |
Ctrl/[ (esc) |
$6B |
033 |
Ctrl/(fs) |
$6C |
034 |
Ctrl/] (gs) |
$6D |
035 |
Ctrl/^ (rs) |
$6E |
036 |
Ctrl/_ (us) |
$6F |
037 |
SPACE (sp) |
$7A |
040 |
! |
$5A |
041 |
" |
$5B |
042 |
# |
$5C |
043 |
$ |
$$ (See Rule 8 in the following table.) |
044 |
% |
$5E |
045 |
& |
$5F |
046 |
' |
$5G |
047 |
( |
$5H |
050 |
) |
$5I |
051 |
* |
$5J |
052 |
+ |
$5K |
053 |
, |
$5L |
054 |
- |
same |
055 |
. |
. or $5N (See the following table.) |
056 |
/ |
not mapped (directory delimiter) |
057 |
0 to 9 |
same |
060 to 071 |
: |
$5Z |
072 |
; |
$7B |
073 |
< |
$7C |
074 |
= |
$7D |
075 |
> |
$7E |
076 |
? |
$7F |
077 |
@ |
$8A |
100 |
A to Z |
same |
101 to 132 |
[ |
$8B |
133 |
|
$8C |
134 |
] |
$8D |
135 |
^ |
$8E |
136 |
_ |
same |
137 |
` |
$9A |
140 |
a to z |
same |
141 to 172 |
{ |
$9B |
173 |
| |
$9C |
174 |
} |
$9D |
175 |
~ |
$9E |
176 |
DEL |
$9F |
177 |
octal 200 to ¿ |
$200 to $277 |
200 to 277 (Multinational) |
À to octal 377 |
$300 to $377 |
300 to 377 (Multinational) |
The SRI mapping filename translation rules in the below table are based on the character mapping scheme from above.
Rule |
What happens to filenames on OpenVMS... |
1 |
Lowercase characters become uppercase (unless Rule 2 applies; see also Rule 3): foobar.txt becomes FOOBAR.TXT;1 |
2 |
Initial uppercase characters or a sequence of case-shifted characters get a $ prefix: CaseShiftedFile becomes $C$ASE$S$HIFTED$F$ILE.;1 |
3 |
An unversioned file gets a version number preceded by a semicolon: foobar.txt becomes FOOBAR.TXT;1 |
4 |
If a filename does not include a file extension dot (.), it gets one before the version number semicolon: foobar becomes FOOBAR.;1 |
5 |
The first dot in a filename is preserved, unless the result fails the 39-character extension limit test in Rule 5 (if so, the dot becomes $5N). Each successive dot becomes $5N, unless the filename exceeds the limits in Rule 5. more.file.txt becomes MORE.FILE$5NTXT;1 |
6 |
If the filename is a directory name, each dot in it becomes $5N and the filename gets the .DIR extension: dot.directory.list becomes DOT$5NDIRECTORY$5NLIST.DIR;1 |
7 |
Invalid OpenVMS characters become the escape character sequences in the second column of the above table ($ followed by a digit and a letter): special#character&file becomes SPECIAL$5CCHARACTER$5FFILE.;1 (# becomes $5C and & becomes $5F) |
8 |
Any existing $ becomes $$ (plus any $ added due to Rule 2 or 8 above): dollar$Sign$5cfile becomes DOLLAR$$$S$IGN$$5CFILE.;1 |