%OCT
Return an octal string representation of a numeric value
WSupported on Windows
|
USupported on Unix
|
VSupported on OpenVMS
|
NSupported in Synergy .NET
|
string = %OCT(value[, magnitude])
Return value
string
The octal string representation of value. (a)
Arguments
value
The value to convert to an octal character string. (n)
magnitude
(optional) A value that determines the number of characters in the returned string, as follows: (n)
1 = 3-character string for an 8-bit value
2 = 6-character string for a 16-bit value
4 = 11-character string for a 32-bit value
8 = 22-character string for a 64-bit value
Discussion
%OCT converts a decimal data value to a 32-bit longword value.
If magnitude is not present or if it contains a value other than 1, 2, 4, or 8, the resulting string is 11 characters long (if value can be represented in 32 bits) or 22 characters long (if value cannot be represented in 32 bits).
Examples
The following example builds and spawns a command string to check for the protection mode of a specific file. The protection modes are stored in a file named chkmod.txt.
function chk_mode a_file ,a .define MODCHN ,18 .define MODFIL ,"WRK:chkmod.txt" record string ,a80 slen ,d2 file ,a30 modes ,a9 value ,d9 i ,i1 proc file = a_file open(MODCHN, i, a_file) [err=nofile] ;Does file exist? close MODCHN xcall s_bld(string, slen, "ls -salt %A >%A", a_file, MODFIL) xcall spawn(string) ;Get full listing clear string file = MODFIL open(MODCHN, i, MODFIL) [err=nofile] reads(MODCHN, string, nofile) modes = string(5:9) ;Get protection modes (check position!) for i from 1 thru 9 value(i:1) = .not.(modes(i:1).eq.'-') freturn %oct(value, 1) nofile, writes(TTCHN, "Error: " + file + " not found") freturn ("-1") endfunction