When you create
SAS/ACCESS descriptor files from
ADABAS data, the ACCESS procedure converts
data field types and lengths to default SAS variable formats and informats.
The following summary
information will help you understand the data conversion.
-
The
ADABAS interface view engine uses
ADABAS standard length and type for reading and updating
ADABAS data (except for variable-length
fields and DB Content overrides). NATURAL DDMs have no effect other
than to use DDM length and decimals to set SAS formats.
-
Length and decimal points specified
by DDMs might conflict with the
ADABAS file definition (for example, not big enough, too
big, and so on). If so, the
ADABAS standard length is used to set default SAS formats.
-
Packed, unpacked, and binary types
can hold very large numeric data values. SAS can maintain precision
up to 16 digits. Unpacked fields larger than 16 bytes are converted
to the character hexadecimal type upon which no numeric operations
can occur. Therefore, precision is not a problem. For large packed
and binary fields, however, you must be aware that precision can be
lost when data values exceed 16 digits.
-
If the standard length is 0 (that
is, if the data field has a variable length), the ACCESS procedure
chooses a default length.
-
The default length for an alphanumeric
is 20.
-
The default length for a numeric
is the maximum length before assuming a character hexadecimal type.
Packed is 15 bytes (29 digits and a sign), unpacked is 16 bytes (16
digits and a sign), binary is 8 bytes, fixed is 4 bytes, and float
is 8 bytes.
-
Superdescriptors
and subfields are given an
ADABAS type of character unless all of the parent fields are numeric.
Then, they are given an
ADABAS type of binary. Their length is calculated by totaling the number
of bytes in the individual parent's from-to specification. If the
length of a binary superdescriptor or subdescriptor is greater than
8, the SAS format is changed from numeric to character hexadecimal.
-
Subdescriptors and subfields take
the type of their parent and the length of their from-to specification.
-
Phonetic descriptors are alphanumeric
and use the length of the phonetic parent. Any retrieval of a phonetic
descriptor is actually retrieval of its parent.
-
If
ADABAS data falls outside the valid SAS data ranges, you
get an error message in the SAS log when you try to read the data.
For example, an
ADABAS
date might not fall in the valid SAS date range.
The following table
shows the default SAS variable formats and informats that the ACCESS
procedure assigns to each
ADABAS data type in an
ADABAS file.
SAS Formats and Informats for ADABAS Data Types in an ADABAS
File
The following information
applies to this table:
-
ADBLEN =
ADABAS standard length (in bytes). If the standard length
equals 0, then the interface view engine sets the length based on
the data type, as follows: A=20, B=8, F=4, G=8, P=15, and U=16.
-
-
< = 4 bytes is treated as signed
numbers
-
< = 8 bytes and > 4 bytes
is treated as positive (unsigned) numbers
-
> 8 bytes is treated as character
hexadecimal data.
-
Numeric values greater than 16
displayable digits can lose precision.
The following table
shows the default SAS variable formats and informats that the ACCESS
procedure assigns to each
ADABAS data type in a NATURAL DDM.
SAS Formats and Informats for ADABAS Data Types in a NATURAL
DDM
|
|
|
|
|
|
|
|
|
|
|
( DDMLEN + DECPT + SIGNPT) .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
( DDMLEN + DECPT + SIGNPT) .
|
|
|
|
|
|
|
|
( DDMLEN + DDMDEC + DECPT + SIGNPT) . DDMDEC.
|
|
unpacked decimal (zoned
decimal) (signed)
|
|
( DDMLEN + DDMDEC + DECPT + SIGNPT) . DDMDEC.
|
|
|
|
|
The following information
applies to this table:
-
DDMLEN = DDM digits to the left
of the decimal point.
-
DDMDEC = DDM digits to the right
of the decimal point.
-
ADBLEN =
ADABAS standard length in bytes. If the standard length
equals 0, then the interface view engine sets the length based on
the data type, as follows: A=20, B=8, F=4, G=8, P=15, and U=16.
-
DECPT = 1 when DDM digits to the
right of the decimal point are greater than 0.
-
DECPT = 0 when DDM digits to the
right of decimal point are equal to 0.
-
SIGNPT = 1 when numeric type is
signed data (fixed, float, packed, unpacked, and binary ≤4).
-
SIGNPT = 0 when numeric type is
unsigned data (binary > 4 and ≤ l8).
-
-
≤ 4 bytes is treated as
signed numbers
-
≤ 8 bytes and > 4 bytes
is treated as positive (unsigned) numbers
-
> 8 bytes is treated as character
hexadecimal data.
-
Numeric values greater than 16
displayable digits can lose precision.