424
SAS ® Viya Formats and Informats: Reference SAS ® Documentation

) Formats and Informats: Reference - go.documentation.sas.com

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ) Formats and Informats: Reference - go.documentation.sas.com

SAS® Viya™ Formats and Informats: Reference

SAS® Documentation

Page 2: ) Formats and Informats: Reference - go.documentation.sas.com

The correct bibliographic citation for this manual is as follows: SAS Institute Inc. 2016. SAS® Viya™ Formats and Informats: Reference. Cary, NC: SAS Institute Inc.

SAS® Viya™ Formats and Informats: Reference

Copyright © 2016, SAS Institute Inc., Cary, NC, USA

All Rights Reserved. Produced in the United States of America.

For a hard copy book: No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, or otherwise, without the prior written permission of the publisher, SAS Institute Inc.

For a web download or e-book: Your use of this publication shall be governed by the terms established by the vendor at the time you acquire this publication.

The scanning, uploading, and distribution of this book via the Internet or any other means without the permission of the publisher is illegal and punishable by law. Please purchase only authorized electronic editions and do not participate in or encourage electronic piracy of copyrighted materials. Your support of others' rights is appreciated.

U.S. Government License Rights; Restricted Rights: The Software and its documentation is commercial computer software developed at private expense and is provided with RESTRICTED RIGHTS to the United States Government. Use, duplication, or disclosure of the Software by the United States Government is subject to the license terms of this Agreement pursuant to, as applicable, FAR 12.212, DFAR 227.7202-1(a), DFAR 227.7202-3(a), and DFAR 227.7202-4, and, to the extent required under U.S. federal law, the minimum restricted rights as set out in FAR 52.227-19 (DEC 2007). If FAR 52.227-19 is applicable, this provision serves as notice under clause (c) thereof and no other notice is required to be affixed to the Software or documentation. The Government’s rights in Software and documentation shall be only those set forth in this Agreement.

SAS Institute Inc., SAS Campus Drive, Cary, NC 27513-2414

May 2016

SAS® and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.

Other brand and product names are trademarks of their respective companies.

Page 3: ) Formats and Informats: Reference - go.documentation.sas.com

Contents

Early Adopter Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v

PART 1 SAS Formats 1

Chapter 1 • Overview of Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Definition of Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Using Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms . . . . 8Data Conversions and Encodings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Working with Packed Decimal and Zoned Decimal Data . . . . . . . . . . . . . . . . . . . . . . . 10Working with Dates and Times By Using the ISO 8601 Basic and

Extended Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Chapter 2 • Formats Documented in Other Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Documentation for Additional Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Chapter 3 • Dictionary of Formats for SAS and the CAS Server . . . . . . . . . . . . . . . . . . . . . . . . . 31Formats by Category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Chapter 4 • Dictionary of Formats for SAS Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131Formats by Category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

PART 2 SAS Informats 231

Chapter 5 • Overview of Informats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Definition of Informats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234Using Informats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms . . 237Working with Packed Decimal and Zoned Decimal Data . . . . . . . . . . . . . . . . . . . . . . 239Reading Dates and Times By Using the ISO 860 Basic and Extended Notations . . . . 243

Chapter 6 • Informats Documented in Other Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251Documentation for Additional Informats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

Chapter 7 • Dictionary of Informats for SAS and the CAS Server . . . . . . . . . . . . . . . . . . . . . . . 253Informats by Category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

Chapter 8 • Dictionary of Informats for SAS Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371Informats by Category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

Page 4: ) Formats and Informats: Reference - go.documentation.sas.com

Recommended Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

iv Contents

Page 5: ) Formats and Informats: Reference - go.documentation.sas.com

Early Adopter Software

THIS DOCUMENTATION FOR AN EARLY ADOPTER PRODUCT IS A PRELIMINARY DRAFT AND IS PROVIDED BY SAS INSTITUTE INC. ("SAS") ON AN "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTIBILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. SAS does not warrant that this documentation is complete, accurate, or similar to that which may be released to the general public, or that any such documentation will be released. The company shall not be liable whatsoever for any damages arising out of the use of this documentation, including any direct, indirect, or consequential damages. SAS reserves the right to alter or abandon use of this documentation at any time.

v

Page 6: ) Formats and Informats: Reference - go.documentation.sas.com

vi Early Adopter Software

Page 7: ) Formats and Informats: Reference - go.documentation.sas.com

Part 1

SAS Formats

Chapter 1Overview of Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Chapter 2Formats Documented in Other Publications . . . . . . . . . . . . . . . . . . . . . . 29

Chapter 3Dictionary of Formats for SAS and the CAS Server . . . . . . . . . . . . . . . 31

Chapter 4Dictionary of Formats for SAS Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

1

Page 8: ) Formats and Informats: Reference - go.documentation.sas.com

2

Page 9: ) Formats and Informats: Reference - go.documentation.sas.com

Chapter 1

Overview of Formats

Definition of Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Using Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Ways to Specify Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Permanent versus Temporary Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6User-Defined Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Restrictions on Formatting Dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8How Bytes Are Ordered Differently . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Writing Data Generated on Big Endian or Little Endian Platforms . . . . . . . . . . . . . . 8Integer Binary Notation and Different Programming Languages . . . . . . . . . . . . . . . 9

Data Conversions and Encodings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Working with Packed Decimal and Zoned Decimal Data . . . . . . . . . . . . . . . . . . . . . 10Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Types of Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Platforms That Support Packed Decimal and Zoned Decimal Data . . . . . . . . . . . . . 11Languages That Support Packed Decimal and Zoned Decimal Data . . . . . . . . . . . . 12Summary of Packed Decimal and Zoned Decimal Formats and Informats . . . . . . . 12

Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

ISO 8601 Formatting Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15About Dates and Times That Use the ISO 8601 Basic and Extended Notations . . . 16Basic ISO 8601 Date, Time, and Datetime Values . . . . . . . . . . . . . . . . . . . . . . . . . . 16Extended ISO 8601 Date, Time, and Datetime Values . . . . . . . . . . . . . . . . . . . . . . . 18Tips for Remembering UTC Formats That Use Time Zone Offsets . . . . . . . . . . . . 19Examples of Reading and Writing Basic and Extended ISO

8601 Date, Time, and Datetime Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Writing ISO 8601 Duration, Datetime, and Interval Values . . . . . . . . . . . . . . . . . . . 24

3

Page 10: ) Formats and Informats: Reference - go.documentation.sas.com

Definition of FormatsA format is a type of SAS language element that applies a pattern to or executes instructions for a data value to be displayed or written as output. Types of formats correspond to the type of data: numeric, character, date, time, or timestamp. The ability to create user-defined formats is also supported. Examples of SAS formats are BINARY, DATE, and WORDS. For example, the WORDS22. format, which converts numeric values to their equivalent in words, writes the numeric value 692 as six hundred ninety-two.

SyntaxSAS formats have the following form:

<$>format<w>.<d>

$indicates a character format. Its absence indicates a numeric format.

formatnames the format. The format is a SAS format or a user-defined format that was previously defined with the VALUE statement in PROC FORMAT.

See For information about user-defined formats, see “FORMAT” in SAS Viya Utility Procedures Guide.

wspecifies the format width, which for most formats is the number of columns in the output data.

dspecifies an optional decimal scaling factor in the numeric formats.

Formats contain a period (.) as a part of the name. If you omit the w and d values from the format, SAS uses default values. The d value that you specify with a format tells SAS to display that many decimal places. Formats never change or truncate the internally stored data values.

For example, in DOLLAR10.2, the w value of 10 specifies a maximum of 10 columns for the value. The d value of 2 specifies that two of these columns are for the decimal part of the value, which leaves eight columns for the remaining characters in the value. The remaining columns include the decimal point, the remaining numeric value, a minus sign if the value is negative, the dollar sign, and commas, if any.

If the format width is too narrow to represent a value, SAS tries to squeeze the value into the space available. Character formats truncate values on the right. Numeric formats sometimes revert to the BESTw.d format. SAS prints asterisks if you do not specify an adequate width. In the following example, the result is x=**.

x=123;put x= 2.;

4 Chapter 1 • Overview of Formats

Page 11: ) Formats and Informats: Reference - go.documentation.sas.com

If you use an incompatible format, such as a numeric format to write character values, SAS first attempts to use an analogous format of the other type. If this attempt fails, an error message that describes the problem is displayed in the SAS log.

When the value of d is greater than 15, the precision of the decimal value after the 15th significant digit might not be accurate.

Using Formats

Ways to Specify Formats

About Specifying FormatsYou can use formats in these ways:

• in a PUT statement

• with the PUT, PUTC, or PUTN functions

• with the %SYSFUNC macro function

• in a FORMAT statement in a DATA step or a PROC step

• in an ATTRIB statement in a DATA step or a PROC step

PUT StatementThe PUT statement with a format after the variable name uses a format to write data values in a DATA step. For example, this PUT statement uses the DOLLARw.d format to write the numeric value for AMOUNT as a dollar amount:

amount=1145.32;put amount dollar10.2;

The DOLLARw.d format in the PUT statement produces this result:

$1,145.32

For more information, see “PUT Statement” in SAS Viya Statements: Reference.

PUT FunctionThe PUT function converts a numeric variable, a character variable, or a constant by using any valid format and then returns the resulting character value. For example, the following statement converts the value of a numeric variable to a two-character hexadecimal representation:

num=15;char=put(num,hex2.);

The PUT function returns a value of 0F, which is assigned to the variable CHAR.

The PUT function is useful for converting a numeric value to a character value.

For more information, see “PUT Function” in SAS Viya Functions and CALL Routines: Reference.

%SYSFUNC Macro FunctionThe %SYSFUNC (or %QSYSFUNC) macro function executes SAS functions or user-defined functions and applies an optional format to the function outside a DATA step.

Using Formats 5

Page 12: ) Formats and Informats: Reference - go.documentation.sas.com

For example, the following program writes a numeric value in a macro variable as a dollar amount.

%macro tst(amount); %put %sysfunc(putn(&amount,dollar10.2)); %mend tst;

%tst (1154.23);

For more information, see “%SYSFUNC and %QSYSFUNC Functions” in SAS Viya Macro Language: Reference.

FORMAT StatementThe FORMAT statement permanently associates character variables with character formats and numeric variables with numeric formats.

SAS uses the format to write the values of the variable that you specify. For example, the following statement in a DATA step associates the COMMAw.d numeric format with the variables SALES1 through SALES3:

format sales1-sales3 comma10.2;

Because the FORMAT statement permanently associates a format with a variable, any subsequent DATA step or PROC step uses COMMA10.2 to write the values of SALES1, SALES2, and SALES3.

For more information, see “FORMAT Statement” in SAS Viya Statements: Reference.

Note: If you assign formats with a FORMAT statement before a PUT statement, all leading blanks are trimmed. Formats that are associated with variables that use a FORMAT statement behave like formats that are used with a colon (:) modifier in a subsequent PUT statement. For more information about using the colon format modifier, see “PUT Statement, List” in SAS Viya Statements: Reference.

ATTRIB StatementThe ATTRIB statement can also associate a format, as well as other attributes, with one or more variables. In the following statement, the ATTRIB statement permanently associates the COMMAw.d format with the variables SALES1 through SALES3:

attrib sales1-sales3 format=comma10.2;

Because the ATTRIB statement permanently associates a format with a variable, any subsequent DATA step or PROC step uses COMMA10.2 to write the values of SALES1, SALES2, and SALES3.

For more information, see “ATTRIB Statement” in SAS Viya Statements: Reference.

Permanent versus Temporary AssociationWhen you specify a format in a PUT statement, SAS uses the format to write data values during the DATA step but does not permanently associate the format with a variable. To permanently associate a format with a variable, use a FORMAT statement or an ATTRIB statement in a DATA step. SAS permanently associates a format with the variable by modifying the descriptor information in the SAS data set.

Using a FORMAT statement or an ATTRIB statement in a PROC step associates a format with a variable for that PROC step, as well as for any output data sets that the procedure creates that contain formatted variables.

6 Chapter 1 • Overview of Formats

Page 13: ) Formats and Informats: Reference - go.documentation.sas.com

User-Defined FormatsIn addition to the formats that are supplied with Base SAS software, you can create your own formats. In Base SAS software, PROC FORMAT enables you to create your own formats for both character and numeric variables.

For more information, see “FORMAT” in SAS Viya Utility Procedures Guide.

When you execute a SAS program that uses user-defined formats, these formats can be made available in two ways:

• by creating permanent, not temporary, formats with PROC FORMAT

• by storing the source code that creates the formats (the PROC FORMAT step) with the SAS program that uses them

To create permanent SAS formats, see “FORMAT” in SAS Viya Utility Procedures Guide.

If you execute a program that cannot locate a user-defined format, the result depends on the setting of the FMTERR system option. If the user-defined format is not found, then these system options produce these results:

System Option Result

FMTERR SAS produces an error that causes the current DATA or PROC step to stop.

NOFMTERR SAS continues processing and substitutes a default format, usually the BESTw. or $w. format.

Although using NOFMTERR enables SAS to process a variable, you lose the information that the user-defined format supplies.

To avoid problems, ensure that your program has access to all user-defined formats that are used.

Restrictions on Formatting DatesCAUTION:

Using century dates greater than 4000 might result in incorrect dates. SAS does not consider century years that are divisible by 4000 to be leap years. In SAS, the years 4000 and 8000 are not leap years. Computations on dates that use a century date greater than 4000 might be off by days, depending on the computation.

Using Formats 7

Page 14: ) Formats and Informats: Reference - go.documentation.sas.com

Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms

DefinitionsInteger values for binary integer data are typically stored in one of three sizes: one-byte, two-byte, or four-byte. The ordering of the bytes for the integer varies depending on the platform (operating environment) on which the integers were produced.

The ordering of bytes differs between the “big endian” and “little endian” platforms. These colloquial terms are used to describe byte ordering for IBM mainframes (big endian) and for platforms that are based on Intel (little endian). In the SAS System, the following platforms are considered big endian: AIX, HP-UX, Macintosh, and Solaris on SPARC. The following platforms are considered little endian: Intel ABI, Linux, OpenVMS on HP Integrity Servers, OpenVMS Integrity.

How Bytes Are Ordered DifferentlyOn big endian platforms, the value 1 is stored in binary and is represented here in hexadecimal notation. One byte is stored as 01, two bytes as 00 01, and four bytes as 00 00 00 01. On little endian platforms, the value 1 is stored in one byte as 01 (the same as big endian), in two bytes as 01 00, and in four bytes as 01 00 00 00.

If an integer is negative, the two's complement representation is used. The high-order bit of the most significant byte of the integer is set on. For example, –2 would be represented in one, two, and four bytes on big endian platforms as FE, FF FE, and FF FF FF FE, respectively. On little endian platforms, the representation would be FE, FE FF, and FE FF FF FF. These representations result from the output of the integer binary value –2 expressed in hexadecimal notation.

Writing Data Generated on Big Endian or Little Endian PlatformsSAS can read signed and unsigned integers regardless of whether they were generated on a big endian or a little endian platform. Likewise, SAS can write signed and unsigned integers in both big endian and little endian format. The length of these integers can be up to eight bytes.

The following table shows which format to use for various combinations of platforms. In the Signed Integer column, “no” indicates that the number is unsigned and cannot be negative. “Yes” indicates that the number can be either negative or positive.

Platform for Which the Data Was Created

Platform That Writes the Data

Signed Integer Format

big endian big endian yes IB or S370FIB

big endian big endian no PIB, S370FPIB, S370FIBU

big endian little endian yes S370FIB

8 Chapter 1 • Overview of Formats

Page 15: ) Formats and Informats: Reference - go.documentation.sas.com

Platform for Which the Data Was Created

Platform That Writes the Data

Signed Integer Format

big endian little endian no S370FPIB

little endian big endian yes IBR

little endian big endian no PIBR

little endian little endian yes IB or IBR

little endian little endian no PIB or PIBR

big endian either yes S370FIB

big endian either no S370FPIB

little endian either yes IBR

little endian either no PIBR

Integer Binary Notation and Different Programming LanguagesThe following table compares integer binary notation according to programming language.

Language 2 Bytes 4 Bytes

SAS IB2. , IBR2., PIB2., PIBR2., S370FIB2., S370FIBU2., S370FPIB2.

IB4., IBR4., PIB4., PIBR4., S370FIB4., S370FIBU4., S370FPIB4.

PL/I FIXED BIN(15) FIXED BIN(31)

Fortran INTEGER*2 INTEGER*4

COBOL COMP PIC 9(4) COMP PIC 9(8)

IBM assembler H F

C short long

Data Conversions and EncodingsAn encoding maps each character in a character set to a unique numeric representation, which results in a table of code points. A single character can have different numeric representations in different encodings. For example, the ASCII encoding for the dollar

Data Conversions and Encodings 9

Page 16: ) Formats and Informats: Reference - go.documentation.sas.com

symbol $ is 24 hexadecimal. The Danish EBCDIC encoding for the dollar symbol $ is 67 hexadecimal. In order for a version of SAS that typically uses ASCII to properly interpret a data set that is encoded in Danish EBCDIC, the data must be transcoded.

Transcoding is the process of moving data from one encoding to another. When SAS is transcoding the ASCII dollar sign to the Danish EBCDIC dollar sign, the hexadecimal representation for the character is converted from the value 24 to the value 67.

Here are several situations where data might commonly be transcoded:

• when you share data between two different SAS sessions that are running in different locales or in different operating environments

• when you perform text-string operations, such as converting to uppercase or lowercase

• when you display or print characters from another language

• when you copy and paste data between SAS sessions that are running in different locales

For more information about SAS features that are designed to handle Transcoding for NLS from different encodings or operating environments, see SAS Viya National Language Support (NLS): Reference Guide.

Working with Packed Decimal and Zoned Decimal Data

DefinitionsPacked decimal

specifies a method of encoding decimal numbers by using each byte to represent two decimal digits. Packed decimal representation stores decimal data with exact precision. The fractional part of the number is determined by the informat or format because there is no separate mantissa and exponent.

An advantage of using packed decimal data is that exact precision can be maintained. However, computations that involve decimal data might become inexact due to the lack of native instructions.

Zoned decimalspecifies a method of encoding decimal numbers in which each digit requires one byte of storage. The last byte contains the number's sign as well as the last digit. Zoned decimal data produces a printable representation.

Nibblespecifies 1/2 of a byte.

Types of Data

Packed Decimal DataA packed decimal representation stores decimal digits in each “nibble” of a byte. Each byte has two nibbles, and each nibble is indicated by a hexadecimal character. For example, the value 15 is stored in two nibbles, using the hexadecimal characters 1 and 5.

10 Chapter 1 • Overview of Formats

Page 17: ) Formats and Informats: Reference - go.documentation.sas.com

The sign indication is dependent on your operating environment. On IBM mainframes, the sign is indicated by the last nibble. With formats, C indicates a positive value, and D indicates a negative value. With informats, A, C, E, and F indicate positive values, and B and D indicate negative values. Any other nibble is invalid for signed packed decimal data. In all other operating environments, the sign is indicated in its own byte. If the high-order bit is 1, then the number is negative. Otherwise, the number is positive.

The following information applies to packed decimal data representation:

• You can use the S370FPD format on all platforms to obtain the IBM mainframe configuration.

• You can have unsigned packed data with no sign indicator. The packed decimal format and informat handle the representation. The representation is consistent between ASCII and EBCDIC platforms.

• The S370FPDU format and informat expect to have an F in the last nibble. A packed decimal expects no sign nibble.

Zoned Decimal DataThe following information applies to zoned decimal data representation:

• A zoned decimal representation stores a decimal digit in the low-order nibble of each byte. For all bytes except the byte that contains the sign, the high-order nibble is the numeric zone nibble (F on EBCDIC and 3 on ASCII).

• The sign can be merged into a byte with a digit, or it can be separate, depending on the representation. But the standard zoned decimal format and informat expect the sign to be merged into the last byte.

• The EBCDIC and ASCII zoned decimal formats produce the same printable representation of numbers. There are two nibbles per byte, each indicated by a hexadecimal character. For example, the value 15 is stored in two bytes. The first byte contains the hexadecimal value F1, and the second byte contains the hexadecimal value C5.

Packed Julian DatesThe following information applies to packed Julian dates:

• The two formats and informats that handle Julian dates in packed decimal representation are PDJULI and PDJULG. PDJULI uses the IBM mainframe year computation, whereas PDJULG uses the Gregorian computation.

• The IBM mainframe computation considers 1900 to be the base year, and the year values in the data indicate the offset from 1900 (for example, 98 means 1998, 100 means 2000, and 102 means 2002). 1998 would mean 3898.

• The Gregorian computation allows for two-digit or four-digit years. If you use two-digit years, SAS uses the setting of the YEARCUTOFF= system option to determine the true year.

Platforms That Support Packed Decimal and Zoned Decimal DataSome platforms have native instructions to support packed and zoned decimal data. Other platforms must use software to emulate the computations. For example, the IBM mainframe has an Add Pack instruction to add packed decimal data, but the platforms that are based on Intel have no such instruction and must convert the decimal data to some other format.

Working with Packed Decimal and Zoned Decimal Data 11

Page 18: ) Formats and Informats: Reference - go.documentation.sas.com

Languages That Support Packed Decimal and Zoned Decimal DataSeveral languages support packed decimal and zoned decimal data. The following table shows how COBOL picture clauses correspond to SAS formats and informats.

IBM versus COBOL II ClausesCorresponding S370Fxxx Formats and Informats

PIC S9(X) PACKED-DECIMAL S370FPDw.

PIC 9(X) PACKED-DECIMAL S370FPDUw.

PIC S9(W) DISPLAY S370FZDw.

PIC 9(W) DISPLAY S370FZDUw.

PIC S9(W) DISPLAY SIGN LEADING S370FZDLw.

PIC S9(W) DISPLAY SIGN LEADING SEPARATE S370FZDSw.

PIC S9(W) DISPLAY SIGN TRAILING SEPARATE S370FZDTw.

For the packed decimal representation listed in the preceding table, X indicates the number of digits represented, and W is the number of bytes. For PIC S9(X) PACKED-DECIMAL, W is ceil((x+1)/2). For PIC 9(X) PACKED-DECIMAL, W is ceil(x/2). For example, PIC S9(5) PACKED-DECIMAL represents five digits. If a sign is included, six nibbles are needed. ceil((5+1)/2) has a length of three bytes, and the value of W is 3.

You can substitute COMP-3 for PACKED-DECIMAL.

In IBM assembly language, the P directive indicates packed decimal, and the Z directive indicates zoned decimal. Here is an excerpt from an assembly language list that shows the offset, the value, and the DC statement:

offset value (in hex) inst label directive

+000000 00001C 2 PEX1 DC PL3'1' +000003 00001D 3 PEX2 DC PL3'-1'+000006 F0F0C1 4 ZEX1 DC ZL3'1' +000009 F0F0D1 5 ZEX2 DC ZL3'-1'

In PL/I, the FIXED DECIMAL attribute is used in conjunction with packed decimal data. You must use the PICTURE specification to represent zoned decimal data. There is no standardized representation of decimal data for the Fortran or C languages.

Summary of Packed Decimal and Zoned Decimal Formats and Informats

SAS uses a group of formats and informats to handle packed and zoned decimal data. The following table lists the type of data representation for these formats and informats. The formats and informats that begin with S370 refer to IBM mainframe representation.

12 Chapter 1 • Overview of Formats

Page 19: ) Formats and Informats: Reference - go.documentation.sas.com

FormatType of Data Representation

Corresponding Informat Comments

PD Packed decimal PD Local, signed packed decimal

PK Packed decimal PK Unsigned packed decimal; not specific to your operating environment

ZD Zoned decimal ZD Local zoned decimal

none Zoned decimal ZDB Translates EBCDIC blank (hexadecimal 40) to EBCDIC zero (hexadecimal F0); corresponds to the informat as zoned decimal

none Zoned decimal ZDV Zoned decimal notation other than IBM

S370FPD Packed decimal S370FPD Last nibble C (positive) or D (negative)

S370FPDU Packed decimal S370FPDU Last nibble always F (positive)

S370FZD Zoned decimal S370FZD Last byte contains sign in upper nibble: C (positive) or D (negative)

S370FZDU Zoned decimal S370FZDU Unsigned; sign nibble always F

S370FZDL Zoned decimal S370FZDL Sign nibble in first byte in informat; separate leading sign byte of hexadecimal C0 (positive) or D0 (negative) in format

S370FZDS Zoned decimal S370FZDS Leading sign of – (hexadecimal 60) or + (hexadecimal 4E)

S370FZDT Zoned decimal S370FZDT Trailing sign of – (hexadecimal 60) or + (hexadecimal 4E)

PDJULI Packed decimal PDJULI Julian date in packed representation - IBM computation

PDJULG Packed decimal PDJULG Julian date in packed representation - Gregorian computation

Working with Packed Decimal and Zoned Decimal Data 13

Page 20: ) Formats and Informats: Reference - go.documentation.sas.com

FormatType of Data Representation

Corresponding Informat Comments

none Packed decimal RMFDUR Input layout is: mmsstttF

none Packed decimal SHRSTAMP Input layout is: yyyydddFhhmmssth, where yyyydddF is the packed Julian date; yyyy is a zero-based year from 1900

none Packed decimal SMFSTAMP Input layout is: xxxxxxxxyyyydddF, where yyyydddF is the packed Julian date; yyyy is a zero-based year from 1900

none Packed decimal PDTIME Input layout is: 0hhmmssF

none Packed decimal RMFSTAMP Input layout is: 0hhmmssFyyyydddF, where yyyydddF is the packed Julian date; yyyy is a zero-based year from 1900

Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations

ISO 8601 Formatting SymbolsThe following list explains the formatting symbols that are used to notate the ISO 8601 dates, time, datetime, durations, and interval values:

nspecifies a number that represents the number of years, months, or days

Pindicates that the duration that follows is specified by the number of years, months, days, hours, minutes, and seconds

Tindicates that a time value follows. Any value with a time must begin with T.

Requirement Time values that are read by the extended notation informats that begin with the characters E8601 must use an uppercase T.

Windicates that the duration is specified in weeks.

Zindicates that the time value is the time in Greenwich, England, or UTC time.

14 Chapter 1 • Overview of Formats

Page 21: ) Formats and Informats: Reference - go.documentation.sas.com

+|-the + indicates the time zone offset to the east of Greenwich, England. The - indicates the time zone offset to the west of Greenwich, England.

yyyyspecifies a four-digit year

mmas part of a date, specifies a two-digit month, 01–12

ddspecifies a two-digit day, 01–1

hhspecifies a two-digit hour, 00–24

mmas part of a time, specifies a two-digit minute, 00–59

ssspecifies a two-digit second, 00–59

fff | ffffffspecifies an optional fraction of a second using the digits 0–9:

fff use 1 - 3 digits for values read by the $N8601B informat and the $N8601E informat

ffffff use 1 - 6 digits for informat other than the $N8601B informat and the $N8601E informat

Yindicates that a year value precedes this character in a duration

Mas part of a date, indicates that a month value precedes this character in a duration

Dindicates that a day value precedes this character in a duration

Hindicates that an hour value precedes this character in a duration

Mas part of a time, indicates that a minute value precedes this character in a duration

Sindicates that a seconds value precedes this character in a duration

DefinitionsLocal time

The local time when a time zone is not specified by the TIMEZONE= system option.

Time zone offsetSpecifies the number of hours and minutes that a time zone is from Universal Coordinate Time (UTC) in the form +|–hh:mm or +|–hhmm.

User local timeThe local time for the time zone that is specified by the TIMEZONE= system option. For more information, see “TIMEZONE= System Option” in SAS Viya System Options: Reference.

Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations15

Page 22: ) Formats and Informats: Reference - go.documentation.sas.com

UTCUniversal Coordinate Time is the time at the zero meridian, near Greenwich, England. UTC is a datetime value that uses the ISO 8601 basic form yyyymmddThhmmss+|–hhmm or the ISO 8601 extended form yyyy-mm-ddThh:mm:ss+|–hh:mm.

About Dates and Times That Use the ISO 8601 Basic and Extended Notations

ISO 8601 is an international standard for representing dates and time, including many variations for representing dates, times, and intervals. The two main representations of date, time, and datetime values within the ISO 8601 standards are the basic and extended notations. A value is considered extended when delimiters separate the various components within the value, whereas a basic value omits the delimiters. The extended format requires hyphen delimiters for date components (year, month, and day) and colon delimiters for time components (hour, minute, and second). Spaces are not allowed in any ISO 8601 representation. The structures for each data type require that you fill each placeholder with a value, including adding a zero to single-digit months, days, hours, and minutes. When you specify a datetime value, an uppercase T is the required delimiter between the date and time.

Some of the ISO 8601 formats are for formatting time and datetime values in UTC. The time or datetime value includes a time zone offset, which is a positive or negative number that represents the number of hours a time zone is from the zero meridian. Positive numbers are east of the zero meridian, and negative numbers are west of the zero meridian. The time zone offset at the zero meridian is always zero.

Here are examples of basic and extended notations for ISO 8601 date, time, datetime, and duration values:

• 2013-02-01 is a date that is formatted using the extended notation.

• 125234-0500 is a time with a time zone offset five hours west of the zero meridian and is formatted using the basic notation.

• 2013-02-01T12:52:34+09:00 is a datetime value with a time zone offset nine hours east of the zero meridian and is formatted using the extended notation.

• P20130501T120000 is a duration value that is formatted using the basic notation.

When SAS reads an ISO 8601 value that specifies UTC with a time offset, the time or datetime value is adjusted to account for the offset from the zero meridian.

The SAS ISO 8601 formats for UTC with a time zone offset are based on the following time, datetime, and time zone offsets:

• the zero meridian time or datetime near Greenwich, England (The offset is always +|–0000 or +|–00:00.)

• the local time or datetime, which uses the zero meridian time with a time zone offset for the local time

• a zero meridian datetime that uses a time zone offset for the user local time

• a user local time or datetime, which uses the current time for a time zone with a time zone offset for the user local time

Basic ISO 8601 Date, Time, and Datetime ValuesBasic formats and informats are prefixed with B8601 and take these forms:

16 Chapter 1 • Overview of Formats

Page 23: ) Formats and Informats: Reference - go.documentation.sas.com

Date yyyymmdd

Time hhmmss<ffffff>

Datetime yyyymmddThhmmss<ffffff>

Time with time zone hhmmss<ffffff>+|–hhmm

Datetime with time zone yyyymmddThhmmss<ffffff>+|–hhmm

SAS uses the formats in the following table to write date, time, and datetime values in the ISO 8601 basic notations from SAS date, time, and datetime values.

Date, Time, or Datetime ISO 6801 Notation Example Format

Date yyyymmdd 20120915 B8601DAw. on page 157

Writes the date from a datetime.

yyyymmdd 20120915 B8601DNw. on page 158

Time hhmmssffffff 155300322348 B8601TMw.d on page 166

Zero meridian time and time zone offset.

The time zone offset is always +0000 or Z.

hhmmss+|–hhmm 155300+0000 B8601TZw. on page 169

hhmmssZ 155300Z B8601TZw. on page 169

Zero meridian time that uses a time zone offset for the local time.

hhmmss+|–hhmm 155300–0500 B8601LZw. on page 165

Converts time to a user local time by using a time zone offset for the user local time.

hhmmss+|–hhmm 155300–0500 B8601TXw. on page 168

Datetime yyyymmddThhmmssffffff 20120915T155300 B8601DTw.d on page 159

Zero meridian datetime and time zone offset.

The time zone offset is always +0000 or Z.

yyyymmddThhmmss+|–hhmm

20120915T155300–0000 B8601DZw. on page 162

yyyymmddThhmmssZ 20120915T155300Z B8601DZw. on page 162

Zero meridian datetime that uses a time zone offset for the user local time.

yyyymmddThhmmss+|–hhmm

20120915T155300+0500 B8601LXw. on page 164

Converts a datetime value to the user local time by using a time zone offset for the user local time.

yyyymmddThhmmss+|–hhmm

20120915T155300+0500 B8601DXw. on page 161

Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations17

Page 24: ) Formats and Informats: Reference - go.documentation.sas.com

An asterisk ( * ) is used in place of a date- or time-formatted value that is out-of-range. Increase the width.

Extended ISO 8601 Date, Time, and Datetime ValuesExtended formats and informats are prefixed with E8601 and take these forms:

Date yyyy-mm-dd

Time hh:mm:ss<ffffff>

Datetime yyyy-mm-ddThh:mm:ss<ffffff>

Time with time zone hh:mm:ss<ffffff>+|–hh:mm or hh:mm:ss<ffffff>Z

Datetime with time zone yyyy-mm-ddThh:mm:ss<ffffff>+|–hh:mm or yyyy-mm-ddThh:mm:ss<ffffff>Z

SAS uses the formats in the following table to write date, time, and datetime values in the ISO 8601 extended notations from SAS date, time, and datetime values.

Date, Time, or Datetime ISO 8601 Notation Example Format

Date yyyy-mm-dd 2012-09-15 E8601DAw. on page 171

Writes the date from a datetime.

yyyy-mm-dd 2012-09-15 E8601DNw. on page 158

Time hh:mm:ss.ffffff 15:53:00.322348 E8601TMw.d on page 166

Zero meridian time and time zone offset.

The time zone offset is always +00:00.

hh:mm:ss.ffffff+|–hh:mm 15:53:00+00:00 E8601TZw.d on page 169

Zero meridian time that uses a local time zone offset.

hh:mm:ss.ffffff+|–hh:mm 15:53:00+05:00 E8601LZw.d on page 165

Converts time to user local time by using a local time zone offset.

hh:mm:ss+|–hh:mm 15:53:00+05:00 EB8601TXw. on page 182

Datetime yyyy-mm-ddThh:mm:ss.ffffff 2012-09-15T15:53:00 E8601DTw.d on page 159

Zero meridian datetime and time zone offset.

The time zone offset is always +00:00.

yyyy-mm-ddThh:mm:ss.nnnnnn+|–hh:mm

2013-09-15T15:53:00+00:00

E8601DZw.d on page 176

Zero meridian datetime that uses a time zone offset for the user local time.

yyyy-mm-ddThh:mm:ss+|–hh:mm

2013-09-15T15:53:00–05:00

E8601LXw. on page 177

18 Chapter 1 • Overview of Formats

Page 25: ) Formats and Informats: Reference - go.documentation.sas.com

Date, Time, or Datetime ISO 8601 Notation Example Format

Converts a datetime value to the user local time by using a time zone offset for the user local time.

yyyy-mm-ddThh:mm:ss+|–hh:mm

2013-09-15T185300–0500 E8601DXw. on page 174

An asterisk ( * ) is used in place of a date- or time-formatted value that is out-of-range. Increase the format width.

For more information about time zones, see “Specifying Time Zones in SAS” in SAS Viya National Language Support (NLS): Reference Guide and “TIMEZONE= System Option” in SAS Viya System Options: Reference.

Tips for Remembering UTC Formats That Use Time Zone OffsetsHere are tips to help you remember which format to use for UTC:

• A T in the last two letters is a time value.

• A D in the last two letters is a datetime value.

• A Z in the last two letters is a zero meridian time and a zero meridian offset, except for LZ.

• An L in the last two letters is a zero meridian time with a local or user local time zone offset.

• An X in the last two letters is for user local time or datetime and uses a user local time zone offset that is determined by the TIMEZONE= system option.

Here is information to help you determine the format for UTC:

TZ or DZ LZ LX TX or DX

Zero meridian date or datetime that uses a zero meridian time zone offset

Zero meridian time that uses a local time zone offset

Zero meridian datetime that uses a user local time zone offset

User local time or datetime that uses a user local time zone offset

Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations19

Page 26: ) Formats and Informats: Reference - go.documentation.sas.com

Examples of Reading and Writing Basic and Extended ISO 8601 Date, Time, and Datetime Values

About the Basic and Extended ISO 8601 ExamplesThe examples in this section demonstrate how to use various informats to read date, time, and datetime values into SAS date, time, and datetime variables. The examples also illustrate how to use formats to write these values in a way that is meaningful to users.

Using the Examples on CASThe examples in the following topics are written to run with the SAS Client. To run an example on CAS, add a CAS statement as the first line of the example:

cas casuser;

Comparing ISO 8601 Extended Format OutputThis example compares the output for the different extended notations for time and datetime values.

data _null_;d='15Sep2013:5:53:00'dt;tm='05:53:00't;put 'd=' d datetime.;put 'e8601dz=' d e8601dz.;put 'e8601lx=' d e8601lx.;put 'e8601dx=' d e8601dx.;put 'tm=' tm time.;put 'e8601tz=' tm e8601tz.;put 'e8601lz=' tm e8601lz.;put 'e8601tx=' tm e8601tx.;run;

The program executed using the local time for the eastern United States and no value for the TIMEZONE= system option. Therefore, the time zone formats E8601LZ., E8601DX., and E8601TX. show local times.

• The output for the E8601DZ. and E8601TZ. formats write a SAS datetime and time value as the time at the zero meridian by using a time zone offset of +0000 or +00:00.

• The output for the E8601LX. and E8601LZ. formats write a SAS datetime value as the time at the zero meridian by using a time zone offset for the local time.

• The output for the E8601DX. and E8601TX. formats converts the time to Eastern Time by using a time zone offset for the local time.

d=15SEP13:05:53:00e8601dz= 2013-09-15T05:53:00+00:00e8601lx= 2013-09-15T05:53:00-05:00e8601dx= 2013-09-15T00:53:00-05:00tm= 5:53:00e8601tz=05:53:00+00:00e8601lz=05:53:00-05:00e8601tx=00:53:00-05:00

Here are the results when the TIMEZONE= option is set to America/Los_Angeles:

20 Chapter 1 • Overview of Formats

Page 27: ) Formats and Informats: Reference - go.documentation.sas.com

d=15SEP13:05:53:00e8601dz= 2013-09-15T05:53:00+00:00e8601lx= 2013-09-15T05:53:00-07:00e8601dx= 2013-09-14T22:53:00-07:00tm= 5:53:00e8601tz=05:53:00+00:00e8601lz=05:53:00-05:00e8601tx=21:53:00-08:00

• The E8601DZ. and E8601TZ. formats do not change. They always show the time as the time at the zero meridian.

• The E8601LX. format shows the zero meridian time by using the time zone offset for the America/Los_Angeles time zone.

• The E8601DX. formats show the local date and time in Los Angeles by using the time zone offset for the America/Los_Angeles time zone. The Los Angeles time zone offset of –07:00 indicates that the local time is seven hours earlier than the time at the zero meridian. This changes the date to the 14th.

• The E8601LZ. format shows the time at the zero meridian by using the time zone offset for the eastern United States because that is where the code executed.

• The E8601TX. format shows the time seven hours earlier from the zero meridian by using a time zone offset for the America/Los_Angeles time zone.

Reading and Writing Date ValuesSuppose that you have a clinical trial where an event begins on April 2, 2012, and ends on April 8, 2012. The dates are recorded without time values, as follows: 20120402 and 2012-04-08. You can read these values into SAS with the B8601DAw. and E8601DAw. informats. You can write dates in the same form by using the B8601DAw. and E8601DAw. formats. These formats output the newly created SAS dates in an easy-to-read layout rather than the numeric value of days since 1/1/1960.

data a;input var1 b8601da8. +1 var2 e8601da10.;put var1=b8601da. var2=e8601da.;datalines;20120402 2012-04-08;run;

Here is the output from the SAS log:

var1=20120402 var2=2012-04-08

By using the B8601DNw. and E8601DNw. formats, you can extrapolate the date from a datetime value. This example reads the datetime value by using the B8601DNw. informat, and writes the date by using the B8601DNw. format:

data _null_;input @1 dt b8601dn.;put dt b8601dn.;datalines;20130915T094322run;

Here is the output from the SAS log:

20130915

Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations21

Page 28: ) Formats and Informats: Reference - go.documentation.sas.com

Reading and Writing Time Values with No Time Zone OffsetsYou can read time values that do not have time zone offset values into SAS time values by using the B8601TMw.d and E8601TMw.d informats. The B8601TMw.d and the E8601TMw.d formats write time values that do not have time zone offset values, as shown in this example:

data _null_;x=input('12:34:56',e8601tm8.);put x=b8601tm8. x=e8601tm10.;run;

Here is the output from the SAS log:

x=123456 x=12:34:56

Reading and Writing Time Values with Time Zone OffsetsThis example uses the E8601TZw.d informat to read a time value that contains a time zone offset. The B8601TZw.d and E8601TZw.d formats write the time values by using a time zone offset for the zero meridian:

data _null_;x=input('12:34:56-04:00',e8601tz14.);put x=e8601tz14.;put x=b8601tz.;run;

Here is the output from the SAS log:

x=16:34:56+00:00x=163456+0000

You can adjust a time to be the time in another time zone by using a time zone offset. You specify the time zone by using the TIMEZONE= system option, and then format the time by using the B8601TXw. or E8601TXw. formats. This example writes the time for a user by using the time zone name PST (Pacific Time):

options timezone=pst;data _null_;x='12:34:56't;put x=e8601tx.;run;

Here is the output from the SAS log:

04:34:56-08:00

Reading and Writing Time Values with Local Time Zone OffsetsBecause time values are scalar, SAS does not typically compute time values based on the time zone of the programmer’s location. One exception to this rule occurs when a SAS time (not a datetime) is computed and then formatted with either the B8601LZw. format or the E8601LZw. format. These two formats query the host code to determine the time zone offset. Then, the current local time and the time zone offset (based on your time zone) are displayed accordingly:

data _null_;x=time();put x=e8601lz.;run;

Here is the output from the SAS log:

22 Chapter 1 • Overview of Formats

Page 29: ) Formats and Informats: Reference - go.documentation.sas.com

x=13:49:02-04:00

Reading and Writing Datetime Values with No Time Zone OffsetIn the following DATA step, SAS reads datetime values with the B8601DTw. and E8601DTw. informats and writes the datetime values by using the B8601DTw. and E8601DTw. formats:

data _null_;input dtB :b8601dt15. dtE :e8601dt19.;put dtB=b8601dt. dtE=e8601dt.;datalines;20120402T124022 2012-04-02T12:30:22;run;

Here is the output from the SAS log:

dtB=20120402T124022 dtE=2012-04-02T12:30:22

This example reads and writes a Java datetime value and writes the value by using the B8601DTw.d format:

data a;input dt1 b8601dj.;put dt1=b8601dt.;datalines;20120402123245;run;

Here is the output from the SAS log:

dt1=20120402T123245

Reading and Writing Datetime Values with Time Zone OffsetsThe B8601DZw. and E8601DZw. formats always write a datetime value for the zero meridian. The offset is always +0000 or +00:00.

In this example, SAS reads a datetime value with an offset and writes the datetime value by using an offset for the zero meridian:

data _null_;x=input('2012-08-01T12:34:56-04:00',e8601dz25.);put x=e8601dz25.;run;

Here is the output from the SAS log:

x=2012-08-01T16:34:56+00:00

You use the B8601DXw. and E8601DXw. formats to adjust a datetime with a time zone offset to be the time for a specific time zone. You set the time zone by using the TIMEZONE= system option. The input value is converted to the time for the time zone and formatted using a time zone offset. This example reads the datetime value with an offset (–04:00) by using the E8601DZw. informat and writes the datetime value for the time zone in Zurich (+02:00):

options timezone='europe/zurich';data _null_;x=input('2012-08-01T12:34:56-04:00',e8601dz25.);put x=e8601dx25.;

Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations23

Page 30: ) Formats and Informats: Reference - go.documentation.sas.com

run;

Here is the output from the SAS log:

x=2012-08-01T18:34:56+02:00

In this example, the TIMEZONE= system option sets the time zone ID to America/Anchorage. The datetime value is written for this time zone ID by using the E8601DXw. format. The time zone offset is the difference between the America/Anchorage time zone and UTC, which is 9 hours.

options timezone='america/anchorage';data _null_;t='01Feb2013T12:34:56'dt;put t=e8601dx.;run;

Here is the output from the SAS log:

2013-02-01T03:34:56-09:00

Reading and Writing Time and Datetime Values with Time Zone Offsets for Local TimesBecause time values are scalar, SAS does not typically compute time values based on the time zone of the programmer’s location. One exception to this rule occurs when a SAS time (not a datetime) is computed and then formatted with either the B8601LZw. format or the E8601LZw. format. These two formats query the host code to determine the offset. Then, the current local time and the offset (based on your time zone) are displayed accordingly:

data _null_;x=time();put x=e8601lz.;run;

Here is the output from the SAS log:

x=13:49:02-04:00

You can write a user’s local datetime value by using the time zone offset. Specify the user’s time zone by using the TIMEZONE= system option and the B8601LXw. or E8601LXw. formats. This example writes the datetime for a user by using the time zone name PST (Pacific Time):

options timezone=pst;data _null_;x='01Feb2013T12:34:56'dt;put x=e8601lx.;run;

Here is the output from the SAS log:

2013-02-01T12:34:56-07:00

Writing ISO 8601 Duration, Datetime, and Interval Values

Duration, Datetime, and Interval FormatsA duration is the period of time that is the difference between two time points. Each time point begins with P and is followed by the date and time in either basic or extended

24 Chapter 1 • Overview of Formats

Page 31: ) Formats and Informats: Reference - go.documentation.sas.com

notation. Durations can be negative or positive values and can be expressed in these forms:

• PyyyymmddThhmmss

• Pyyyy-mm-ddThh:mm:ss

• Pyyyy-mm-dd is a span of years, months, and days

• PnYnMnDTnHnMnS is the number of years (Y), months (M), days (D), hours (H), minutes (M), and seconds (S)

• PnW specifies the number of weeks

The y, m, and d placeholders must have a value, even if the value is 0.

The n placeholder can be 0 or a positive number. The component that contains an n can be omitted. For example, P0Y0M3DT0H0M0S can be written as P3D.

When you use the PnW notation, W must be the only component in the duration.

An interval comprises two values that represent the beginning and end of an event, and it is a duration that is anchored to a specific point in time. Intervals are represented in the following forms:

• datetime/datetime

• datetime/duration

• duration/datetime

SAS writes duration, datetime, and interval values from character data by using these formats:

Time Component ISO 8601 Notation Example Format

Duration - Basic Notation PyyyymmddThhmmssfff P20120915T155300 $N8601BA

–PyyyymmddThhmmssfff –P20120915T155300 $N8601BA

Duration - Extended Notation

Pyyyy-mm-ddThh:mm:ss.fff P2012-09-15T15:53:00 $N8601EA

–Pyyyy-mm-ddThh:mm:ss.fff

–P2012-09-15T15:53:00 $N8601EA

Duration - Basic and Extended Notation

PnYnMnDTnHnMnS P2y10m14dT20h13m45s $N8601B

$N8601E

–PnYnMnDTnHnMnS –P2y10m14dT20h13m45s $N8601B

$N8601E

PnW (weeks) P6w $N8601B

$N8601E

Interval - Basic Notation yyyymmddThhmmssfff/yyyymmddThhmmssfff

20120915T155300/20141113T000000

$N8601BA

PnYnMnDTnHnMnS/yyyymmddThhmmssfff

P2y10M14dT20h13m45s/20120915T155300

$N8601B

Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations25

Page 32: ) Formats and Informats: Reference - go.documentation.sas.com

Time Component ISO 8601 Notation Example Format

yyyymmddThhmmssfff/PnYnMnDTnHnMnS

20120915T155300/P2y10M14dT20h13m45s

$N8601BA

Interval - Extended Notation

yyyy-mm-ddThh:mm:ss.fff/yyyy-mm-ddThh:mm:ss.fff

2012-09-15T15:53:00/2014-11-13T00:00:00

$N8601EA

PnYnMnDTnHnMnS/yyyy-mm-ddThh:mm:ss.fff

P2y10M14dT20h13m45s/2012-09-15T15:53:00

$N8601E

yyyy-mm-ddThh:mm:ss.fff/PnYnMnDTnHnMnS

2012-09-15T15:53:00/P2y10M14dT20h13m45s

$N8601EA

Datetime - Basic Notation yyyymmddThhmmss.fff+|–hhmm

20120915T155300 $N8601BA

(all blank) $N8601B

$N8601BA

$N8601E

$N8601EA

Datetime - Extended Notation

yyyy-mm-ddThh:mm:ss.fff+|–hhmm

2012-09-15T15:53:00

+04:30

$N8601EA

(all blank) $N8601B

$N8601BA

$N8601E

$N8601EA

Writing Partial and Missing ComponentsWhen any component of a date or time is not provided, it is called a partial value, and the components are considered missing. You can represent a missing component in a value by using a hyphen ( - ) or an x. A single hyphen represents the entire value for a given component. For example, one single hyphen can replace a four-digit year. A single x represents one character for a given component. A missing two-digit month would be written as xx. If the time portion is omitted when a date value is specified, the T must also be omitted.

Missing components in the durations form PnYnMnDTnHnMnS are dropped; they do not contain a hyphen or an x. For example, in P2mT4H, the year, day, minutes, and seconds are missing and have been dropped.

Do not confuse missing components with zero values. The durations P3D and P0000-00-03 are not the same because a component value of 0 is not the same as a missing component value. Change instances of 0 to x (Pxxxx-xx-03) for this value to be considered the equivalent of P3D.

Missing components are not allowed for values that contain a time zone offset. Therefore, use 00 in place of omitted components.

The following formats write omitted components that use the hyphen and the x:

26 Chapter 1 • Overview of Formats

Page 33: ) Formats and Informats: Reference - go.documentation.sas.com

Format Datetime Form Duration Form Example

$N8601H yyyy-mm-ddThh:mm:ss PnYnMnDTnHnMnS --09-15T15:-:53

P2Y2DT4H5M6S/--09-15T15:-:00

$N8601EH yyyy-mm-ddThh:mm:ss Pyyyy-mm-ddThh:mm:ss P000---02T02:55:20/2012---15T-:-:45

$N8601X yyyy-mm-ddThh:mm:ss PnYnMnDTnHnMnS P2Y2DT4H5M6S/xxxx-09-15T15:xx:00

$N8601EX yyyy-mm-ddThh:mm:ss Pyyyy-mm-ddThh:mm:ss P0003-xx-02T02:55:20/2012-xx-15Txx:xx:45

Datetime values with missing components that are formatted with either the $N8601B. format or the $N8601BA. format are formatted in the extended notation that uses the hyphen for missing components to ensure accurate data. For example, when the month is the missing component, the value 2012---15 is written, and not 2012-15.

The extended notation with hyphens is also used instead of the basic notation if a duration is formatted using the $N8601BA. format. Using the same date, P2012---15 is written, and not P2012-15.

Writing Truncated Duration, Datetime, and Interval ValuesDuration, datetime, and interval values can be truncated when one or more lower-order values are 0 or are not significant. When SAS writes a truncated value that uses the formats $N8601B., $N8601BA., $N8601E., and $N8601EA., the display of the value stops at the last nonmissing component.

When you format a truncated value by using either the $N8601H. format or the $N8601EH. format, the lower-order components are written with a hyphen. When you format a truncated value that uses the $N8601X. format or the $N8601EX. format, the lower-order components are written with an x.

These examples show truncated values:

• p00030202T1031

• 2012-09-15T15/2014-09-15T15:53

• –p0003-03-03T-:-:-

• P2y3m4dT5h6m

• 2012-09-xxTxx:xx:xx

• 2012

Normalizing Duration ComponentsWhen a value for a duration component is greater than the largest standard value for a component, SAS normalizes the component except when the duration component is a single component. The following table shows examples of normalized duration components:

Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations27

Page 34: ) Formats and Informats: Reference - go.documentation.sas.com

Duration Extended Normalized Duration

p3y13m p0004-01

pt24h24m65s P----01T-:25:05

p3y13mT24h61m P0004-01-01T01:01

p0004-13 p0005-01

p0003-02-61T15:61:61 P0003-04-01T16:02:01

p13m P13M

If a component contains the largest value, such as 60 for minutes or seconds, SAS normalizes the value and replaces the value with a hyphen. For example, pT12:60:13 becomes PT13:-:13.

Thirty days is used to normalize a month.

Dates and times in a datetime value that are greater than the standard value for the component are not normalized. They produce an error.

Fractions in Durations, Datetime, and Interval ValuesEnding components can contain a fraction that consists of a period or a comma, followed by one to three digits. The following examples show the use of fractions in duration, datetime, and interval values:

• 201209.5

• P2012-09-15T10.33

• 2012-09-15/P0003-03-03,333

28 Chapter 1 • Overview of Formats

Page 35: ) Formats and Informats: Reference - go.documentation.sas.com

Chapter 2

Formats Documented in Other Publications

Documentation for Additional Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Documentation for Additional FormatsFor information about additional formats, see “Dictionary of Formats for NLS” in SAS Viya National Language Support (NLS): Reference Guide.

29

Page 36: ) Formats and Informats: Reference - go.documentation.sas.com

30 Chapter 2 • Formats Documented in Other Publications

Page 37: ) Formats and Informats: Reference - go.documentation.sas.com

Chapter 3

Dictionary of Formats for SAS and the CAS Server

Formats by Category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37$BASE64X Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37$BINARY Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38$CHAR Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39$HEX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40$OCTAL Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41$QUOTE Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42$REVERJ Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43$REVERS Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44$UPCASE Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45$ Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46BEST Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46BESTD Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48BESTDOTX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50BINARY Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51COMMA Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52COMMAX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53DATEAMPM Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54DATETIME Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56DAY Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58DDMMYY Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58DDMMYYx Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60DOLLAR Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62DOLLARX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63DOWNAME Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64DTDATE Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65DTMONYY Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66DTWKDATX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68DTYEAR Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69DTYYQC Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70E Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71FLOAT Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72FRACT Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73HEX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74HHMM Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75HOUR Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77IEEE Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78JULIAN Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80MDYAMPM Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81MMDDYY Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

31

Page 38: ) Formats and Informats: Reference - go.documentation.sas.com

MMDDYYx Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84MMSS Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86MMYY Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88MMYYx Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89MONNAME Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91MONTH Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92MONYY Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92NEGPAREN Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94OCTAL Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95QTR Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96QTRR Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97ROMAN Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97TIME Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98TIMEAMPM Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100TOD Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102VAXRB Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104w Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105WEEKDATE Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106WEEKDATX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107WEEKDAY Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109WEEKU Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110WEEKV Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111WEEKW Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113YEAR Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115YYMM Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116YYMMDD Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117YYMMDDx Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119YYMON Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121YYQ Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122YYQx Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123YYQR Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125YYQRx Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126Z Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Formats by CategoryThere are four categories of formats in this list:

Category Description

Character instructs SAS to write character data values from character variables.

Date and Time instructs SAS to write data values from variables that represent dates, times, and datetimes.

ISO 8601 instructs SAS to write date, time, and datetime values using the ISO 8601 standard.

Numeric instructs SAS to write numeric data values from numeric variables.

Formats that support national languages can be found in SAS Viya National Language Support (NLS): Reference Guide.

32 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 39: ) Formats and Informats: Reference - go.documentation.sas.com

Storing user-defined formats is an important consideration if you associate these formats with variables in permanent SAS data sets, especially those data sets shared with other users.For information about creating and storing user-defined formats, see “FORMAT” in SAS Viya Utility Procedures Guide.

The following table provides brief descriptions of the SAS formats that are supported in traditional SAS and CAS. For more detailed descriptions, see the dictionary entry for each format.

Category Language Elements Description

Character $BASE64X Format (p. 37) Converts character data into ASCII text by using Base 64 encoding.

$BINARY Format (p. 38) Converts character data to binary representation.

$CHAR Format (p. 39) Writes standard character data.

$HEX Format (p. 40) Converts character data to hexadecimal representation.

$OCTAL Format (p. 41) Converts character data to octal representation.

$QUOTE Format (p. 42) Writes data values that are enclosed in double quotation marks.

$REVERJ Format (p. 43) Writes character data in reverse order and preserves blanks.

$REVERS Format (p. 44) Writes character data in reverse order and left aligns

$UPCASE Format (p. 45) Converts character data to uppercase.

$ Format (p. 46) Writes standard character data.

Date and Time DATEAMPM Format (p. 54) Writes datetime values in the form ddmmmyy:hh:mm:ss.ss with AM or PM.

DATETIME Format (p. 56) Writes datetime values in the form ddmmmyy:hh:mm:ss.ss.

DAY Format (p. 58) Writes date values as the day of the month.

DDMMYY Format (p. 58) Writes date values in the form ddmm<yy>yy or dd/mm/<yy>yy, where a forward slash is the separator and the year appears as either 2 or 4 digits.

DDMMYYx Format (p. 60) Writes date values in the form ddmm<yy>yy or dd-mm-yy<yy>, where the x in the format name is a character that represents the special character that separates the day, month, and year, which can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits.

DOWNAME Format (p. 64) Writes date values as the name of the day of the week.

DTDATE Format (p. 65) Expects a datetime value as input and writes date values in the form ddmmmyy or ddmmmyyyy.

DTMONYY Format (p. 66) Writes the date part of a datetime value as the month and year in the form mmmyy or mmmyyyy.

Formats by Category 33

Page 40: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

DTWKDATX Format (p. 68) Writes the date part of a datetime value as the day of the week and the date in the form day-of-week, dd month-name yy (or yyyy).

DTYEAR Format (p. 69) Writes the date part of a datetime value as the year in the form yy or yyyy.

DTYYQC Format (p. 70) Writes the date part of a datetime value as the year and the quarter and separates them with a colon (:).

HHMM Format (p. 75) Writes time values as hours and minutes in the form hh:mm.

HOUR Format (p. 77) Writes time values as hours and decimal fractions of hours.

JULIAN Format (p. 80) Writes date values as Julian dates in the form yyddd or yyyyddd.

MDYAMPM Format (p. 81) Writes datetime values in the form mm/dd/yy<yy> hh:mm AM|PM. The year can be either two or four digits.

MMDDYY Format (p. 82) Writes date values in the form mmdd<yy>yy or mm/dd/<yy>yy, where a forward slash is the separator and the year appears as either 2 or 4 digits.

MMDDYYx Format (p. 84) Writes date values in the form mmdd<yy>yy or mm-dd-<yy>yy, where the x in the format name is a character that represents the special character that separates the month, day, and year. The special character can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits.

MMSS Format (p. 86) Writes time values as the number of minutes and seconds since midnight.

MMYY Format (p. 88) Writes date values in the form mmM<yy>yy, where M is the separator and the year appears as either 2 or 4 digits.

MMYYx Format (p. 89) Writes date values in the form mm<yy>yy or mm-<yy>yy, where the x in the format name is a character that represents the special character that separates the month and the year, which can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits.

MONNAME Format (p. 91) Writes date values as the name of the month.

MONTH Format (p. 92) Writes date values as the month of the year.

MONYY Format (p. 92) Writes date values as the month and the year in the form mmmyy or mmmyyyy.

QTR Format (p. 96) Writes date values as the quarter of the year.

QTRR Format (p. 97) Writes date values as the quarter of the year in Roman numerals.

TIME Format (p. 98) Writes time values as hours, minutes, and seconds in the form hh:mm:ss.ss.

34 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 41: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

TIMEAMPM Format (p. 100) Writes time and datetime values as hours, minutes, and seconds in the form hh:mm:ss.ss with AM or PM.

TOD Format (p. 102) Writes SAS time values and the time portion of SAS datetime values in the form hh:mm:ss.ss.

WEEKDATE Format (p. 106) Writes date values as the day of the week and the date in the form day-of-week, month-name dd, yy (or yyyy).

WEEKDATX Format (p. 107) Writes date values as the day of the week and date in the form day-of-week, dd month-name yy (or yyyy).

WEEKDAY Format (p. 109) Writes date values as the day of the week.

WEEKU Format (p. 110) Writes a week number in decimal format by using the U algorithm.

WEEKV Format (p. 111) Writes a week number in decimal format by using the V algorithm.

WEEKW Format (p. 113) Writes a week number in decimal format by using the W algorithm.

YEAR Format (p. 115) Writes date values as the year.

YYMM Format (p. 116) Writes date values in the form <yy>yyMmm, where M is a character separator to indicate that the month number follows the M and the year appears as either 2 or 4 digits.

YYMMDD Format (p. 117) Writes date values in the form yymmdd or <yy>yy-mm-dd, where a hyphen is the separator and the year appears as either 2 or 4 digits.

YYMMDDx Format (p. 119) Writes date values in the form yymmdd or <yy>yy-mm-dd, where the x in the format name is a character that represents the special character which separates the year, month, and day. The special character can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits.

YYMON Format (p. 121) Writes date values in the form yymmm or yyyymmm.

YYQ Format (p. 122) Writes date values in the form <yy>yyQq, where Q is the separator, the year appears as either 2 or 4 digits, and q is the quarter of the year.

YYQx Format (p. 123) Writes date values in the form <yy>yyq or <yy>yy-q, where the x in the format name is a character that represents the special character that separates the year and the quarter or the year, which can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits.

YYQR Format (p. 125) Writes date values in the form <yy>yyQqr, where Q is the separator, the year appears as either 2 or 4 digits, and qr is the quarter of the year expressed in roman numerals.

Formats by Category 35

Page 42: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

YYQRx Format (p. 126) Writes date values in the form <yy>yyqr or <yy>yy-qr, where the x in the format name is a character that represents the special character that separates the year and the quarter or the year, which can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits and qr is the quarter of the year expressed in roman numerals.

Numeric BEST Format (p. 46) SAS chooses the best notation.

BESTD Format (p. 48) Prints numeric values, lining up decimal places for values of similar magnitude, and prints integers without decimals.

BESTDOTX Format (p. 50) Specifies that SAS choose the best notation and use a dot as a decimal separator.

BINARY Format (p. 51) Converts numeric values to binary representation.

COMMA Format (p. 52) Writes numeric values with a comma that separates every three digits and a period that separates the decimal fraction.

COMMAX Format (p. 53) Writes numeric values with a period that separates every three digits and a comma that separates the decimal fraction.

DOLLAR Format (p. 62) Writes numeric values with a leading dollar sign, a comma that separates every three digits, and a period that separates the decimal fraction.

DOLLARX Format (p. 63) Writes numeric values with a leading dollar sign, a period that separates every three digits, and a comma that separates the decimal fraction.

E Format (p. 71) Writes numeric values in scientific notation.

FLOAT Format (p. 72) Generates a native single-precision, floating-point value by multiplying a number by 10 raised to the dth power.

FRACT Format (p. 73) Converts numeric values to fractions.

HEX Format (p. 74) Converts real binary (floating-point) values to hexadecimal representation.

IEEE Format (p. 78) Generates an IEEE floating-point value by multiplying a number by 10 raised to the dth power.

NEGPAREN Format (p. 94) Writes negative numeric values in parentheses.

OCTAL Format (p. 95) Converts numeric values to octal representation.

ROMAN Format (p. 97) Writes numeric values as roman numerals.

VAXRB Format (p. 104) Writes real binary (floating-point) data in VMS format.

w Format (p. 105) Writes standard numeric data one digit per byte.

36 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 43: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

Z Format (p. 128) Writes standard numeric data with leading 0s.

Dictionary

$BASE64X FormatConverts character data into ASCII text by using Base 64 encoding.

Category: Character

Alignment: Left

Syntax$BASE64Xw.

Syntax Descriptionw

specifies the width of the output field.

You can use the following formula to determine the width:

format-width=(variable-length+2)/3*4

When the variable-length+2 is divided by 3, the results are truncated to an integer and multiplied by 4. For example, if a variable length is 48, the width calculation is (48+2)/3*4=64.

If the format width is too small, the value is not converted. No message is written to the SAS log.

Default 1

Range 1–32767

DetailsBase 64 is an industry encoding method whose encoded characters are determined by using a positional scheme that uses only ASCII characters. Several Base 64 encoding schemes have been defined by the industry for specific uses, such as email or content masking. SAS maps positions 0–61 to the characters A–Z, a–z, and 0–9. Position 62 maps to the character +, and position 63 maps to the character /.

Here are some uses of Base 64 encoding:

• embed binary data in an XML file

• encode passwords

• encode URLs

$BASE64X Format 37

Page 44: ) Formats and Informats: Reference - go.documentation.sas.com

The '=' character in the encoded results indicates that the results have been padded with zero bits. In order for the encoded characters to be decoded, the '=' must be included in the value to be decoded.

Exampleput x $base64x64.;

Value of x Result

"FCA01A7993BC" RkNBMDFBNzk5M0JD

"MyPassword" TXlQYXNzd29yZA= =

"www.mydomain.com/myhiddenURL"

d3d3Lm15ZG9tYWluLmNvbi9teWhpZGRlblVSTA= =

See Also• The LIBNAME statement option “XMLDOUBLE=DISPLAY | INTERNAL” in SAS

Viya XML LIBNAME Engine: User’s Guide

Informats:

• “$BASE64X Informat” on page 261

$BINARY FormatConverts character data to binary representation.

Category: Character

Alignment: Left

Syntax$BINARYw.

Syntax Descriptionw

specifies the width of the output field.

Default The default width is calculated based on the length of the variable to be printed.

Range 1–32767

ComparisonsThe $BINARYw. format converts character values to binary representation. The BINARYw. format converts numeric values to binary representation.

38 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 45: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleput @1 name $binary16.;

Value of name Result

ASCII

AB 0100000101000010

$CHAR FormatWrites standard character data.

Category: Character

Alignment: Left

Syntax$CHARw.

Syntax Descriptionw

specifies the width of the output field.

Default 8 if the length of variable is undefined; otherwise, the length of the variable

Range 1–32767

Comparisons• The $CHARw. format is identical to the $w. format.

• The $CHARw. and $w. formats do not trim leading blanks. To trim leading blanks, use the LEFT function to left align character data. Alternatively, use the PUT statement with the colon (:) format modifier and the format of your choice to produce list output.

Exampleput @7 name $char4.;

Value of name Result

----+----1

XYZ XYZ

$CHAR Format 39

Page 46: ) Formats and Informats: Reference - go.documentation.sas.com

$HEX FormatConverts character data to hexadecimal representation.

Category: Character

Alignment: Left

Syntax$HEXw.

Syntax Descriptionw

specifies the width of the output field.

Default The default width is calculated based on the length of the variable to be printed.

Range 1–32,767

Tips To ensure that SAS writes the full hexadecimal equivalent of your data, make w twice the length of the variable or field that you want to represent.

If w is greater than twice the length of the variable that you want to represent, $HEXw. pads it with blanks.

DetailsThe $HEXw. format produces hexadecimal representations of ASCII codes for characters. Each byte requires two columns. Therefore, you need twice as many columns to output a value with the $HEXw. format.

ComparisonsThe HEXw. format converts real binary numbers to their hexadecimal equivalent.

Exampleput @5 name $hex4.;

Value of name Result

ASCII

----+----1

AB 4142

40 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 47: ) Formats and Informats: Reference - go.documentation.sas.com

$OCTAL FormatConverts character data to octal representation.

Category: Character

Alignment: Left

Syntax$OCTALw.

Syntax Descriptionw

specifies the width of the output field.

Default The default width is calculated based on the length of the variable to be printed.

Range 1–32767

Tip Because each character value generates three octal characters, increase the value of w by three times the length of the character value.

ComparisonsThe $OCTALw. format converts character values to the octal representation of their character codes. The OCTALw. format converts numeric values to octal representation.

ExampleThe following example shows ASCII output when you use the $OCTALw. format.

data _null_; infile datalines truncover; input item $5.; put item $octal15.; datalines;artrice bank;run;

SAS writes the following results to the log.

141162164040040162151143145040142141156153040

$OCTAL Format 41

Page 48: ) Formats and Informats: Reference - go.documentation.sas.com

$QUOTE FormatWrites data values that are enclosed in double quotation marks.

Category: Character

Alignment: Left

Syntax$QUOTEw.

Syntax Descriptionw

specifies the width of the output field.

Default 2, if the length of the variable is undefined. Otherwise, the default is the length of the variable + 2

Range 2–32767

Tip Make w wide enough to include the left and right quotation marks.

DetailsThe following list describes the output that SAS produces when you use the $QUOTEw. format. For examples of these items, see the examples below.

• If your data value is not enclosed in quotation marks, SAS encloses the output in double quotation marks.

• If your data value is not enclosed in quotation marks, but the value contains a single quotation mark, SAS does the following:

• encloses the data value in double quotation marks

• does not change the single quotation mark

• If your data value begins and ends with single quotation marks, and the value contains double quotation marks, SAS does the following:

• encloses the data value in double quotation marks

• duplicates the double quotation marks that are found in the data value

• does not change the single quotation marks

• If your data value begins and ends with single quotation marks, and the value contains two single contiguous quotation marks, SAS does the following:

• encloses the value in double quotation marks

• does not change the single quotation marks

• If your data value begins and ends with single quotation marks, and contains both double quotation marks and single, contiguous quotation marks, SAS does the following:

• encloses the value in double quotation marks

42 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 49: ) Formats and Informats: Reference - go.documentation.sas.com

• duplicates the double quotation marks that are found in the data value

• does not change the single quotation marks

• If the length of the target field is not large enough to contain the string and its quotation marks, SAS returns as much of the quoted string that fits into the field.

Exampleput name $quote20.;

Value of name Result

----+----1----+----2

SAS "SAS"

SAS's "SAS's"

'ad"verb"' "'ad""verb""'"

'ad''verb' "'ad''verb'"

'"ad"''"verb"'

----+----1----+----2"'""ad""''""verb""'"

deoxyribonucleotide "deoxyribonucleotid" *

* deoxyribonucleotide is 19 characters. When SAS adds the quotation marks, the length of the string is 21 characters. SAS truncates the letter e at the end of the text to accommodate the quotation marks.

$REVERJ FormatWrites character data in reverse order and preserves blanks.

Category: Character

Alignment: Right

Syntax$REVERJw.

Syntax Descriptionw

specifies the width of the output field.

Default 1, if w is not specified

Range 1–32767

$REVERJ Format 43

Page 50: ) Formats and Informats: Reference - go.documentation.sas.com

ComparisonsThe $REVERJw. format is similar to the $REVERSw. format except that $REVERSw. left aligns the result by trimming all leading blanks.

Exampleput @1 name $reverj7.;

Name* Result

----+----1

ABCD### DCBA

###ABCD DCBA

* The character # represents a blank space.

$REVERS FormatWrites character data in reverse order and left aligns

Category: Character

Alignment: Left

Syntax$REVERSw.

Syntax Descriptionw

specifies the width of the output field.

Default 1 if w is not specified

Range 1–32767

ComparisonsThe $REVERSw. format is similar to the $REVERJw. format except that $REVERJw. does not left align the result.

Exampleput @1 name $revers7.;

44 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 51: ) Formats and Informats: Reference - go.documentation.sas.com

Name* Result

----+----1

ABCD### DCBA

###ABCD DCBA

* The character # represents a blank space.

$UPCASE FormatConverts character data to uppercase.

Category: Character

Alignment: Left

Syntax$UPCASEw.

Syntax Descriptionw

specifies the width of the output field.

Default 8, if the length of the variable is undefined. Otherwise, the default is the length of the variable

Range 1–32767

DetailsSpecial characters, such as hyphens and other symbols, are not altered.

Exampleput @1 name $upcase9.;

Value of name Result

----+----1

coxe-ryan COXE-RYAN

$UPCASE Format 45

Page 52: ) Formats and Informats: Reference - go.documentation.sas.com

$ FormatWrites standard character data.

Category: Character

Alignment: Left

Alias: $Fw.

Syntax$w.

Syntax Descriptionw

specifies the width of the output field. You can specify a number or a column range.

Default 1, if the length of the variable is undefined. Otherwise, the default is the length of the variable.

Range 1–32767

ComparisonsThe $w. format and the $CHARw. format are identical, and they do not trim leading blanks. To trim leading blanks, use the LEFT function to left align character data, or use list output with the colon (:) format modifier and the format of your choice.

Exampleput @10 name $5.;put name $ 10-15;

Value of name * Result

----+----1----+----2

#Cary Cary

Tokyo Tokyo

* The character # represents a blank space.

BEST FormatSAS chooses the best notation.

Category: Numeric

46 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 53: ) Formats and Informats: Reference - go.documentation.sas.com

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxBESTw.

Syntax Descriptionw

specifies the width of the output field.

Default 12

Range 1–32

Tip If you print numbers between 0 and .01 exclusively, use a field width of at least 7 to avoid excessive rounding. If you print numbers between 0 and -.01 exclusively, use a field width of at least 8.

DetailsWhen a format is not specified for writing a numeric value, SAS uses the BESTw. format as the default format. The BESTw. format attempts to write numbers that balance the conflicting requirements of readability, precision, and brevity. Here are several rules:

• Values are written with the maximum readable precision, as determined by the width. The maximum precision for floating-point numbers might be limited to 14 or 15 digits, as determined by the width.

• Integers are written without decimals.

• Numbers with decimals are written with as many digits to the left and right of the decimal point as needed or as allowed by the width.

• Extreme values and values with leading or trailing zeros might be written in scientific notation to fit into the specified width, to increase the precision, or to simplify the magnitude of the number. Extremely small values might be written as 0 if the width is too small for scientific notation.

• Trailing zeros are not written.

• If a value cannot be represented in either decimal or scientific notation in the width that is specified, the output field is filled with asterisks.

• The behavior of the BESTw. format is affected by the setting of the DECIMALCONV option. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference. These rules are generally applicable regardless of the option setting.

Comparisons• The BESTw. format writes as many significant digits as possible in the output field,

but if the numbers vary in magnitude, the decimal points do not line up. Integers are printed without a decimal.

BEST Format 47

Page 54: ) Formats and Informats: Reference - go.documentation.sas.com

• The Dw.p format writes numbers with the desired precision and more alignment than the BESTw format.

• The BESTDw.p format is a combination of the BESTw. format and the Dw.p format in that it formats all numeric data, and it does a better job of aligning decimals than the BESTw. format.

• The w.d format aligns decimal points, if possible, but does not necessarily show the same precision for all numbers.

ExampleThe following statements produce these results:

SAS Statement Result

----+----1

x=1257000;put x best6.;

1.26E6

x=1257000;put x best3.;

1E6

See Also

Formats:

• “BESTD Format” on page 48

BESTD FormatPrints numeric values, lining up decimal places for values of similar magnitude, and prints integers without decimals.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxBESTDw.p

Syntax Descriptionw

specifies the width of the output field.

48 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 55: ) Formats and Informats: Reference - go.documentation.sas.com

Default 12

Range 1–32

pspecifies the precision. This argument is optional.

Default 3

Range 0 to w–1

Requirement must be less than w

Tip If p is omitted or is specified as 0, then p is set to 3.

DetailsThe BESTDw.p format writes numbers so that the decimal point aligns in groups of values with similar magnitude. Integers are printed without a decimal point. Larger values of p print the data values with more precision and potentially more shifts in the decimal point alignment. Smaller values of p print the data values with less precision and a greater chance of decimal point alignment.

The format chooses the number of decimal places to print for ranges of values, even when the underlying values can be represented with fewer decimal places.

Comparisons• The BESTw. format writes as many significant digits as possible in the output field,

but if the numbers vary in magnitude, the decimal points do not line up. Integers are printed without a decimal.

• The Dw.p format writes numbers with the desired precision and more alignment than the BESTw format.

• The BESTDw.p format is a combination of the BESTw. format and the Dw.p format in that it formats all numeric data, and it does a better job of aligning decimals than the BESTw. format.

• The w.d format aligns decimal points, if possible, but it does not necessarily show the same precision for all numbers.

Exampleput x bestd14.;

Data Line Result

----+----1----+

12345 12345

123.45 123.4500000

1.2345 1.2345000

BESTD Format 49

Page 56: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Result

.12345 0.1234500

1.23456789 1.2345679

See Also

Formats:

• “BEST Format” on page 46

• “D Format” on page 140

BESTDOTX FormatSpecifies that SAS choose the best notation and use a dot as a decimal separator.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxBESTDOTX.w.

Argumentsw

specifies the width of the output field.

Default 12

Range 1–32

Tip If you print numbers between 0 and .01 exclusively, then use a field width of at least 7 to avoid excessive rounding. If you print numbers between 0 and -.01 exclusively, use a field width of at least 8.

DetailsIf the NLDECSEPARATOR system option is disabled, the BESTw. and BESTDOTXw. formats process data the same way. If the NLDECSEPARATOR system option is enabled, then the results from the BESTw. and BESTDOTXw. formats are different. See the following table to understand the differences:

50 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 57: ) Formats and Informats: Reference - go.documentation.sas.com

LOCALE option

Default decimal separator character for the locale

NLDECSEPARATOR option

Separator character used by BESTw.

Separator character used by BESTDOTXw.

en_US Dot Disabled (default) Dot Dot

Enabled Dot Dot

fr_FR Comma Disabled (default) Dot Dot

Enabled Comma Dot

For more information about the NLDECSEPARATOR system option, see SAS Viya National Language Support (NLS): Reference Guide.

ComparisonsThe BESTDOTXw format writes as many significant digits as possible in the output field. Integers are printed with a decimal. The BESTw. format writes as many significant digits as possible in the output field, but if the numbers vary in magnitude, the decimal points do not line up. Integers are printed without a decimal.

See Also

Formats:

• “BEST Format” on page 46

BINARY FormatConverts numeric values to binary representation.

Category: Numeric

Alignment: Left

SyntaxBINARYw.

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 1–64

ComparisonsBINARYw. converts numeric values to binary representation. The $BINARYw. format converts character values to binary representation.

BINARY Format 51

Page 58: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleput @1 x binary8.;

Value of x Result

----+----1

123.45 01111011

123 01111011

-123 10000101

COMMA FormatWrites numeric values with a comma that separates every three digits and a period that separates the decimal fraction.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxCOMMAw.d

Syntax Descriptionw

specifies the width of the output field.

Default 6

Range 1–32

Tip Make w wide enough to write the numeric values, the commas, and the optional decimal point.

dspecifies the number of digits to the right of the decimal point in the numeric value. This argument is optional.

Range 0–31

Requirement must be less than w

52 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 59: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe COMMAw.d format writes numeric values with a comma that separates every three digits and a period that separates the decimal fraction.

Comparisons• The COMMAw.d format is similar to the COMMAXw.d format, but the

COMMAXw.d format reverses the roles of the decimal point and the comma. This convention is common in European countries.

• The COMMAw.d format is similar to the DOLLARw.d format except that the COMMAw.d format does not print a leading dollar sign.

Exampleput @10 sales comma10.2;

Value of sales Result

----+----1----+----2

23451.23 23,451.23

123451.234 123,451.23

See Also

Formats:

• “COMMAX Format” on page 53

• “DOLLAR Format” on page 62

COMMAX FormatWrites numeric values with a period that separates every three digits and a comma that separates the decimal fraction.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxCOMMAXw.d

COMMAX Format 53

Page 60: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field. This argument is optional.

Default 6

Range 1–32

Tip Make w wide enough to write the numeric values, the commas, and the optional decimal point.

dspecifies the number of digits to the right of the decimal point in the numeric value.

Range 0–31

Requirement must be less than w

ComparisonsThe COMMAw.d format is similar to the COMMAXw.d format, but the COMMAXw.d format reverses the roles of the decimal point and the comma. This convention is common in European countries.

Exampleput @10 sales commax10.2;

Value of sales Result

----+----1----+----2

23451.23 23.451,23

123451.234 123.451,23

DATEAMPM FormatWrites datetime values in the form ddmmmyy:hh:mm:ss.ss with AM or PM.

Category: Date and Time

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxDATEAMPMw.d

54 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 61: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field.

Default 19

Range 7–40

Tip SAS requires a minimum w value of 13 to write AM or PM. For widths between 10 and 12, SAS writes a 24-hour clock time.

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Range 0–39

Requirement must be less than w

Note If w–d< 17, SAS truncates the decimal values.

DetailsThe DATEAMPMw.d format writes SAS datetime values in the form ddmmmyy:hh:mm:ss.ss, where

ddis an integer that represents the day of the month.

mmm is the first three letters of the month name.

yyis a two-digit integer that represents the year.

hhis an integer that represents the hour.

mmis an integer that represents the minutes.

ss.ssis the number of seconds to two decimal places.

ComparisonsThe DATEAMPMw.d format is similar to the DATETIMEw.d format except that DATEAMPMw.d prints AM or PM at the end of the time.

ExampleThe example table uses the input value of 1650538894, which is the SAS datetime value that corresponds to 11:01:34 a.m. on April 20, 2012.

SAS Statement Result

----+----1----+----2----+

DATEAMPM Format 55

Page 62: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

put event dateampm.; 20APR12:11:01:34 AM

put event dateampm7.; 20APR12

put event dateampm10.; 20APR:11

put event dateampm13.; 20APR12:11 AM

put event dateampm22.2; 20APR12:11:01:34.00 AM

See Also

Formats:

• “DATETIME Format” on page 56

DATETIME FormatWrites datetime values in the form ddmmmyy:hh:mm:ss.ss.

Category: Date and Time

Alignment: Right

Restriction: If w–d< 17, SAS truncates the decimal values.

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxDATETIMEw.d

Syntax Descriptionw

specifies the width of the output field.

Default 16

Range 7–40

Tip SAS requires a minimum w value of 16 to write a SAS datetime value with the date, hour, and seconds. Add an additional two places to w and a value to d to return values with optional decimal fractions of seconds.

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

56 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 63: ) Formats and Informats: Reference - go.documentation.sas.com

Range 0–39

Requirement must be less than w

DetailsThe DATETIMEw.d format writes SAS datetime values in the form ddmmmyy:hh:mm:ss.ss:

ddis an integer that represents the day of the month.

mmm is the first three letters of the month name.

yyis a two-digit integer that represents the year.

hhis an integer that represents the hour in 24–hour clock time.

mmis an integer that represents the minutes.

ss.ssis the number of seconds to two decimal places.

ExampleThe example table uses the input value of 1668138559, which is the SAS datetime value that corresponds to 3:49:19 a.m. on November 10, 2012.

SAS Statement Result

----+----1----+----2----+

put event datetime.; 10NOV12:03:49:19

put event datetime7.; 10NOV12

put event datetime12.; 10NOV12:03

put event datetime18.; 10NOV12:03:49:19

put event datetime18.1; 10NOV12:03:49:19.0

put event datetime19.; 10NOV2012:03:49:19

put event datetime20.1; 10NOV2012:03:49:19.0

put event datetime21.2; 10NOV2012:03:49:19.00

See Also

Formats:

DATETIME Format 57

Page 64: ) Formats and Informats: Reference - go.documentation.sas.com

• “DATE Format” on page 141

• “TIME Format” on page 98

Functions:

• “DATETIME Function” in SAS Viya Functions and CALL Routines: Reference

DAY FormatWrites date values as the day of the month.

Category: Date and Time

Alignment: Right

SyntaxDAYw.

Syntax Descriptionw

specifies the width of the output field.

Default 2

Range 2–32

ExampleThe example table uses the input value of 19158, which is the SAS date value that corresponds to June 14, 2012.

SAS Statement Result

----+

put date day2.; 14

DDMMYY FormatWrites date values in the form ddmm<yy>yy or dd/mm/<yy>yy, where a forward slash is the separator and the year appears as either 2 or 4 digits.

Category: Date and Time

Alignment: Right

58 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 65: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxDDMMYYw.

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 2–10

Interaction When w has a value of from 2 to 5, the date appears with as much of the day and the month as possible. When w is 7, the date appears as a two-digit year without slashes.

DetailsThe DDMMYYw. format writes SAS date values in the form ddmm<yy>yy or dd/mm/<yy>yy:

dd is an integer that represents the day of the month.

/is the separator.

mmis an integer that represents the month.

<yy>yyis a two-digit or four-digit integer that represents the year.

ExampleThe following examples use the input value of 19351, which is the SAS date value that corresponds to December 24, 2012.

SAS Statement Result

----+----1

put date ddmmyy5.; 24/12

put date ddmmyy6.; 241212

put date ddmmyy7.; 241212

put date ddmmyy8.; 24/12/12

put date ddmmyy10.; 24/12/2012

DDMMYY Format 59

Page 66: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYYx Format” on page 60

• “MMDDYY Format” on page 82

• “YYMMDD Format” on page 117

Functions:

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

DDMMYYx FormatWrites date values in the form ddmm<yy>yy or dd-mm-yy<yy>, where the x in the format name is a character that represents the special character that separates the day, month, and year, which can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits.

Category: Date and Time

Alignment: Right

SyntaxDDMMYYxw.

Syntax Descriptionx

identifies a separator or specifies that no separator appear between the day, the month, and the year. The following are valid values for x:

Bseparates with a blank

Cseparates with a colon

Dseparates with a hyphen

Nindicates no separator

Pseparates with a period

Sseparates with a slash.

wspecifies the width of the output field.

Default 8

60 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 67: ) Formats and Informats: Reference - go.documentation.sas.com

Range 2–10

Interactions When w has a value of from 2 to 5, the date appears with as much of the day and the month as possible. When w is 7, the date appears as a two-digit year without separators.

When x has a value of N, the width range changes to 2–8.

DetailsThe DDMMYYxw. format writes SAS date values in the form ddmm<yy>yy or ddxmmx<yy>yy:

dd is an integer that represents the day of the month.

xis a specified separator.

mmis an integer that represents the month.

<yy>yyis a two-digit or four-digit integer that represents the year.

ExampleThe following examples use the input value of 19137, which is the SAS date value that corresponds to May 24, 2012.

SAS Statement Result

----+----1----+

put date ddmmyyc5.; 24:05

put date ddmmyyd8.; 24-05-12

put date ddmmyyp10.; 24.05.2012

put date ddmmyyn8.; 24052012

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYY Format” on page 58

• “MMDDYYx Format” on page 84

• “YYMMDDx Format” on page 119

Functions:

• “DAY Function” in SAS Viya Functions and CALL Routines: Reference

DDMMYYx Format 61

Page 68: ) Formats and Informats: Reference - go.documentation.sas.com

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

• “MONTH Function” in SAS Viya Functions and CALL Routines: Reference

• “YEAR Function” in SAS Viya Functions and CALL Routines: Reference

DOLLAR FormatWrites numeric values with a leading dollar sign, a comma that separates every three digits, and a period that separates the decimal fraction.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxDOLLARw.d

Syntax Descriptionw

specifies the width of the output field.

Default 6

Range 2–32

dspecifies the number of digits to the right of the decimal point in the numeric value. This argument is optional.

Range 0–31

Requirement must be less than w

DetailsThe DOLLARw.d format writes numeric values with a leading dollar sign, a comma that separates every three digits, and a period that separates the decimal fraction.

The hexadecimal representation of the code for the dollar sign character ($) is 5B on EBCDIC systems and 24 on ASCII systems. The monetary character that these codes represent might be different in other countries, but DOLLARw.d always produces one of these codes. If you need another monetary character, define your own format with the FORMAT procedure. For more details, see “FORMAT” in SAS Viya Utility Procedures Guide.

62 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 69: ) Formats and Informats: Reference - go.documentation.sas.com

Comparisons• The DOLLARw.d format is similar to the DOLLARXw.d format, but the

DOLLARXw.d format reverses the roles of the decimal point and the comma. This convention is common in European countries.

• The DOLLARw.d format is the same as the COMMAw.d format except that the COMMAw.d format does not write a leading dollar sign.

Exampleput @3 netpay dollar10.2;

Value of netpay Result

----+----1----+

1254.71 $1,254.71

See Also

Formats:

• “COMMA Format” on page 52

• “DOLLARX Format” on page 63

DOLLARX FormatWrites numeric values with a leading dollar sign, a period that separates every three digits, and a comma that separates the decimal fraction.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxDOLLARXw.d

Syntax Descriptionw

specifies the width of the output field.

Default 6

Range 2–32

DOLLARX Format 63

Page 70: ) Formats and Informats: Reference - go.documentation.sas.com

dspecifies the number of digits to the right of the decimal point in the numeric value. This argument is optional.

Default 0

Range 0–31

Requirement must be less than w

DetailsThe DOLLARXw.d format writes numeric values with a leading dollar sign, with a period that separates every three digits, and with a comma that separates the decimal fraction.

The hexadecimal representation of the code for the dollar sign character ($) is 5B on EBCDIC systems and 24 on ASCII systems. The monetary character that these codes represent might be different in other countries, but DOLLARXw.d always produces one of these codes. If you need another monetary character, define your own format with the FORMAT procedure. See For details, see “FORMAT” in SAS Viya Utility Procedures Guide.

Comparisons• The DOLLARXw.d format is similar to the DOLLARw.d format, but the

DOLLARXw.d format reverses the roles of the decimal point and the comma. This convention is common in European countries.

• The DOLLARXw.d format is the same as the COMMAXw.d format except that the COMMAw.d format does not write a leading dollar sign.

Exampleput @3 netpay dollarx10.2;

Value of netpay Result

----+----1----+

1254.71 $1.254,71

See Also

Formats:

• “COMMAX Format” on page 53

• “DOLLAR Format” on page 62

DOWNAME FormatWrites date values as the name of the day of the week.

64 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 71: ) Formats and Informats: Reference - go.documentation.sas.com

Category: Date and Time

Alignment: Right

SyntaxDOWNAMEw.

Syntax Descriptionw

specifies the width of the output field.

Default 9

Range 1–32

Tip If you omit w, SAS prints the entire name of the day.

DetailsIf necessary, SAS truncates the name of the day to fit the format width. For example, the DOWNAME2. format prints the first two letters of the day name.

ExampleThe example table uses the input value of 19137, which is the SAS date value that corresponds to May 24, 2012.

SAS Statement Result

----+----1

put date downame.; Thursday

See Also

Formats:

• “WEEKDAY Format” on page 109

DTDATE FormatExpects a datetime value as input and writes date values in the form ddmmmyy or ddmmmyyyy.

Category: Date and Time

Alignment: Right

SyntaxDTDATEw.

DTDATE Format 65

Page 72: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field.

Default 7

Range 5–9

Tip Use a width of 9 to print a four-digit year.

DetailsThe DTDATEw. format writes SAS date values in the form ddmmmyy or ddmmmyyyy, where

ddis an integer that represents the day of the month.

mmmare the first three letters of the month name.

yy or yyyyis a two-digit or four-digit integer that represents the year.

ComparisonsThe DTDATEw. format produces the same type of output that the DATEw. format produces. The difference is that the DTDATEw. format requires a datetime value.

ExampleThe example table uses a datetime value of 16APR2012:10:00:00 as input, and prints both a two-digit and a four-digit year for the DTDATEw. format.

SAS Statement Result

----+----1

put trip_date=dtdate.; 16APR12

put trip_date=dtdate9.; 16APR2012

See Also

Formats:

• “DATE Format” on page 141

DTMONYY FormatWrites the date part of a datetime value as the month and year in the form mmmyy or mmmyyyy.

Category: Date and Time

66 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 73: ) Formats and Informats: Reference - go.documentation.sas.com

Alignment: Right

SyntaxDTMONYYw.

Syntax Descriptionw

specifies the width of the output field.

Default 5

Range 5–7

DetailsThe DTMONYYw. format writes SAS datetime values in the form mmmyy or mmmyyyy, where

mmmis the first three letters of the month name.

yy or yyyyis a two–digit or four-digit integer that represents the year.

ComparisonsThe DTMONYYw. format and the MONYYw. format are similar in that they both write date values. The difference is that DTMONYYw. expects a datetime value as input, and MONYYw. expects a SAS date value.

ExampleThe example table uses as input the value 1665986932, which is the SAS datetime value that corresponds to October 16, 2012, at 06:08:52 a.m.

SAS Statement Result

----+----1

put date dtmonyy.; OCT12

put date dtmonyy5.; OCT12

put date dtmonyy6.; OCT12

put date dtmonyy7.; OCT2012

See Also

Formats:

• “DATETIME Format” on page 56

DTMONYY Format 67

Page 74: ) Formats and Informats: Reference - go.documentation.sas.com

• “MONYY Format” on page 92

DTWKDATX FormatWrites the date part of a datetime value as the day of the week and the date in the form day-of-week, dd month-name yy (or yyyy).

Category: Date and Time

Alignment: Right

SyntaxDTWKDATXw.

Syntax Descriptionw

specifies the width of the output field.

Default 29

Range 3–37

DetailsThe DTWKDATXw. format writes SAS date values in the form day-of-week, dd month-name, yy or yyyy, where

day-of-weekis either the first three letters of the day name or the entire day name.

ddis an integer that represents the day of the month.

month-nameis either the first three letters of the month name or the entire month name.

yy or yyyyis a two-digit or four-digit integer that represents the year.

ComparisonsThe DTWKDATXw. format is similar to the WEEKDATXw. format in that they both write date values. The difference is that DTWKDATXw. expects a datetime value as input, and WEEKDATXw. expects a SAS date value.

ExampleThe example table uses as input the value 1665986932, which is the SAS datetime value that corresponds to October 16, 20012, at 06:08:52 a.m.

SAS Statement Result

----+----1----+----2----+

68 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 75: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

put date dtwkdatx.; Tuesday, 16 October 2012

put date dtwkdatx3.; Tue

put date dtwkdatx8.; Tue

put date dtwkdatx25.; Tuesday, 16 Oct 2012

See Also

Formats:

• “DATETIME Format” on page 56

• “WEEKDATX Format” on page 107

DTYEAR FormatWrites the date part of a datetime value as the year in the form yy or yyyy.

Category: Date and Time

Alignment: Right

SyntaxDTYEARw.

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 2–4

DetailsThe DTYEARw. format is similar to the YEARw. format in that they both write date values. The difference is that DTYEARw. expects a datetime value as input, and YEARw. expects a SAS date value.

ExampleThe example table uses as input the value 1665986932, which is the SAS datetime value that corresponds to October 16, 2012, at 06:08:52 a.m.

DTYEAR Format 69

Page 76: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

----+----1

put date dtyear.; 2012

put date dtyear2.; 12

put date dtyear3.; 12

put date year4.; 2012

See Also

Formats:

• “DATETIME Format” on page 56

• “YEAR Format” on page 115

DTYYQC FormatWrites the date part of a datetime value as the year and the quarter and separates them with a colon (:).

Category: Date and Time

Alignment: Right

SyntaxDTYYQCw.

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 4–6

DetailsThe DTYYQCw. format writes SAS datetime values in the form yy or yyyy, followed by a colon (:) and the numeric value for the quarter of the year.

ExampleThe example table uses as input the value 1665986932, which is the SAS datetime value that corresponds to October 16, 2012, at 06:08:52 p.m..

70 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 77: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

----+----1

put date dtyyqc.; 12:4

put date dtyyqc4.; 12:4

put date dtyyqc5.; 12:4

put date dtyyqc6.; 2012:4

See Also

Formats:

• “DATETIME Format” on page 56

E FormatWrites numeric values in scientific notation.

Category: Numeric

Alignment: Right

SyntaxEw.

Syntax Descriptionw

specifies the width of the output field. The output field can display up to 14 significant digits.

Default 12

Range 7–32

DetailsWhen formatting values in scientific notation, the E format reserves the first column of the result for a minus sign and formats up to 14 significant digits.

Exampleput @1 x e10.;

E Format 71

Page 78: ) Formats and Informats: Reference - go.documentation.sas.com

Value of x Result

----+----1

1257 1.257E+03

-1257 -1.257E+03

FLOAT FormatGenerates a native single-precision, floating-point value by multiplying a number by 10 raised to the dth power.

Category: Numeric

Alignment: Left

SyntaxFLOATw.d

Syntax Descriptionw

specifies the width of the output field.

Requirement width must be 4

dspecifies the power of 10 by which to multiply the value. This argument is optional.

Default 0

Range 0-31

DetailsThis format is useful in operating environments where a float value is not the same as a truncated double. Values that are written by FLOAT4. typically are values that are meant to be read by some other external program that runs in your operating environment and that expects these single-precision values.

Note: If the value that is to be formatted is a missing value, or if it is out-of-range for a native single-precision, floating-point value, a single-precision value of zero is generated.

On IBM mainframe systems, a four-byte floating-point number is the same as a truncated eight-byte floating-point number. However, in operating environments using the IEEE floating-point standard, such as IBM PC-based operating environments and LINUX, a four-byte floating-point number is not the same as a truncated double. Hence, the RB4. format does not produce the same results as the FLOAT4. format. Floating-point representations other than IEEE might have this same characteristic.

72 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 79: ) Formats and Informats: Reference - go.documentation.sas.com

ComparisonsThe following table compares the names of float notation in several programming languages:

Language Float Notation

SAS FLOAT4

Fortran REAL+4

C float

IBM 370 ASM E

PL/I FLOAT BIN(21)

Exampleput x float4.;

Value of x Result *

1 3F800000

* The result is a hexadecimal representation of a binary number that is stored in IEEE form.

FRACT FormatConverts numeric values to fractions.

Category: Numeric

Alignment: Right

SyntaxFRACTw.

Syntax Descriptionw

specifies the width of the output field.

Default 10

Range 4–32

FRACT Format 73

Page 80: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsDividing the number 1 by 3 produces the value 0.33333333. To write this value as 1/3, use the FRACTw. format. FRACTw. writes fractions in reduced form, that is, 1/2 instead of 50/100.

Exampleput x fract8.;

Value of x Result

----+----1

0.6666666667 2/3

0.2784 174/625

HEX FormatConverts real binary (floating-point) values to hexadecimal representation.

Category: Numeric

Alignment: Left

SyntaxHEXw.

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 1–16

Tip If w < 16, the HEXw. format converts real binary numbers to fixed-point integers before writing them as hexadecimal characters. It also writes negative numbers in two's complement notation, and right aligns digits. If w is 16, HEXw. displays floating-point values in their hexadecimal form.

DetailsThe HEXw. format converts a real (floating-point) binary number to its hexadecimal representation. When you specify a width value of 1 through 15, the real binary number is truncated to a fixed-point integer before being converted to a hexadecimal number. When you specify 16 for the width, SAS writes the floating-point value of the number, but does not truncate it.

74 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 81: ) Formats and Informats: Reference - go.documentation.sas.com

In any operating environment, the least significant byte written by HEXw. is the rightmost byte.

Note: Different operating environments store floating-point values in different ways. However, the HEX16. format writes hexadecimal representations of floating-point values with consistent results in the same way that your operating environment stores them.

ComparisonsThe HEXw. numeric format and the $HEXw. character format both generate the hexadecimal equivalent of values.

Exampleput @8 x hex8.;

Value of x Result

----+----1----+----2

35.4 00000023

88 00000058

2.33 00000002

-150 FFFFFF6A

HHMM FormatWrites time values as hours and minutes in the form hh:mm.

Category: Date and Time

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxHHMMw.d

Syntax Descriptionw

specifies the width of the output field.

Default 5

HHMM Format 75

Page 82: ) Formats and Informats: Reference - go.documentation.sas.com

Range 2–20

dspecifies the number of digits to the right of the decimal point in the minutes value. The digits to the right of the decimal point specify a fraction of a minute. This argument is optional.

Default 0

Range 0–19

Requirement must be less than w

DetailsThe HHMMw.d format writes SAS time values in the form hh:mm:

hhis an integer.

Note: If hh is a single digit, HHMMw.d places a leading blank before the digit. For example, the HHMMw.d. format writes 9:00 instead of 09:00.

mm is an integer between 00 and 59 that represents minutes.

SAS rounds hours and minutes that are based on the value of seconds in a SAS time value.

The HHMM format uses asterisks to format values that are outside the time range 0–24 hours, such as datetime values.

ComparisonsThe HHMMw.d format is similar to the TIMEw.d format except that the HHMMw.d format does not print seconds.

The HHMMw.d format writes a leading blank for a single-hour digit. The TODw.d format writes a leading zero for a single-hour digit.

ExampleThe example table uses the input value of 46796, which is the SAS time value that corresponds to 12:59:56 p. m.

SAS Statement Result

----+----1

put time hhmm.; 13:00

put time hhmm8.2; 12:59.93

In the first example, SAS rounds up the time value four seconds based on the value of seconds in the SAS time value. In the second example, by adding a decimal specification of 2 to the format shows that fifty-six seconds is 93% of a minute.

76 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 83: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

Formats:

• “HOUR Format” on page 77

• “MMSS Format” on page 86

• “TIME Format” on page 98

• “TOD Format” on page 102

Functions:

• “HMS Function” in SAS Viya Functions and CALL Routines: Reference

• “HOUR Function” in SAS Viya Functions and CALL Routines: Reference

• “MINUTE Function” in SAS Viya Functions and CALL Routines: Reference

• “SECOND Function” in SAS Viya Functions and CALL Routines: Reference

• “TIME Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “TIME Informat” on page 354

HOUR FormatWrites time values as hours and decimal fractions of hours.

Category: Date and Time

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxHOURw.d

Syntax Descriptionw

specifies the width of the output field.

Default 2

Range 2–20

dspecifies the number of digits to the right of the decimal point in the hour value. Therefore, SAS prints decimal fractions of the hour. This argument is optional.

HOUR Format 77

Page 84: ) Formats and Informats: Reference - go.documentation.sas.com

Range 0–19

Requirement must be less than w

DetailsSAS rounds hours based on the value of minutes in the SAS time value.

The HOUR format uses asterisks to format values that are outside the time range 0–24 hours, such as datetime values.

ExampleThe example table uses the input value of 41400, which is the SAS time value that corresponds to 11:30 a.m.

SAS Statement Result

----+----1

put time hour4.1; 11.5

See Also

Formats:

• “HHMM Format” on page 75

• “MMSS Format” on page 86

• “TIME Format” on page 98

• “TOD Format” on page 102

Functions:

• “HMS Function” in SAS Viya Functions and CALL Routines: Reference

• “HOUR Function” in SAS Viya Functions and CALL Routines: Reference

• “MINUTE Function” in SAS Viya Functions and CALL Routines: Reference

• “SECOND Function” in SAS Viya Functions and CALL Routines: Reference

• “TIME Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “TIME Informat” on page 354

IEEE FormatGenerates an IEEE floating-point value by multiplying a number by 10 raised to the dth power.

Category: Numeric

78 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 85: ) Formats and Informats: Reference - go.documentation.sas.com

Alignment: Left

CAUTION: Large floating-point values and floating-point values that require precision might not be identical to the original SAS value when they are written to an IBM mainframe using the IEEE format and read back into SAS using the IEE informat.

SyntaxIEEEw.d

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 3–8

Tip If w is 8, an IEEE double-precision, floating-point number is written. If w is 5, 6, or 7, an IEEE double-precision, floating-point number is written, which assumes truncation of the appropriate number of bytes. If w is 4, an IEEE single-precision floating-point number is written. If w is 3, an IEEE single-precision, floating-point number is written, which assumes truncation of one byte.

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–10

DetailsThis format is useful in operating environments where IEEEw.d is the floating-point representation that is used. In addition, you can use the IEEEw.d format to create files that are used by programs in operating environments that use the IEEE floating-point representation.

Typically, programs generate IEEE values in single-precision (4 bytes) or double-precision (8 bytes). Programs perform truncation solely to save space on output files. Machine instructions require that the floating-point number be one of the two lengths. The IEEEw.d format allows other lengths, which enables you to write data to files that contain space-saving truncated data.

Exampletest1=put(x,ieee4.); put test1 $hex8.;test2=put(x,ieee5.); put test2 $hex10.;

IEEE Format 79

Page 86: ) Formats and Informats: Reference - go.documentation.sas.com

Value of x Result*

1 3F800000

3FF0000000

* The result contains hexadecimal representations of binary numbers stored in IEEE form.

JULIAN FormatWrites date values as Julian dates in the form yyddd or yyyyddd.

Category: Date and Time

Alignment: Left

SyntaxJULIANw.

Syntax Descriptionw

specifies the width of the output field.

Default 5

Range 5–7

Tip If w is 5, the JULIANw. format writes the date with a two-digit year. If w is 7, the JULIANw. format writes the date with a four-digit year.

DetailsThe JULIANw. format writes SAS date values in the form yyddd or yyyyddd:

yy or yyyyis a two-digit or four-digit integer that represents the year.

dddis the number of the day, 1–365 (or 1–366 for leap years), in that year.

ExampleThe example table uses the input value of 19114, which is the SAS date value that corresponds to May 1, 2012 (the 122nd day of the year).

SAS Statement Result

----+----1

put date julian5.; 12122

80 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 87: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

put date julian7.; 2012122

See Also

Functions:

• “DATEJUL Function” in SAS Viya Functions and CALL Routines: Reference

• “JULDATE Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “JULIAN Informat” on page 315

MDYAMPM FormatWrites datetime values in the form mm/dd/yy<yy> hh:mm AM|PM. The year can be either two or four digits.

Category: Date and Time

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

Note: The default time period is AM.

SyntaxMDYAMPMw.

Syntax Descriptionw

specifies the width of the output field.

Default 19

Range 8−40

DetailsThe MDYAMPMw.d format writes SAS datetime values in the following form:

mm/dd/yy<yy> hh:mm<AM | PM>:

mmis an integer between 1 and 12 that represents the month.

ddis an integer between 1 and 31 that represents the day of the month.

MDYAMPM Format 81

Page 88: ) Formats and Informats: Reference - go.documentation.sas.com

yy or yyyyspecifies a two-digit or four-digit integer that represents the year.

hhis an integer between 00 and 23 that represents hours.

mmis an integer between 00 and 59 that represents minutes.

AM | PMspecifies either the time period 00:01−12:00 noon (PM) or the time period 12:01−12:00 midnight (AM). The default is AM.

date and time separator charactersis one of several special characters, such as the slash (/), colon (:), or a blank character that SAS uses to separate date and time components.

ComparisonsThe MDYAMPMw. format writes datetime values with separators in the form mm/dd/yy<yy> hh:mm AM | PM, and requires a space between the date and the time.

The DATETIMEw.d format writes datetime values with separators in the form ddmmmyy<yy>: hh:mm:ss.ss.

ExampleThis example uses the input value of 1663343580, which is the SAS datetime value that corresponds to 3:53:00 PM on September 15, 2012.

SAS Statement Result

put dt mdyampm25. 9/15/2012 3:53 PM

See Also

Formats:

• “DATETIME Format” on page 56

Informats:

• “MDYAMPM Informat” on page 316

MMDDYY FormatWrites date values in the form mmdd<yy>yy or mm/dd/<yy>yy, where a forward slash is the separator and the year appears as either 2 or 4 digits.

Category: Date and Time

Alignment: Right

82 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 89: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxMMDDYYw.

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 2–10

Interaction When w has a value of from 2 to 5, the date appears with as much of the month and the day as possible. When w is 7, the date appears as a two-digit year without slashes.

DetailsThe MMDDYYw. format writes SAS date values in one of the following forms:

mmdd<yy>yy

mm/dd/<yy>yy:

where

mmis an integer that represents the month.

/is the separator.

ddis an integer that represents the day of the month.

<yy>yyis a two-digit or four-digit integer that represents the year.

ExampleThe following examples use the input value of 19291, which is the SAS date value that corresponds to October 25, 2012.

SAS Statement Result

----+----1----+

put day mmddyy2.; 10

put day mmddyy3.; 10

put day mmddyy4.; 1025

put day mmddyy5.; 10/25

put day mmddyy6.; 102512

MMDDYY Format 83

Page 90: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

put day mmddyy7.; 102512

put day mmddyy8.; 10/25/12

put day mmddyy10.; 10/25/2012

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYY Format” on page 58

• “MMDDYYx Format” on page 84

• “YYMMDD Format” on page 117

Functions:

• “DAY Function” in SAS Viya Functions and CALL Routines: Reference

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

• “MONTH Function” in SAS Viya Functions and CALL Routines: Reference

• “YEAR Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “DATE Informat” on page 293

• “DDMMYY Informat” on page 296

• “YYMMDD Informat” on page 362

MMDDYYx FormatWrites date values in the form mmdd<yy>yy or mm-dd-<yy>yy, where the x in the format name is a character that represents the special character that separates the month, day, and year. The special character can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits.

Category: Date and Time

Alignment: Right

SyntaxMMDDYYxw.

84 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 91: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionx

identifies a separator or specifies that no separator appear between the month, the day, and the year. These are valid values for x:

Bseparates with a blank.

Cseparates with a colon.

Dseparates with a hyphen.

Nindicates no separator.

Pseparates with a period.

Sseparates with a slash.

wspecifies the width of the output field.

Default 8

Range 2–10

Interactions When w has a value of from 2 to 5, the date appears with as much of the month and the day as possible. When w is 7, the date appears as a two-digit year without separators.

When x has a value of N, the width range changes to 2–8.

DetailsThe MMDDYYxw. format writes SAS date values in one of the following forms:

mmdd<yy>yy

mmxddx<yy>yy

where

mmis an integer that represents the month.

xis a specified separator.

ddis an integer that represents the day of the month.

<yy>yyis a two-digit or four-digit integer that represents the year.

ExampleThe following examples use the input value of 19127, which is the SAS date value that corresponds to May 14, 2012.

MMDDYYx Format 85

Page 92: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

----+----1----+

put day mmddyyc5.; 05:14

put day mmddyyd8.; 05-14-12

put day mmddyyp10.; 05.14.2012

put day mmddyyn8.; 05142012

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYYx Format” on page 60

• “MMDDYY Format” on page 82

• “YYMMDDx Format” on page 119

Functions:

• “DAY Function” in SAS Viya Functions and CALL Routines: Reference

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

• “MONTH Function” in SAS Viya Functions and CALL Routines: Reference

• “YEAR Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “MMDDYY Informat” on page 318

MMSS FormatWrites time values as the number of minutes and seconds since midnight.

Category: Date and Time

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxMMSSw.d

86 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 93: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field.

Default 5

Range 2–20

Tip Set w to a minimum of 5 to write a value that represents minutes and seconds.

dspecifies the number of digits to the right of the decimal point in the seconds value. Therefore, the SAS time value includes fractional seconds. This argument is optional.

Range 0–19

Restriction must be less than w

DetailsThe MMSS format uses asterisks to format values that are outside the time range 0–24 hours, such as datetime values.

ExampleThe example uses the input value of 4530.

SAS Statement Result

----+----1

put time mmss.; 75:30

See Also

Formats:

• “HHMM Format” on page 75

• “TIME Format” on page 98

Functions:

• “HMS Function” in SAS Viya Functions and CALL Routines: Reference

• “MINUTE Function” in SAS Viya Functions and CALL Routines: Reference

• “SECOND Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “TIME Informat” on page 354

MMSS Format 87

Page 94: ) Formats and Informats: Reference - go.documentation.sas.com

MMYY FormatWrites date values in the form mmM<yy>yy, where M is the separator and the year appears as either 2 or 4 digits.

Category: Date and Time

Alignment: Right

SyntaxMMYYw.

Syntax Descriptionw

specifies the width of the output field.

Default 7

Range 5–32

Interaction When w has a value of 5 or 6, the date appears with only the last two digits of the year. When w is 7 or more, the date appears with a four-digit year.

DetailsThe MMYYw. format writes SAS date values in the form mmM<yy>yy, where

mmis an integer that represents the month.

Mis the character separator.

<yy>yyis a two-digit or four-digit integer that represents the year.

ExampleThe following examples use the input value of 19291, which is the SAS date value that corresponds to October 25, 2012.

SAS Statement Result

----+----1----+

put date mmyy5.; 10M12

put date mmyy6.; 10M12

put date mmyy.; 10M2012

88 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 95: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

put date mmyy7.; 10M2012

put date mmyy10.; 10M2012

See Also

Formats:

• “MMYYx Format” on page 89

• “YYMM Format” on page 116

MMYYx FormatWrites date values in the form mm<yy>yy or mm-<yy>yy, where the x in the format name is a character that represents the special character that separates the month and the year, which can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits.

Category: Date and Time

Alignment: Right

SyntaxMMYYxw.

Syntax Descriptionx

identifies a separator or specifies that no separator appear between the month and the year. These are valid values for x:

Cseparates with a colon.

Dseparates with a hyphen.

Nindicates no separator.

Pseparates with a period.

Sseparates with a forward slash.

wspecifies the width of the output field.

Default 7

Range 5–32

MMYYx Format 89

Page 96: ) Formats and Informats: Reference - go.documentation.sas.com

Interactions When x is set to N, no separator is specified. The width range is then 4–32, and the default changes to 6.

When x has a value of C, D, P, or S and w has a value of 5 or 6, the date appears with only the last two digits of the year. When w is 7 or more, the date appears with a four-digit year.

When x has a value of N and w has a value of 4 or 5, the date appears with only the last two digits of the year. When x has a value of N and w is 6 or more, the date appears with a four-digit year.

DetailsThe MMYYxw. format writes SAS date values in one of the following forms:

mm<yy>yy

mmx<yy>yy

where

mmis an integer that represents the month.

xis a specified separator.

<yy>yyis a two-digit or four-digit integer that represents the year.

ExampleThe following examples use the input value of 19127, which is the SAS date value that corresponds to May 14, 2012.

SAS Statement Result

----+----1----+

put date mmyyc5.; 05:12

put date mmyyd.; 05-2012

put date mmyyn4.; 0512

put date mmyyp8.; 05.2012

put date mmyys10.; 05/2012

See Also

Formats:

• “MMYY Format” on page 88

• “YYMMx Format” on page 226

90 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 97: ) Formats and Informats: Reference - go.documentation.sas.com

MONNAME FormatWrites date values as the name of the month.

Category: Date and Time

Alignment: Right

SyntaxMONNAMEw.

Syntax Descriptionw

specifies the width of the output field.

Default 9

Range 1–32

Tip Use MONNAME3. to print the first three letters of the month name.

DetailsIf necessary, SAS truncates the name of the month to fit the format width.

ExampleThe example table uses the input value of 19057, which is the SAS date value that corresponds to March 5, 2012.

SAS Statement Result

----+----1

put date monname1.; M

put date monname3.; Mar

put date monname5.; March

See Also

Formats:

• “MONTH Format” on page 92

MONNAME Format 91

Page 98: ) Formats and Informats: Reference - go.documentation.sas.com

MONTH FormatWrites date values as the month of the year.

Category: Date and Time

Alignment: Right

SyntaxMONTHw.

Syntax Descriptionw

specifies the width of the output field.

Default 2

Range 1–32

Tip Use MONTH1. to obtain a hexadecimal value.

DetailsThe MONTHw. format writes the month (1 through 12) of the year from a SAS date value. If the month is a single digit, the MONTHw. format places a leading blank before the digit. For example, the MONTHw. format writes 4 instead of 04.

ExampleThe example table uses the input value of 19127, which is the SAS date value that corresponds to May 14, 2012.

SAS Statement Result

----+----1

put date month.; 5

See Also

Formats:

• “MONNAME Format” on page 91

MONYY FormatWrites date values as the month and the year in the form mmmyy or mmmyyyy.

92 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 99: ) Formats and Informats: Reference - go.documentation.sas.com

Category: Date and Time

Alignment: Right

SyntaxMONYYw.

Syntax Descriptionw

specifies the width of the output field.

Default 5

Range 5–7

DetailsThe MONYYw. format writes SAS date values in the form mmmyy or mmmyyyy, where

mmmis the first three letters of the month name.

yy or yyyyis a two-digit or four-digit integer that represents the year.

ComparisonsThe MONYYw. format and the DTMONYYw. format are similar in that they both write date values. The difference is that MONYYw. expects a SAS date value as input, and DTMONYYw. expects a datetime value.

ExampleThe example table uses the input value of 19127, which is the SAS date value that corresponds to May 14, 2012.

SAS Statement Result

----+----1

put date monyy5.; MAY12

put date monyy7.; MAY2012

See Also

Formats:

• “DDMMYY Format” on page 58

• “DTMONYY Format” on page 66

• “MMDDYY Format” on page 82

MONYY Format 93

Page 100: ) Formats and Informats: Reference - go.documentation.sas.com

• “YYMMDD Format” on page 117

Functions:

• “MONTH Function” in SAS Viya Functions and CALL Routines: Reference

• “YEAR Function” in SAS Viya Functions and CALL Routines: Reference

Informat:

• “MONYY Informat” on page 319

NEGPAREN FormatWrites negative numeric values in parentheses.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxNEGPARENw.d

Syntax Descriptionw

specifies the width of the output field.

Default 6

Range 1–32

dspecifies the number of digits to the right of the decimal point in the numeric value. This argument is optional.

Default 0

Range 0–31

DetailsThe NEGPARENw.d format attempts to right-align output values. If the input value is negative, NEGPARENw.d displays the output by enclosing the value in parentheses, if the field that you specify is wide enough. Otherwise, it uses a minus sign to represent the negative value. If the input value is nonnegative, NEGPARENw.d displays the value with a leading and trailing blank to ensure proper column alignment. It reserves the last column for a close parenthesis even when the value is positive.

94 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 101: ) Formats and Informats: Reference - go.documentation.sas.com

ComparisonsThe NEGPARENw.d format is similar to the COMMAw.d format in that it separates every three digits of the value with a comma.

Exampleput @1 sales negparen8.;

Value of sales Result

----+----1----+

100 100

1000 1,000

-200 (200)

-2000 (2,000)

OCTAL FormatConverts numeric values to octal representation.

Category: Numeric

Alignment: Left

SyntaxOCTALw.

Syntax Descriptionw

specifies the width of the output field.

Default 3

Range 1–24

DetailsIf necessary, the OCTALw. format converts numeric values to integers before displaying them in octal representation.

ComparisonsOCTALw. converts numeric values to octal representation. The $OCTALw. format converts character values to octal representation.

OCTAL Format 95

Page 102: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleput x octal6.;

Value of x Result

----+----1

3592 007010

QTR FormatWrites date values as the quarter of the year.

Category: Date and Time

Alignment: Right

SyntaxQTRw.

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–32

ExampleThe example table uses the input value of 19057, which is the SAS date value that corresponds to March 5, 2012.

SAS Statement Result

----+----1

put date qtr.; 1

See Also

Formats:

• “QTRR Format” on page 97

96 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 103: ) Formats and Informats: Reference - go.documentation.sas.com

QTRR FormatWrites date values as the quarter of the year in Roman numerals.

Category: Date and Time

Alignment: Right

SyntaxQTRRw.

Syntax Descriptionw

specifies the width of the output field.

Default 3

Range 3–32

ExampleThe example table uses the input value of 19251, which is the SAS date value that corresponds to September 15, 2012.

SAS Statement Result

----+----1

put date qtrr.; III

See Also

Formats:

• “QTR Format” on page 96

ROMAN FormatWrites numeric values as roman numerals.

Category: Numeric

Alignment: Left

SyntaxROMANw.

ROMAN Format 97

Page 104: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field.

Default 6

Range 2–32

DetailsThe ROMANw. format truncates a floating-point value to its integer component before the value is written.

Exampleput @5 year roman10.;

Value of year Result

2012 MMXII

TIME FormatWrites time values as hours, minutes, and seconds in the form hh:mm:ss.ss.

Category: Date and Time

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxTIMEw.d

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 2–20

Tip Make w large enough to produce the desired results. To obtain a complete time value with three decimal places, you must allow at least 12 spaces: eight spaces to the left of the decimal point, one space for the decimal point, and three spaces for the decimal fraction of seconds.

98 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 105: ) Formats and Informats: Reference - go.documentation.sas.com

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Default 0

Range 0–19

Requirement must be less than w

DetailsThe TIMEw.d format writes SAS time values in the form hh:mm:ss.ss:

hhis an integer.

Note: If hh is a single digit, TIMEw.d places a leading blank before the digit. For example, the TIMEw.d. format writes 9:00 instead of 09:00.

mm is an integer between 00 and 59 that represents minutes.

ss.ssis the number of seconds between 00 and 59, with the fraction of a second following the decimal point.

ComparisonsThe TIMEw.d format is similar to the HHMMw.d format except that TIMEw.d includes seconds.

The TIMEw.d format writes a leading blank for a single-hour digit. The TODw.d format writes a leading zero for a single-hour digit.

Examples

Example 1This example uses the input value of 59083, which is the SAS time value that corresponds to 4:24:43 p.m.

SAS Statement Result

----+----1

put begin time.; 16:24:43

Example 2This example uses the input value of 32083, which is the SAS time value that corresponds to 8:54:43 a.m.

SAS Statement Result

----+----1

TIME Format 99

Page 106: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

put begin time.; 8:54:43

See Also

Formats:

• “HHMM Format” on page 75

• “HOUR Format” on page 77

• “MMSS Format” on page 86

• “TOD Format” on page 102

Functions:

• “HOUR Function” in SAS Viya Functions and CALL Routines: Reference

• “MINUTE Function” in SAS Viya Functions and CALL Routines: Reference

• “SECOND Function” in SAS Viya Functions and CALL Routines: Reference

• “TIME Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “TIME Informat” on page 354

TIMEAMPM FormatWrites time and datetime values as hours, minutes, and seconds in the form hh:mm:ss.ss with AM or PM.

Category: Date and Time

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxTIMEAMPMw.d

Syntax Descriptionw

specifies the width of the output field.

Default 11

Range 2–20

100 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 107: ) Formats and Informats: Reference - go.documentation.sas.com

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Default 0

Range 0–19

Requirement must be less than w

DetailsThe TIMEAMPMw.d format writes SAS time values and SAS datetime values in the form hh:mm:ss.ss with AM or PM, where

hhis an integer that represents the hour.

mmis an integer that represents the minutes.

ss.ssis the number of seconds to two decimal places.

Times greater than 23:59:59 PM appear as the next day.

Make w large enough to produce the desired results. To obtain a complete time value with three decimal places and AM or PM, you must allow at least 11 spaces (hh:mm:ss PM). If w is less than 5, SAS writes AM or PM only.

Comparisons• The TIMEAMPMMw.d format is similar to the TIMEMw.d format except, that

TIMEAMPMMw.d prints AM or PM at the end of the time.

• TIMEw.d writes hours greater than 23:59:59 PM, and TIMEAMPMw.d does not.

ExampleThe example table uses the input value of 59083, which is the SAS time value that corresponds to 4:24:43 p.m.

SAS Statement Result

----+----1----+

put begin timeampm3.; PM

put begin timeampm5.; 4 PM

put begin timeampm7.; 4:24 PM

put begin timeampm11.; 4:24:43 PM

TIMEAMPM Format 101

Page 108: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

Formats:

• “TIME Format” on page 98

TOD FormatWrites SAS time values and the time portion of SAS datetime values in the form hh:mm:ss.ss.

Category: Date and Time

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxTODw.d

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 2–20

Tip SAS writes a zero for a zero hour if the specified width is sufficient. For example, the times 02:30 or 00:30 have a zero in the hour digits.

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Default 0

Range 0–19

Requirement must be less than w

DetailsThe TODw.d format writes SAS time and datetime values in the form hh:mm:ss.ss:

hhis an integer that represents the hour.

mmis an integer that represents the minutes.

ss.ssis the number of seconds to two decimal places.

102 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 109: ) Formats and Informats: Reference - go.documentation.sas.com

ComparisonsThe TODw.d format writes a leading zero for a single-hour digit. The TIMEw.d format and the HHMMw.d format write a leading blank for a single-hour digit.

Examples

Example 1In this example, the SAS datetime value 1661437223 corresponds to August 24, 2012 at 2:20:23 p.m.

SAS Statement Result

----+----1

begin = '1:30't;put begin tod5.;

01:30

begin = 1661437223;put begin tod9.;

14:20:23

Example 2In this example, the SAS time value 32083 corresponds to 8:54:43 a.m.

SAS Statement Result

----+----1

begin = 32083;put begin tod9.;

08:54:43

See Also

Formats:

• “HHMM Format” on page 75

• “TIME Format” on page 98

• “TIMEAMPM Format” on page 100

Functions:

• “TIMEPART Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “TIME Informat” on page 354

TOD Format 103

Page 110: ) Formats and Informats: Reference - go.documentation.sas.com

VAXRB FormatWrites real binary (floating-point) data in VMS format.

Category: Numeric

Alignment: Right

SyntaxVAXRBw.d

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 2-8

dspecifies the power of 10 by which to divide the value. This argument is optional.

Default 0

Range 0–31

DetailsUse the VAXRBw.d format to write data in native VAX or VMS floating-point notation.

ComparisonsIf you use SAS that is running under VAX or VMS, then the VAXRBw.d and the RBw.d formats are identical.

Examplex=1;y=put(x,vaxrb8.);put y=$hex16.;

Value of x Result *

----+----1

1 8040000000000000

* The result is the hexadecimal representation for the integer.

104 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 111: ) Formats and Informats: Reference - go.documentation.sas.com

w FormatWrites standard numeric data one digit per byte.

Category: Numeric

Alignment: Right

Alias: Fw.d

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

Syntaxw.d

Syntax Descriptionw

specifies the width of the output field.

Range 1–32

Tip Allow enough space to write the value, the decimal point, and a minus sign, if necessary.

dspecifies the number of digits to the right of the decimal point in the numeric value. This argument is optional.

Range 0–31

Requirement must be less than w

Tip If d is 0 or you omit d, w.d writes the value without a decimal point.

DetailsThe w.d format rounds to the nearest number that fits in the output field. If w.d is too small, SAS might shift the decimal to the BESTw. format. The w.d format writes negative numbers with leading minus signs. In addition, w.d right aligns before writing and pads the output with leading blanks.

ComparisonsThe Zw.d format is similar to the w.d format except that Zw.d pads right-aligned output with 0s instead of blanks.

Exampleput @7 x 6.3;

w Format 105

Page 112: ) Formats and Informats: Reference - go.documentation.sas.com

Value of x Result

----+----1----+

23.45 23.450

WEEKDATE FormatWrites date values as the day of the week and the date in the form day-of-week, month-name dd, yy (or yyyy).

Category: Date and Time

Alignment: Right

SyntaxWEEKDATEw.

Syntax Descriptionw

specifies the width of the output field.

Default 29

Range 3–37

DetailsThe WEEKDATEw. format writes SAS date values in the form day-of-week, month-name dd, yy (or yyyy):

ddis an integer that represents the day of the month.

yy or yyyyis a two-digit or four-digit integer that represents the year.

If w is too small to write the complete day of the week and month, SAS abbreviates as needed.

ComparisonsThe WEEKDATEw. format is the same as the WEEKDATXw. format except that WEEKDATXw. prints dd before the month's name.

ExampleThe example table uses the input value of 19158, which is the SAS date value that corresponds to June 14, 2012.

106 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 113: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

----+----1----+----2

put date weekdate3.; Thu

put date weekdate9.; Thursday

put date weekdate15.; Thu, Jun 14, 12

put date weekdate17.; Thu, Jun 14, 2012

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYY Format” on page 58

• “MMDDYY Format” on page 82

• “TOD Format” on page 102

• “WEEKDATX Format” on page 107

• “YYMMDD Format” on page 117

Functions:

• “JULDATE Function” in SAS Viya Functions and CALL Routines: Reference

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

• “WEEKDAY Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “DATE Informat” on page 293

• “DDMMYY Informat” on page 296

• “MMDDYY Informat” on page 318

• “YYMMDD Informat” on page 362

WEEKDATX FormatWrites date values as the day of the week and date in the form day-of-week, dd month-name yy (or yyyy).

Category: Date and Time

Alignment: Right

SyntaxWEEKDATXw.

WEEKDATX Format 107

Page 114: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field.

Default 29

Range 3–37

DetailsThe WEEKDATXw. format writes SAS date values in the form day-of-week, dd month-name, yy (or yyyy):

ddis an integer that represents the day of the month.

yy or yyyyis a two-digit or a four-digit integer that represents the year.

If w is too small to write the complete day of the week and month, then SAS abbreviates as needed.

ComparisonsThe WEEKDATEw. format is the same as the WEEKDATXw. format, except that WEEKDATEw. prints dd after the month's name.

The WEEKDATXw. format is the same as the DTWKDATXw. format, except that DTWKDATXw. expects a datetime value as input.

ExampleThe example table uses the input value of 19046, which is the SAS date value that corresponds to February 23, 2012.

SAS Statement Result

----+----1----+----2----+----3

put date weekdatx.; Thursday, 23 February 2012

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYY Format” on page 58

• “DTWKDATX Format” on page 68

• “MMDDYY Format” on page 82

• “TOD Format” on page 102

• “WEEKDATE Format” on page 106

• “YYMMDD Format” on page 117

108 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 115: ) Formats and Informats: Reference - go.documentation.sas.com

Functions:

• “JULDATE Function” in SAS Viya Functions and CALL Routines: Reference

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

• “WEEKDAY Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “DATE Informat” on page 293

• “DDMMYY Informat” on page 296

• “MMDDYY Informat” on page 318

• “YYMMDD Informat” on page 362

WEEKDAY FormatWrites date values as the day of the week.

Category: Date and Time

Alignment: Right

SyntaxWEEKDAYw.

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–32

DetailsThe WEEKDAYw. format writes a SAS date value as the day of the week (where 1=Sunday, 2=Monday, and so on).

ExampleThe example table uses the input value of 19025, which is the SAS date value that corresponds to February 2, 2012.

SAS Statement Result

----+----1

put date weekday.; 5

WEEKDAY Format 109

Page 116: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

Formats:

• “DOWNAME Format” on page 64

WEEKU FormatWrites a week number in decimal format by using the U algorithm.

Category: Date and Time

Alignment: Left

SyntaxWEEKUw.

Syntax Descriptionw

specifies the width of the output field.

Default 11

Range 3–200

DetailsThe WEEKUw. format writes a week-number format. The WEEKUw. format writes the various formats depending on the specified width. Algorithm U calculates the SAS date value by using the number of the week within the year (Sunday is considered the first day of the week). The number-of-the-week value is represented as a decimal number in the range 0–53, with a leading zero and maximum value of 53. For example, the fifth week of the year would be represented as 05.

Refer to the following table for widths, formats, and examples:

Width Format Example

3-4 Www w01

5-6 yyWww 12W01

7-8 yyWwwdd 12W0101

9-10 yyyyWwwdd 2012W0101

11-200 yyyy-Www-dd 2012-W01-01

110 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 117: ) Formats and Informats: Reference - go.documentation.sas.com

ComparisonsThe WEEKVw. format writes the week number as a decimal number in the range 01–53. Weeks that begin on a Monday and week 1 of the year include January 4 and the first Thursday of the year. If the first Monday of January is 2, 3, or 4, the preceding days are part of the last week of the preceding year. The WEEKWw. format writes the week number of the year as a decimal number in the range 00–53, with Monday as the first day of week 1. The WEEKUw. format writes the week number of the year (with Sunday as the first day of the week) as a decimal number in the range 0–53, with a leading zero.

Examplesasdate = '31JAN2012'd;

Statement Result

----+----1----+

v=put(sasdate,weeku3.);w=put(sasdate,weeku5.);x=put(sasdate,weeku7.);y=put(sasdate,weeku9.);z=put(sasdate,weeku11.);put v;put w;put x;put y;put z;

W0512W0512W05032012W05032012-W05-03

See Also

Formats:

• “WEEKV Format” on page 111

• “WEEKW Format” on page 113

Functions:

• “WEEK Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “WEEKU Informat” on page 394

• “WEEKV Informat” on page 396

• “WEEKW Informat” on page 398

WEEKV FormatWrites a week number in decimal format by using the V algorithm.

Category: Date and Time

WEEKV Format 111

Page 118: ) Formats and Informats: Reference - go.documentation.sas.com

Alignment: Left

SyntaxWEEKVw.

Syntax Descriptionw

specifies the width of the output field.

Default 11

Range 3–200

DetailsThe WEEKVw. format writes the various formats depending on the specified width. Algorithm V calculates the SAS date value, with the number-of-the-week value represented as a decimal number in the range 01–53, with a leading zero and maximum value of 53. Weeks begin on a Monday and week 1 of the year is the week that includes both January 4 and the first Thursday of the year. If the first Monday of January is 2, 3, or 4, the preceding days are part of the last week of the preceding year. For example, the fifth week of the year would be represented as 06.

Refer to the following table for widths, formats, and examples:

Width Format Example

3-4 Www w01

5-6 yyWww 12W01

7-8 yyWwwdd 12W0101

9-10 yyyyWwwdd 2012W0101

11-200 yyyy-Www-dd 2012-W01-01

ComparisonsThe WEEKVw. format writes the week number as a decimal number in the range 01–53.Weeks that begin on a Monday and week 1 of the year include January 4 and the first Thursday of the year. If the first Monday of January is 2, 3, or 4, the preceding days are part of the last week of the preceding year. The WEEKWw. format writes the week number of the year as a decimal number in the range 00–53, with Monday as the first day of week 1. The WEEKUw. format writes the week number of the year (with Sunday as the first day of the week) as a decimal number in the range 0–53, with a leading zero.

Examplesasdate='31JAN2012'd;

112 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 119: ) Formats and Informats: Reference - go.documentation.sas.com

Statement Result

----+----1----+

v=put(sasdate,weekv3.);w=put(sasdate,weekv5.);x=put(sasdate,weekv7.);y=put(sasdate,weekv9.);z=put(sasdate,weekv11.);put v;put w;put x;put y;put z;

W0512W0112W05022012W05022012-W05-02

See Also

Formats:

• “WEEKU Format” on page 110

• “WEEKW Format” on page 113

Functions:

• “WEEK Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “WEEKU Informat” on page 394

• “WEEKV Informat” on page 396

• “WEEKW Informat” on page 398

WEEKW FormatWrites a week number in decimal format by using the W algorithm.

Category: Date and Time

Alignment: Left

SyntaxWEEKWw.

Syntax Descriptionw

specifies the width of the output field.

Default 11

WEEKW Format 113

Page 120: ) Formats and Informats: Reference - go.documentation.sas.com

Range 3–200

DetailsThe WEEKWw. format writes the various formats depending on the specified width. Algorithm W calculates the SAS date value by using the number of the week within the year (Monday is considered the first day of the week). The number-of-the-week value is represented as a decimal number in the range 0–53, with a leading zero and maximum value of 53. For example, the fifth week of the year would be represented as 05.

Here are widths, formats, and examples:

Width Format Example

3–4 Www w01

5–6 yyWww 12W01

7–8 yyWwwdd 12W0101

9–10 yyyyWwwdd 2012W0101

11–200 yyyy-Www-dd 2012-W01-01

ComparisonsThe WEEKVw. format writes the week number as a decimal number in the range 01–53. Weeks that begin on a Monday and week 1 of the year include January 4 and the first Thursday of the year. If the first Monday of January is 2, 3, or 4, the preceding days are part of the last week of the preceding year. The WEEKWw. format writes the week number of the year as a decimal number in the range 00–53, with Monday as the first day of week 1. The WEEKUw. format writes the week number of the year (with Sunday as the first day of the week) as a decimal number in the range 0–53, with a leading zero.

Examplesasdate = '31JAN2012'd;

Statement Result

----+----1----+

v=put(sasdate,weekw3.);w=put(sasdate,weekw5.);x=put(sasdate,weekw7.);y=put(sasdate,weekw9.);z=put(sasdate,weekw11.);put v;put w;put x;put y;put z;

W0512W0512W05022012W05022012-W05-02

114 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 121: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

Formats:

• “WEEKU Format” on page 110

• “WEEKV Format” on page 111

Functions:

• “WEEK Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “WEEKU Informat” on page 394

• “WEEKV Informat” on page 396

• “WEEKW Informat” on page 398

YEAR FormatWrites date values as the year.

Category: Date and Time

Alignment: Right

SyntaxYEARw.

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 2–32

Tip If w is less than 4, the last two digits of the year are printed. Otherwise, the year value is printed as four digits.

DetailsThe YEARw. format is similar to the DTYEARw. format in that they both write date values. The difference is that YEARw. expects a SAS date value as input, and DTYEARw. expects a datetime value.

ExampleThe example table uses the input value of 19158, which is the SAS date value that corresponds to June 14, 2012.

YEAR Format 115

Page 122: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

----+----1

put date year2.; 12

put date year4.; 2012

See Also

Formats:

• “DTYEAR Format” on page 69

YYMM FormatWrites date values in the form <yy>yyMmm, where M is a character separator to indicate that the month number follows the M and the year appears as either 2 or 4 digits.

Category: Date and Time

Alignment: Right

SyntaxYYMMw.

Syntax Descriptionw

specifies the width of the output field.

Default 7

Range 5–32

Interaction When w has a value of 5 or 6, the date appears with only the last two digits of the year. When w is 7 or more, the date appears with a four-digit year.

DetailsThe YYMMw. format writes SAS date values in the form <yy>yyMmm:

<yy>yyis a two-digit or four-digit integer that represents the year.

Mis the character separator to indicate that the number of the month follows.

mmis an integer that represents the month.

116 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 123: ) Formats and Informats: Reference - go.documentation.sas.com

ExampleThe following examples use the input value of 19291, which is the SAS date value that corresponds to October 25, 2012.

SAS Statement Result

----+----1----+

put date yymm5.; 12M10

put date yymm6.; 12M10

put date yymm.; 2012M10

put date yymm7.; 2012M10

put date yymm10.;

----+----1----+ 2012M10

See Also

Formats:

• “MMYY Format” on page 88

• “YYMMx Format” on page 226

YYMMDD FormatWrites date values in the form yymmdd or <yy>yy-mm-dd, where a hyphen is the separator and the year appears as either 2 or 4 digits.

Category: Date and Time

Alignment: Right

SyntaxYYMMDDw.

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 2–10

YYMMDD Format 117

Page 124: ) Formats and Informats: Reference - go.documentation.sas.com

Interaction When w has a value of from 2 to 5, the date appears with as much of the year and the month as possible. When w is 7, the date appears as a two-digit year without hyphens.

DetailsThe YYMMDDw. format writes SAS date values in one of the following forms:

yymmdd

<yy>yy–mm–dd

where

<yy>yyis a two-digit or four-digit integer that represents the year.

–is the separator.

mmis an integer that represents the month.

ddis an integer that represents the day of the month.

To format a date that has a four-digit year and no separators, use the YYMMDDx. format.

ExampleThe following examples use the input value of 19086, which is the SAS date value that corresponds to April 3, 2012.

SAS Statement Result

----+----1----+

put day yymmdd2.; 12

put day yymmdd3.; 12

put day yymmdd4.; 1204

put day yymmdd5.; 12-04

put day yymmdd6.; 120403

put day yymmdd7.; 120403

put day yymmdd8.; 12-04-03

put day yymmdd10.; 2012-04-03

118 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 125: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYY Format” on page 58

• “MMDDYY Format” on page 82

• “YYMMDDx Format” on page 119

Functions:

• “DAY Function” in SAS Viya Functions and CALL Routines: Reference

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

• “MONTH Function” in SAS Viya Functions and CALL Routines: Reference

• “YEAR Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “DATE Informat” on page 293

• “DDMMYY Informat” on page 296

• “MMDDYY Informat” on page 318

YYMMDDx FormatWrites date values in the form yymmdd or <yy>yy-mm-dd, where the x in the format name is a character that represents the special character which separates the year, month, and day. The special character can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits.

Category: Date and Time

Alignment: Right

SyntaxYYMMDDxw.

Syntax Descriptionx

identifies a separator or specifies that no separator appear between the year, the month, and the day. These are the valid values for x:

Bseparates with a blank.

Cseparates with a colon.

Dseparates with a hyphen.

YYMMDDx Format 119

Page 126: ) Formats and Informats: Reference - go.documentation.sas.com

Nindicates no separator.

Pseparates with a period.

Sseparates with a slash.

wspecifies the width of the output field.

Default 8

Range 2–10

Interactions When w has a value of from 2 to 5, the date appears with as much of the year and the month. When w is 7, the date appears as a two-digit year without separators.

When x has a value of N, the width range is 2–8.

DetailsThe YYMMDDxw. format writes SAS date values in one of the following forms:

yymmdd

<yy>yyxmmxdd

where

<yy>yyis a two-digit or four-digit integer that represents the year.

xis a specified separator.

mmis an integer that represents the month.

ddis an integer that represents the day of the month.

ExampleThe following examples use the input value of 19127, which is the SAS date value that corresponds to May 14, 2012.

SAS Statement Result

----+----1----+

put day yymmddc5.; 12:05

put day yymmddd8.; 12-05-14

put day yymmddp10.; 2012.05.14

120 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 127: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

put day yymmddn8.; 20120514

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYYx Format” on page 60

• “MMDDYYx Format” on page 84

• “YYMMDD Format” on page 117

Functions:

• “DAY Function” in SAS Viya Functions and CALL Routines: Reference

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

• “MONTH Function” in SAS Viya Functions and CALL Routines: Reference

• “YEAR Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “YYMMDD Informat” on page 362

YYMON FormatWrites date values in the form yymmm or yyyymmm.

Category: Date and Time

Alignment: Right

SyntaxYYMONw.

Syntax Descriptionw

specifies the width of the output field. If the format width is too small to print a four-digit year, only the last two digits of the year are printed.

Default 7

Range 5–32

DetailsThe YYMONw. format writes SAS date values in the form <yy>yymmm:

YYMON Format 121

Page 128: ) Formats and Informats: Reference - go.documentation.sas.com

<yy>yyis a two-digit or four-digit integer that represents the year.

mmmis the name of the month, abbreviated to three characters.

ExampleThe example table uses the input value of 19158, which is the SAS date value that corresponds to June 14, 2012.

SAS Statement Result

----+----1

put date yymon6.; 02JUN

put date yymon7.; 2012JUN

See Also

Formats:

• “MMYY Format” on page 88

YYQ FormatWrites date values in the form <yy>yyQq, where Q is the separator, the year appears as either 2 or 4 digits, and q is the quarter of the year.

Category: Date and Time

Alignment: Right

SyntaxYYQw.

Syntax Descriptionw

specifies the width of the output field.

Default 6

Range 4–32

Interaction When w has a value of 4 or 5, the date appears with only the last two digits of the year. When w is 6 or more, the date appears with a four-digit year.

122 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 129: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe YYQw. format writes SAS date values in the form <yy>yyQq:

<yy>yyis a two-digit or four-digit integer that represents the year.

Qis the character separator.

qis an integer (1,2,3, or 4) that represents the quarter of the year.

ExampleThe following examples use the input value of 19158, which is the SAS date value that corresponds to June 14, 2012.

SAS Statement Result

----+----1----+

put date yyq4.; 12Q2

put date yyq5.; 12Q2

put date yyq.; 2012Q2

put date yyq6.; 2012Q2

put date yyq10.; 2012Q2

See Also

Formats:

• “YYQx Format” on page 123

• “YYQR Format” on page 125

YYQx FormatWrites date values in the form <yy>yyq or <yy>yy-q, where the x in the format name is a character that represents the special character that separates the year and the quarter or the year, which can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits.

Category: Date and Time

Alignment: Right

SyntaxYYQxw.

YYQx Format 123

Page 130: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionx

identifies a separator or specifies that no separator appear between the year and the quarter. Valid values for x are:

Cseparates with a colon

Dseparates with a hyphen

Nindicates no separator

Pseparates with a period

Sseparates with a forward slash.

wspecifies the width of the output field.

Default 6

Range 4–32

Interactions When x is set to N, no separator is specified. The width range is then 3–32, and the default changes to 5.

When w has a value of 4 or 5, the date appears with only the last two digits of the year. When w is 6 or more, the date appears with a four-digit year.

When x has a value of N and w has a value of 3 or 4, the date appears with only the last two digits of the year. When x has a value of N and w is 5 or more, the date appears with a four-digit year.

DetailsThe YYQxw. format writes SAS date values in one of the following forms:

<yy>yyq

<yy>yyxq

where

<yy>yyis a two-digit or four-digit integer that represents the year.

xis a specified separator.

qis an integer (1,2,3, or 4) that represents the quarter of the year.

ExampleThe following examples use the input value of 19188, which is the SAS date value that corresponds to July 14, 2012.

124 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 131: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

----+----1----+

put date yyqc4.; 12:3

put date yyqd.; 2012-3

put date yyqn3.; 123

put date yyqp6.; 2012.3

put date yyqs8.; 2012/3

See Also

Formats:

• “YYQ Format” on page 122

• “YYQRx Format” on page 126

YYQR FormatWrites date values in the form <yy>yyQqr, where Q is the separator, the year appears as either 2 or 4 digits, and qr is the quarter of the year expressed in roman numerals.

Category: Date and Time

Alignment: Right

SyntaxYYQRw.

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 6–32

Interaction When the value of w is too small to write a four-digit year, the date appears with only the last two digits of the year.

DetailsThe YYQRw. format writes SAS date values in the form <yy>yyQqr:

<yy>yyis a two-digit or four-digit integer that represents the year.

YYQR Format 125

Page 132: ) Formats and Informats: Reference - go.documentation.sas.com

Qis the character separator.

qris a roman numeral (I, II, III, or IV) that represents the quarter of the year.

ExampleThe following examples use the input value of 19158, which is the SAS date value that corresponds to June 14, 2012.

SAS Statement Result

----+----1----+

put date yyqr6.; 12QII

put date yyqr7.; 2012QII

put date yyqr.; 2012QII

put date yyqr8.; 2012QII

put date yyqr10.; 2012QII

See Also

Formats:

• “YYQ Format” on page 122

• “YYQRx Format” on page 126

YYQRx FormatWrites date values in the form <yy>yyqr or <yy>yy-qr, where the x in the format name is a character that represents the special character that separates the year and the quarter or the year, which can be a hyphen (-), period (.), blank character, slash (/), colon (:), or no separator; the year can be either 2 or 4 digits and qr is the quarter of the year expressed in roman numerals.

Category: Date and Time

Alignment: Right

SyntaxYYQRxw.

126 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 133: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionx

identifies a separator or specifies that no separator appear between the year and the quarter. These are valid values for x:

Cseparates with a colon.

Dseparates with a hyphen.

Nindicates no separator.

Pseparates with a period.

Sseparates with a forward slash.

wspecifies the width of the output field.

Default 8

Range 6–32

Interactions When x is set to N, no separator is specified. The width range is then 5–32, and the default changes to 7.

When the value of w is too small to write a four-digit year, the date appears with only the last two digits of the year.

DetailsThe YYQRxw. format writes SAS date values in one of the following forms:

<yy>yyqr

<yy>yyxqr

where

<yy>yyis a two-digit or four-digit integer that represents the year.

xis a specified separator.

qris a roman numeral (I, II, III, or IV) that represents the quarter of the year.

ExampleThe following examples use the input value of 19127, which is the SAS date value that corresponds to May 14, 2012.

SAS Statement Result

----+----1----+

YYQRx Format 127

Page 134: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

put date yyqrc6.; 12:II

put date yyqrd.; 2012-II

put date yyqrn5.; 12II

put date yyqrp8.; 2012.II

put date yyqrs10.; 2012/II

See Also

Formats:

• “YYQx Format” on page 123

• “YYQR Format” on page 125

Z FormatWrites standard numeric data with leading 0s.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxZw.d

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–32

Tip Allow enough space to write the value, the decimal point, and a minus sign, if necessary.

dspecifies the number of digits to the right of the decimal point in the numeric value. This argument is optional.

128 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 135: ) Formats and Informats: Reference - go.documentation.sas.com

Default 0

Range 0–31

Tip If d is 0 or you omit d, Zw.d writes the value without a decimal point.

DetailsThe Zw.d format writes standard numeric values one digit per byte and fills in 0s to the left of the data value.

The Zw.d format rounds to the nearest number that fits into the output field. If w.d is too large to fit, SAS might shift the decimal to the BESTw. format. The Zw.d format writes negative numbers with leading minus signs. In addition, it right aligns before writing and pads the output with leading zeros.

ComparisonsThe Zw.d format is similar to the w.d format except that Zw.d pads right-aligned output with 0s instead of blanks.

Exampleput @5 seqnum z8.;

Value of seqnum Result

----+----1

1350 00001350

Z Format 129

Page 136: ) Formats and Informats: Reference - go.documentation.sas.com

130 Chapter 3 • Dictionary of Formats for SAS and the CAS Server

Page 137: ) Formats and Informats: Reference - go.documentation.sas.com

Chapter 4

Dictionary of Formats for SAS Only

Formats by Category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139$ASCII Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139D Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140DATE Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141$EBCDIC Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143$MSGCASE Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144$N8601B Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145$N8601BA Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146$N8601E Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147$N8601EA Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149$N8601EH Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150$N8601EX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151$N8601H Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153$N8601X Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154$VARYING Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155B8601DA Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157B8601DN Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158B8601DT Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159B8601DX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161B8601DZ Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162B8601LX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164B8601LZ Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165B8601TM Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166B8601TX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168B8601TZ Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169E8601DA Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171E8601DN Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172E8601DT Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173E8601DX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174E8601DZ Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176E8601LX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177E8601LZ Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179E8601TM Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180E8601TX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182E8601TZ Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183IB Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185IBR Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186JULDAY Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188NUMX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189PD Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

131

Page 138: ) Formats and Informats: Reference - go.documentation.sas.com

PDJULG Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191PDJULI Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193PERCENT Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194PERCENTN Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195PIB Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197PIBR Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198PK Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200PVALUE Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201RB Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202S370FF Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204S370FIB Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205S370FIBU Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206S370FPD Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208S370FPDU Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209S370FPIB Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210S370FRB Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212S370FZD Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213S370FZDL Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214S370FZDS Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215S370FZDT Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216S370FZDU Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218SSN Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219VMSZN Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220WORDDATE Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221WORDDATX Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223WORDF Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224WORDS Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225YYMMx Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226ZD Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

Formats by CategoryThere are four categories of formats in this list:

Category Description

Character instructs SAS to write character data values from character variables.

Date and Time instructs SAS to write data values from variables that represent dates, times, and datetimes.

ISO 8601 instructs SAS to write date, time, and datetime values using the ISO 8601 standard.

Numeric instructs SAS to write numeric data values from numeric variables.

For information about formats that are valid in CAS, see Chapter 3, “Dictionary of Formats for SAS and the CAS Server,” on page 31. Formats that support national languages can be found in SAS Viya National Language Support (NLS): Reference Guide.

132 Chapter 4 • Dictionary of Formats for SAS Only

Page 139: ) Formats and Informats: Reference - go.documentation.sas.com

Storing user-defined formats is an important consideration if you associate these formats with variables in permanent SAS data sets, especially those data sets shared with other users. For information about creating and storing user-defined formats, see “FORMAT” in SAS Viya Utility Procedures Guide.

The following table provides brief descriptions of the SAS formats that are supported in traditional SAS and CAS. For more detailed descriptions, see the dictionary entry for each format.

Category Language Elements Description

Character $ASCII Format (p. 139) Converts native format character data to ASCII representation.

$EBCDIC Format (p. 143) Converts native format character data to EBCDIC representation.

$MSGCASE Format (p. 144) Writes character data in uppercase when the MSGCASE system option is in effect.

$VARYING Format (p. 155) Writes character data of varying length.

Date and Time DATE Format (p. 141) Writes date values in the form ddmmmyy, ddmmmyyyy, or dd-mmm-yyyy.

$N8601B Format (p. 145) Writes ISO 8601 duration, datetime, and interval forms by using the basic notations PnYnMnDTnHnMnS and yyyymmddThhmmss.

$N8601BA Format (p. 146) Writes ISO 8601 duration, datetime, and interval forms by using the basic notations PyyyymmddThhmmss and yyyymmddThhmmss.

$N8601E Format (p. 147) Writes ISO 8601 duration, datetime, and interval forms by using the extended notations PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss.

$N8601EA Format (p. 149) Writes ISO 8601 duration, datetime, and interval forms by using the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss.

$N8601EH Format (p. 150) Writes ISO 8601 duration, datetime, and interval forms by using the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss, using a hyphen ( - ) for omitted components.

$N8601EX Format (p. 151) Writes ISO 8601 duration, datetime, and interval forms by using the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss, using an x for each digit of an omitted component.

$N8601H Format (p. 153) Writes ISO 8601 duration, datetime, and interval forms PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss, dropping omitted components in duration values and using a hyphen ( - ) for omitted components in datetime values.

$N8601X Format (p. 154) Writes ISO 8601 duration, datetime, and interval forms PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss, dropping omitted components in duration values and using an x for each digit of an omitted component in datetime values.

Formats by Category 133

Page 140: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

B8601DA Format (p. 157) Writes date values by using the ISO 8601 basic notation yyyymmdd.

B8601DN Format (p. 158) Writes dates from datetime values by using the ISO 8601 basic notation yyyymmdd.

B8601DT Format (p. 159) Writes datetime values by using the ISO 8601 basic notation yyyymmddThhmmss<ffffff>.

B8601DX Format (p. 161) Adjusts a Coordinated Universal Time (UTC) datetime value to the user local date and time. Then, writes the local date and time by using the ISO 8601 datetime and time zone basic notation yyyymmddThhmmss+hhmm.

B8601DZ Format (p. 162) Writes datetime values for the zero meridian Coordinated Universal Time (UTC) time by using the ISO 8601 datetime and time zone basic notation yyyymmddThhmmss+0000.

B8601LX Format (p. 164) Writes datetime values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 basic notation yyyymmddThhmmss+|–hhmm.

B8601LZ Format (p. 165) Writes time values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 basic time notation hhmmss+|–hhmm.

B8601TM Format (p. 166) Writes time values by using the ISO 8601 basic notation hhmmss<ffff>.

B8601TX Format (p. 168) Adjusts a Coordinated Universal Time (UTC) value to the user local time. Then, writes the local time by using the ISO 8601 basic time notation hhmmss+|-hhmm.

B8601TZ Format (p. 169) Adjusts time values to the Coordinated Universal Time (UTC) and writes the time values by using the ISO 8601 basic time notation hhmmss+|–hhmm.

E8601DA Format (p. 171) Writes date values by using the ISO 8601 extended notation yyyy-mm-dd.

E8601DN Format (p. 172) Writes dates from SAS datetime values by using the ISO 8601 extended notation yyyy-mm-dd.

E8601DT Format (p. 173) Writes datetime values by using the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss.ffffff.

E8601DX Format (p. 174) Adjusts a Coordinated Universal Time (UTC) datetime value to the user local date and time. Then, writes the local date and time by using the ISO 8601 datetime and time zone extended notation yyyy-mm-ddThh:mm:ss+hh:mm.

E8601DZ Format (p. 176) Writes datetime values for the zero meridian Coordinated Universal Time (UTC) time by using the ISO 8601 datetime and time zone extended notation yyyy-mm-ddThh:mm:ss+00:00.

134 Chapter 4 • Dictionary of Formats for SAS Only

Page 141: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

E8601LX Format (p. 177) Writes datetime values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss+|–hh:mm.

E8601LZ Format (p. 179) Writes time values as local time, appending the Coordinated Universal Time (UTC) offset for the local SAS session, using the ISO 8601 extended time notation hh:mm:ss+|–hh:mm.

E8601TM Format (p. 180) Writes time values by using the ISO 8601 extended notation hh:mm:ss.ffffff.

E8601TX Format (p. 182) Adjusts a Coordinated Universal Time (UTC) value to the user local time. Then, writes the local time by using the ISO 8601 extended time notation hh:mm:ss+|–hh:mm.

E8601TZ Format (p. 183) Adjusts time values to the Coordinated Universal Time (UTC) and writes the time values by using the ISO 8601 extended notation hh:mm:ss.<fff>+|–hh:mm.

JULDAY Format (p. 188) Writes date values as the Julian day of the year.

PDJULG Format (p. 191) Writes packed Julian date values in the hexadecimal format yyyydddF for IBM.

PDJULI Format (p. 193) Writes packed Julian date values in the hexadecimal format ccyydddF for IBM.

WORDDATE Format (p. 221) Writes date values as the name of the month, the day, and the year in the form month-name dd, yyyy.

WORDDATX Format (p. 223) Writes date values as the day, the name of the month, and the year in the form dd month-name yyyy.

YYMMx Format (p. 226) Writes date values in the form <yy>yymm or <yy>yy-mm. The x in the format name represents the special character that separates the year and the month. This special character can be a hyphen (-), period (.), slash (/), colon (:), or no separator. The year can be either two or four digits.

ISO 8601 $N8601B Format (p. 145) Writes ISO 8601 duration, datetime, and interval forms by using the basic notations PnYnMnDTnHnMnS and yyyymmddThhmmss.

$N8601BA Format (p. 146) Writes ISO 8601 duration, datetime, and interval forms by using the basic notations PyyyymmddThhmmss and yyyymmddThhmmss.

$N8601E Format (p. 147) Writes ISO 8601 duration, datetime, and interval forms by using the extended notations PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss.

$N8601EA Format (p. 149) Writes ISO 8601 duration, datetime, and interval forms by using the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss.

Formats by Category 135

Page 142: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

$N8601EH Format (p. 150) Writes ISO 8601 duration, datetime, and interval forms by using the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss, using a hyphen ( - ) for omitted components.

$N8601EX Format (p. 151) Writes ISO 8601 duration, datetime, and interval forms by using the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss, using an x for each digit of an omitted component.

$N8601H Format (p. 153) Writes ISO 8601 duration, datetime, and interval forms PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss, dropping omitted components in duration values and using a hyphen ( - ) for omitted components in datetime values.

$N8601X Format (p. 154) Writes ISO 8601 duration, datetime, and interval forms PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss, dropping omitted components in duration values and using an x for each digit of an omitted component in datetime values.

B8601DA Format (p. 157) Writes date values by using the ISO 8601 basic notation yyyymmdd.

B8601DN Format (p. 158) Writes dates from datetime values by using the ISO 8601 basic notation yyyymmdd.

B8601DT Format (p. 159) Writes datetime values by using the ISO 8601 basic notation yyyymmddThhmmss<ffffff>.

B8601DX Format (p. 161) Adjusts a Coordinated Universal Time (UTC) datetime value to the user local date and time. Then, writes the local date and time by using the ISO 8601 datetime and time zone basic notation yyyymmddThhmmss+hhmm.

B8601DZ Format (p. 162) Writes datetime values for the zero meridian Coordinated Universal Time (UTC) time by using the ISO 8601 datetime and time zone basic notation yyyymmddThhmmss+0000.

B8601LX Format (p. 164) Writes datetime values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 basic notation yyyymmddThhmmss+|–hhmm.

B8601LZ Format (p. 165) Writes time values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 basic time notation hhmmss+|–hhmm.

B8601TM Format (p. 166) Writes time values by using the ISO 8601 basic notation hhmmss<ffff>.

B8601TX Format (p. 168) Adjusts a Coordinated Universal Time (UTC) value to the user local time. Then, writes the local time by using the ISO 8601 basic time notation hhmmss+|-hhmm.

B8601TZ Format (p. 169) Adjusts time values to the Coordinated Universal Time (UTC) and writes the time values by using the ISO 8601 basic time notation hhmmss+|–hhmm.

136 Chapter 4 • Dictionary of Formats for SAS Only

Page 143: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

E8601DA Format (p. 171) Writes date values by using the ISO 8601 extended notation yyyy-mm-dd.

E8601DN Format (p. 172) Writes dates from SAS datetime values by using the ISO 8601 extended notation yyyy-mm-dd.

E8601DT Format (p. 173) Writes datetime values by using the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss.ffffff.

E8601DX Format (p. 174) Adjusts a Coordinated Universal Time (UTC) datetime value to the user local date and time. Then, writes the local date and time by using the ISO 8601 datetime and time zone extended notation yyyy-mm-ddThh:mm:ss+hh:mm.

E8601DZ Format (p. 176) Writes datetime values for the zero meridian Coordinated Universal Time (UTC) time by using the ISO 8601 datetime and time zone extended notation yyyy-mm-ddThh:mm:ss+00:00.

E8601LX Format (p. 177) Writes datetime values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss+|–hh:mm.

E8601LZ Format (p. 179) Writes time values as local time, appending the Coordinated Universal Time (UTC) offset for the local SAS session, using the ISO 8601 extended time notation hh:mm:ss+|–hh:mm.

E8601TM Format (p. 180) Writes time values by using the ISO 8601 extended notation hh:mm:ss.ffffff.

E8601TX Format (p. 182) Adjusts a Coordinated Universal Time (UTC) value to the user local time. Then, writes the local time by using the ISO 8601 extended time notation hh:mm:ss+|–hh:mm.

E8601TZ Format (p. 183) Adjusts time values to the Coordinated Universal Time (UTC) and writes the time values by using the ISO 8601 extended notation hh:mm:ss.<fff>+|–hh:mm.

Numeric D Format (p. 140) Prints numeric values, possibly with a great range of values, lining up decimal places for values of similar magnitude.

IB Format (p. 185) Writes native integer binary (fixed-point) values, including negative values.

IBR Format (p. 186) Writes integer binary (fixed-point) values in Intel and DEC formats.

NUMX Format (p. 189) Writes numeric values with a comma in place of the decimal point.

PD Format (p. 190) Writes data in packed decimal format.

PERCENT Format (p. 194) Writes numeric values as percentages.

PERCENTN Format (p. 195) Produces percentages, using a minus sign for negative values.

Formats by Category 137

Page 144: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

PIB Format (p. 197) Writes positive integer binary (fixed-point) values.

PIBR Format (p. 198) Writes positive integer binary (fixed-point) values in Intel and DEC formats.

PK Format (p. 200) Writes data in unsigned packed decimal format.

PVALUE Format (p. 201) Writes p-values.

RB Format (p. 202) Writes real binary data (floating-point) in real binary format.

S370FF Format (p. 204) Writes native standard numeric data in IBM mainframe format.

S370FIB Format (p. 205) Writes integer binary (fixed-point) values, including negative values, in IBM mainframe format.

S370FIBU Format (p. 206) Writes unsigned integer binary (fixed-point) values in IBM mainframe format.

S370FPD Format (p. 208) Writes packed decimal data in IBM mainframe format.

S370FPDU Format (p. 209) Writes unsigned packed decimal data in IBM mainframe format.

S370FPIB Format (p. 210) Writes positive integer binary (fixed-point) values in IBM mainframe format.

S370FRB Format (p. 212) Writes real binary (floating-point) data in IBM mainframe format.

S370FZD Format (p. 213) Writes zoned decimal data in IBM mainframe format.

S370FZDL Format (p. 214) Writes zoned decimal leading–sign data in IBM mainframe format.

S370FZDS Format (p. 215) Writes zoned decimal separate leading-sign data in IBM mainframe format.

S370FZDT Format (p. 216) Writes zoned decimal separate trailing-sign data in IBM mainframe format.

S370FZDU Format (p. 218) Writes unsigned zoned decimal data in IBM mainframe format.

SSN Format (p. 219) Writes Social Security numbers.

VMSZN Format (p. 220) Generates VMS and MicroFocus COBOL zoned numeric data.

WORDF Format (p. 224) Writes numeric values as words with fractions that are shown numerically.

WORDS Format (p. 225) Writes numeric values as words.

ZD Format (p. 227) Writes numeric data in zoned decimal format.

138 Chapter 4 • Dictionary of Formats for SAS Only

Page 145: ) Formats and Informats: Reference - go.documentation.sas.com

Dictionary

$ASCII FormatConverts native format character data to ASCII representation.

Category: Character

Alignment: Left

Syntax$ASCIIw.

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–32767

DetailsIf ASCII is the native format, no conversion occurs.

Comparisons• On EBCDIC systems, $ASCIIw. converts EBCDIC character data to ASCIIw.

• On all other systems, $ASCIIw. behaves like the $CHARw. format.

Exampleput x $ascii3.;

Value of x Result*

abc 616263

ABC 414243

(); 28293B

* The results are hexadecimal representations of ASCII codes for characters. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one character.

$ASCII Format 139

Page 146: ) Formats and Informats: Reference - go.documentation.sas.com

D FormatPrints numeric values, possibly with a great range of values, lining up decimal places for values of similar magnitude.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxDw.p

Syntax Descriptionw

specifies the width of the output field. This argument is optional.

Default 12

Range 1–32

pspecifies the precision. This argument is optional.

Default 3

Range 0–9

Requirement p must be less than w

Tips If p is omitted or is specified as 0, then p is set to 3.

If zero is the desired precision, use the w.d format in place of the Dw.p format.

DetailsThe Dw.p format writes numbers so that the decimal point aligns in groups of values with similar magnitude. Larger values of p print the data values with more precision and potentially more shifts in the decimal point alignment. Smaller values of p print the data values with less precision and a greater chance of decimal point alignment.

Comparisons• The BESTw. format writes as many significant digits as possible in the output field,

but if the numbers vary in magnitude, the decimal points do not line up.

• Dw.p writes numbers with the desired precision and more alignment than the BESTw format.

140 Chapter 4 • Dictionary of Formats for SAS Only

Page 147: ) Formats and Informats: Reference - go.documentation.sas.com

• The BESTDw.p format is a combination of the BESTw. format and the Dw.p format in that it formats all numeric data, and it does a better job of aligning decimals than the BESTw. format.

• The w.d format aligns decimal points, if possible, but it does not necessarily show the same precision for all numbers.

Exampleput @1 x d10.4;

Value of x Result

----+----1

12345 12345.0

1234.5 1234.5

123.45 123.45000

12.345 12.34500

1.2345 1.23450

.12345 0.12345

See Also

Formats:

• “BESTD Format” on page 48

DATE FormatWrites date values in the form ddmmmyy, ddmmmyyyy, or dd-mmm-yyyy.

Category: Date and Time

Alignment: Right

SyntaxDATEw.

Syntax Descriptionw

specifies the width of the output field.

Default 7

DATE Format 141

Page 148: ) Formats and Informats: Reference - go.documentation.sas.com

Range 5–11

Tip Use a width of 9 to print a four-digit year without a separator between the day, month, and year. Use a width of 11 to print a four-digit year using a hyphen as a separator between the day, month, and year

DetailsThe DATEw. format writes SAS date values in the form ddmmmyy, ddmmmyyyy, or dd-mmm-yyyy, where

ddis an integer that represents the day of the month.

mmmis the first three letters of the month name.

yy or yyyyis a two-digit or four-digit integer that represents the year.

ExampleThe example table uses the input value of 19068, which is the SAS date value that corresponds to March 16, 2012.

SAS Statement Result

----+----1----+

put day date5.; 16MAR

put day date6.; 16MAR

put day date7.; 16MAR12

put day date8.; 16MAR12

put day date9.; 16MAR2012

put day date11.; 16-MAR-2012

See Also

Functions:

• “DATE Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “DATE Informat” on page 293

142 Chapter 4 • Dictionary of Formats for SAS Only

Page 149: ) Formats and Informats: Reference - go.documentation.sas.com

$EBCDIC FormatConverts native format character data to EBCDIC representation.

Category: Character

Alignment: Left

Note: UTF-8 is the only supported session encoding. $EBCDIC format works only for 7bit ASCII characters.

Syntax$EBCDICw.

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–32767

DetailsIf EBCDIC is the native format, no conversion occurs.

On ASCII systems, the $EBCDICw. format is based on the default encoding value of the LOCALE= option that is specified when SAS starts. For example, if the locale was set to en_US locale, the default encoding that is used by the $EBCDICw. format is Open_ed-1047. If the locale is de_DE (German_Germany), the default encoding that is used by the $EBCDICw. format is Open_ed–1141. For a list of locales and encoding values, see “Default Values for the DFLANG, DATESTYLE, and PAPERSIZE System Options Based on the LOCALE= System Option” in SAS Viya National Language Support (NLS): Reference Guide.

You can specify the translation table that is used to map characters between EBCDIC and ASCII by using the MAPEBCDIC2ASCII system option. For more information, see “MAPEBCDIC2ASCII= System Option” in SAS Viya National Language Support (NLS): Reference Guide.

Comparisons• On ASCII systems, $EBCDICw. converts ASCII character data to EBCDIC.

• On all other systems, $EBCDICw. behaves like the $CHARw. format.

Exampleput name $ebcdic3.;

$EBCDIC Format 143

Page 150: ) Formats and Informats: Reference - go.documentation.sas.com

Value of name

Locale Value Is en_US Locale Value Is fr_FR

Locale Value Is de_DE

ABC C1C2C3 C1C2C3 C1C2C3

{ä} C043D0 514354 43C0DC

[@] AD7CBD 9044B5 63B5FC

The results are shown as hexadecimal representations of EBCDIC codes for characters. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one character.

$MSGCASE FormatWrites character data in uppercase when the MSGCASE system option is in effect.

Category: Character

Alignment: Left

Syntax$MSGCASEw.

Syntax Descriptionw

specifies the width of the output field.

Default 1, if the length of the variable is undefined. Otherwise, the default is the length of the variable

Range 1–32767

DetailsWhen the MSGCASE system option is in effect, all notes, warnings, and error messages that SAS generates appear in uppercase. Otherwise, all notes, warnings, and error messages appear in mixed case. You specify the MSGCASE system option in the configuration file or during the SAS invocation.

Exampleput name $msgcase.;

Value of name Result

sas SAS

144 Chapter 4 • Dictionary of Formats for SAS Only

Page 151: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

System Options:

• “MSGCASE System Option” in SAS Viya System Options: Reference

$N8601B FormatWrites ISO 8601 duration, datetime, and interval forms by using the basic notations PnYnMnDTnHnMnS and yyyymmddThhmmss.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.4.4, complete representation

Syntax$N8601Bw.d

Syntax Descriptionw

specifies the width of the output field.

Default 50

Range 1–200

Requirement The minimum length for a duration value or a datetime value is 16. The minimum length for an interval value is 16.

dspecifies the number of digits to the right of the lowest-order component. This argument is optional.

Default 0

Range 0–3

DetailsThe $N8601B format writes ISO 8601 duration, datetime, and interval values as character data for the following basic notations:

• PnYnMnDTnHnMnS

• yyyymmddThhmmss

• PnYnMnDTnHnMnS/yyyymmddThhmmss

• yyyymmddThhmmssT/PnYnMnDTnHnMnS

The lowest-order component can contain fractions, as in these examples:

$N8601B Format 145

Page 152: ) Formats and Informats: Reference - go.documentation.sas.com

• p2y3.5m

• p00020304T05.335

Exampleput nb $n8601b.;

Value of nb Result

0002405050112FFC P2Y4M5DT5H1M12S

2012915155300FFD 20120915T155300

2012915000000FFD2014915000000FFD 20120915T000000/20140915T000000

0033104030255FFC2012915155300FFD P33Y1M4DT3H2M55S/20120915T155300

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

$N8601BA FormatWrites ISO 8601 duration, datetime, and interval forms by using the basic notations PyyyymmddThhmmss and yyyymmddThhmmss.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Supports: IS0 8601 Element 5.5.4.2, alternative format

Syntax$N8601BAw.d

Syntax Descriptionw

specifies the width of the output field.

Default 50

Range 1–200

Requirement The minimum length for a duration value or a datetime value is 16. The minimum length for an interval value is 16.

146 Chapter 4 • Dictionary of Formats for SAS Only

Page 153: ) Formats and Informats: Reference - go.documentation.sas.com

dspecifies the number of digits to the right of the lowest-order component. This argument is optional.

Default 0

Range 0–3

DetailsThe $N8601BA format writes ISO 8601 duration, datetime, and interval values as character data for the following basic notations:

• PyyyymmddThhmmss

• yyyymmddThhmmss

• PyyyymmddThhmmss/yyyymmddThhmmss

• yyyymmddThhmmss/PyyyymmddThhmmss

The lowest-order component can contain fractions, as in these examples:

• p00023.5

• 00020304T05.335

Exampleput @1 nba $N8601ba.;

Value of nba Result

00024050501127D0 P00020405T050112.5

2012915155300FFD 20120915T155300

00023040506075282012915155300FFD P00020304T050607.33/20120915T155300

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

$N8601E FormatWrites ISO 8601 duration, datetime, and interval forms by using the extended notations PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.4.4, complete representation

$N8601E Format 147

Page 154: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax$N8601Ew.d

Syntax Descriptionw

specifies the width of the output field.

Default 50

Range 1–200

Requirement The minimum length for a duration value or a datetime value is 16. The minimum length for an interval value is 16.

dspecifies the number of digits to the right of the lowest-order component. This argument is optional.

Default 0

Range 0–3

DetailsThe $N8601E format writes ISO 8601 duration, datetime, and interval values as character data for the following basic notations:

• PnYnMnDTnHnMnS

• yyyy-mm-ddThh:mm:ss

• PnYnMnDTnHnMnS/yyyy-mm-ddThh:mm:ss

• yyyy-mm-ddThh:mm:ssT/PnYnMnDTnHnMnS

The lowest-order component can contain fractions, as in these examples:

• p2y3.5m

• p0002–03–04T05.335

Exampleput @1 ne $n8601e.;

Value of ne Result

00024050501127D0 P2Y4M5DT5H1M12.5S

2012915155300FFD 2012-09-15T15:53:00

2012915000000FFD2014915000000FFD 2012-09-15T00:00:00/2013-09-15T00:00:00

0033104030255FFC2012915155300FFD P33Y1M4DT3H2M55S/2012-09-15T15:53:00

148 Chapter 4 • Dictionary of Formats for SAS Only

Page 155: ) Formats and Informats: Reference - go.documentation.sas.com

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

$N8601EA FormatWrites ISO 8601 duration, datetime, and interval forms by using the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.4.4, complete representation

Syntax$N8601EAw.d

Syntax Descriptionw

specifies the width of the output field.

Default 50

Range 1–200

Requirement The minimum length for a duration value or a datetime value is 16. The minimum length for an interval value is 16.

dspecifies the number of digits to the right of the lowest-order component. This argument is optional.

Default 0

Range 0–3

DetailsThe $N8601EA format writes ISO 8601 duration, datetime, and interval values as character data for the following basic notations:

• Pyyyy-mm-ddThh:mm:ss

• yyyy-mm-ddThh:mm:ss

• Pyyyy-mm-ddThh:mm:ss/yyyy-mm-ddThh:mm:ss

• yyyy-mm-ddThh:mm:ss/Pyyyy-mm-ddThh:mm:ss

The lowest-order component can contain fractions, as in these examples:

• p00023.5

$N8601EA Format 149

Page 156: ) Formats and Informats: Reference - go.documentation.sas.com

• 0002–03–04T05.335

Exampleput @1 nea $N8601ea.;

Value of nea Result

00024050501127D0 P0002-04-05T05:01:12.500

2012915155300FFD 2012-09-15T15:53:00

00023040506075282012915155300FFD P0002-03-04T05:06:07.330/2012-09-15T15:53:00

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

$N8601EH FormatWrites ISO 8601 duration, datetime, and interval forms by using the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss, using a hyphen ( - ) for omitted components.

Categories: Date and TimeISO 8601

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.4.4, complete representation

Syntax$N8601EHw.d

Syntax Descriptionw

specifies the width of the output field.

Default 50

Range 1–200

Requirement The minimum length for a duration value or a datetime value is 16. The minimum length for an interval value is 16.

dspecifies the number of digits to the right of the lowest-order component. This argument is optional.

Default 0

150 Chapter 4 • Dictionary of Formats for SAS Only

Page 157: ) Formats and Informats: Reference - go.documentation.sas.com

Range 0–3

DetailsThe $N8601EH format writes ISO 8601 duration, datetime, and interval values as character data, using a hyphen ( - ) to represent omitted components, for the following extended notations:

• Pyyyy-mm-ddThh:mm:ss

• yyyy-mm-ddThh:mm:ss

• Pyyyy-mm-ddThh:mm:ss/yyyy-mm-ddThh:mm:ss

• yyyy-mm-ddThh:mm:ss/Pyyyy-mm-ddThh:mm:ss

• yyyy-mm-ddThh:mm:ss/yyyy-mm-ddThh:mm:ss

Omitted datetime components are always displayed; they are never truncated.

Exampleput a $n8601eh.;

Value of a Result

00023FFFFFFFFFFC2012FFF15FFFFFFD P0002-03—T-:-:-/2012——T15:-:-

2012FFF15FFFFFFdFFFF3FF1553FFFFC 2012--T15:-:-/P—03—T15:53:-

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

$N8601EX FormatWrites ISO 8601 duration, datetime, and interval forms by using the extended notations Pyyyy-mm-ddThh:mm:ss and yyyy-mm-ddThh:mm:ss, using an x for each digit of an omitted component.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Elements 5.5.3, 5.5.4.1, and 5.5.4.2

Syntax$N8601EXw.d

$N8601EX Format 151

Page 158: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field.

Default 50

Range 1–200

Requirement The minimum length for a duration value or a datetime value is 16. The minimum length for an interval value is 16.

dspecifies the number of digits to the right of the lowest-order component. This argument is optional.

Default 0

Range 0–3

DetailsThe $N8601EX format writes ISO 8601 duration, datetime, and interval values as character data, using a hyphen ( - ) to represent omitted components, for the following extended notations:

• Pyyyy-mm-ddThh:mm:ss

• yyyy-mm-ddThh:mm:ss

• Pyyyy-mm-ddThh:mm:ss/yyyy-mm-ddThh:mm:ss

• yyyy-mm-ddThh:mm:ss/Pyyyy-mm-ddThh:mm:ss

• yyyy-mm-ddThh:mm:ss/yyyy-mm-ddThh:mm:ss

Omitted datetime components are always displayed; they are never truncated.

Exampleput nex $n8601ex.;

Value of nex Result

00023FFFFFFFFFFC2012FFF15FFFFFFD P0002-03xxTxx:xx:xx/2012–xx-xxT15:xx:xx

2012FFF15FFFFFFdFFFF3FF1553FFFFC 2012-xx-xxT15:xx:xx/Pxxxx-03-xxT15:53:xx

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

152 Chapter 4 • Dictionary of Formats for SAS Only

Page 159: ) Formats and Informats: Reference - go.documentation.sas.com

$N8601H FormatWrites ISO 8601 duration, datetime, and interval forms PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss, dropping omitted components in duration values and using a hyphen ( - ) for omitted components in datetime values.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Elements 5.5.3, 5.5.4.1, and 5.5.4.2

Syntax$N8601Hw.d

Syntax Descriptionw

specifies the width of the output field.

Default 50

Range 1–200

Requirement The minimum length for a duration value or a datetime value is 16. The minimum length for an interval value is 16.

dspecifies the number of digits to the right of the lowest-order component. This argument is optional.

Default 0

Range 0–3

DetailsThe $N8601H format writes ISO 8601 durations, intervals, and datetimes in the following forms, omitting components in the PnYnMnDTnHnMnS form and using a hyphen ( - ) to represent omitted components in the datetime form:

• PnYnMnDTnHnMnS

• yyyy-mm-ddThh:mm:ss

• PnYnMnDTnHnMnS/yyyy-mm-ddThh:mm:ss

• yyyy-mm-ddThh:mm:ssT/PnYnMnDTnHnMnS

• yyyy-mm-ddThh:mm:ss/yyyy-mm-ddThh:mm:ss

Omitted datetime components are always displayed; they are never truncated.

$N8601H Format 153

Page 160: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleput nh $n8601h.;

Value of nh Result

0002304FFFFFFFFC2012FFF15FFFFFFD P2Y3M4D/2012——T15:-:-

FFFF102FFFFFFFFD2012FFF15FFFFFFD —01-02T-:-:-0/2012——T15:-:-

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

$N8601X FormatWrites ISO 8601 duration, datetime, and interval forms PnYnMnDTnHnMnS and yyyy-mm-ddThh:mm:ss, dropping omitted components in duration values and using an x for each digit of an omitted component in datetime values.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Elements 5.5.3, 5.5.4.1, and 5.5.4.2

Syntax$N8601Xw.d

Syntax Descriptionw

specifies the width of the output field.

Default 50

Range 1–200

Requirement The minimum length for a duration value or a datetime value is 16. The minimum length for an interval value is 16.

dspecifies the number of digits to the right of the lowest-order component. This argument is optional.

Default 0

Range 0–3

154 Chapter 4 • Dictionary of Formats for SAS Only

Page 161: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe $N8601X format writes ISO 8601 durations, intervals, and datetimes in the following forms, omitting components in the PnYnMnDTnHnMnS form and using an x to represent omitted components in the datetime form:

• PnYnMnDTnHnMnS

• yyyy-mm-ddThh:mm:ss

• PnYnMnDTnHnMnS/yyyy-mm-ddThh:mm:ss

• yyyy-mm-ddThh:mm:ssT/PnYnMnDTnHnMnS

• yyyy-mm-ddThh:mm:ss/yyyy-mm-ddThh:mm:ss

Omitted datetime components are always displayed; they are never truncated.

Exampleput nx $n8601x.;

Value of nx Result

0002304FFFFFFFFC2011FFF15FFFFFFD P2Y3M4D/2011-xx-xxT15:xx:xx

FFFF102FFFFFFFFD2011FFF15FFFFFFd xxxx-01-02Txx:xx:xx/2011x-xxT15:xx:xx

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

$VARYING FormatWrites character data of varying length.

Valid in: in DATA step

Category: Character

Alignment: Left

Syntax$VARYINGw. length-variable

Syntax Descriptionw

specifies the maximum width of the output field for any output line or output file record.

Default 8 if the length of the variable is undefined. Otherwise, the default is the length of the variable

$VARYING Format 155

Page 162: ) Formats and Informats: Reference - go.documentation.sas.com

Range 1–32767

length-variablespecifies a numeric variable that contains the length of the current value of the character variable. SAS obtains the value of the length-variable by reading it directly from a field that is described in an INPUT statement, reading the value of a variable in an existing SAS data set, or calculating its value.

Restriction length-variable cannot be an array reference.

Requirement You must specify length-variable immediately after $VARYINGw. in a SAS statement.

Tips If the value of length-variable is 0, negative, or missing, SAS writes nothing to the output field.

If the value of length-variable is greater than 0 but less than w, SAS writes the number of characters that are specified by length-variable.

If length-variable is greater than or equal to w, SAS writes w columns.

DetailsUse $VARYINGw. when the length of a character value differs from record to record. After writing a data value with $VARYINGw., the pointer's position is the first column after the value.

Examples

Example 1: Obtaining a Variable Length DirectlyAn existing data set variable contains the length of a variable. The data values and the results follow the explanation of this SAS statement:

put @10 name $varying12. varlen;

NAME is a character variable of length 12 that contains values that vary from 1 to 12 characters in length. VARLEN is a numeric variable in the same data set that contains the actual length of NAME for the current observation.

Value of name * Result

----+----1----+----2----+

New York 8 New York

Toronto 7 Toronto

Buenos Aires 12 Buenos Aires

Tokyo 5 Tokyo

* The value of NAME appears before the value of VARLEN.

156 Chapter 4 • Dictionary of Formats for SAS Only

Page 163: ) Formats and Informats: Reference - go.documentation.sas.com

Example 2: Obtaining a Variable Length IndirectlyUse the LENGTH function to determine the length of a variable. The data values and the results follow the explanation of these SAS statements:

varlen=length(name);put @10 name $varying12. varlen;

The assignment statement determines the length of the varying-length variable. The variable VARLEN contains this length and becomes the length-variable argument to the $VARYING12. format.

Values * Result

----+----1----+----2----+

New York New York

Toronto Toronto

Buenos Aires Buenos Aires

Tokyo Tokyo

* The value of NAME appears before the value of VARLEN.

B8601DA FormatWrites date values by using the ISO 8601 basic notation yyyymmdd.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.2.1.1, complete representation

SyntaxB8601DAw.

Syntax Descriptionw

specifies the width of the output field.

Default 10

Range 8–10

B8601DA Format 157

Page 164: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe B8601DA format writes the date value by using the ISO 8601 basic date notation yyyymmdd:

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 0 and 31.

Exampleput bda b8601da.;

Value of bda Result

18885 20110915

18628 20110101

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

B8601DN FormatWrites dates from datetime values by using the ISO 8601 basic notation yyyymmdd.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.2.1.1, complete representation

SyntaxB8601DNw.

Syntax Descriptionw

specifies the width of the output field.

Default 10

Range 8–10

158 Chapter 4 • Dictionary of Formats for SAS Only

Page 165: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe B8601DN format writes the date from a datetime value by using the ISO 8601 basic date notation yyyymmdd:

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

Exampleput bdn b8601dn.;

Value of bdn Result

1631664000 20110915

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

B8601DT FormatWrites datetime values by using the ISO 8601 basic notation yyyymmddThhmmss<ffffff>.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

Supports: ISO 8601 Element 5.4.1, complete representation

SyntaxB8601DTw.d

Syntax Descriptionw

specifies the width of the output field.

Default 19

B8601DT Format 159

Page 166: ) Formats and Informats: Reference - go.documentation.sas.com

Range 15–26

dspecifies the number of digits to the right of the seconds value that represents a fraction of a second. This argument is optional.

Default 0

Range 0–6

DetailsThe B8601DT format writes the datetime value by using the ISO 8601 basic datetime notation yyyymmddThhmmss<ffffff>:

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

Exampleput bdt b8601dt.;

Value of bdt Result

---- +----1

1631721180 20110915T155300

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

160 Chapter 4 • Dictionary of Formats for SAS Only

Page 167: ) Formats and Informats: Reference - go.documentation.sas.com

B8601DX FormatAdjusts a Coordinated Universal Time (UTC) datetime value to the user local date and time. Then, writes the local date and time by using the ISO 8601 datetime and time zone basic notation yyyymmddThhmmss+hhmm.

Categories: Date and TimeISO 8601

Alignment: Left

Supports: ISO 8601 Element 5.4.1, complete representation

SyntaxB8601DXw.

Syntax Descriptionw

specifies the width of the output field.

Default 26

Range 20–35

DetailsUTC values specify a date and a time that are based on the zero meridian in Greenwich, England. Using this format, SAS converts a datetime value to the UTC value and determines the user local date and time by using the value of the TIMEZONE= system option. If the TIMEZONE= option is not set, then the user local date and time are based on the local date and time. The B8601DX format writes SAS datetime values by using the following ISO 8601 basic datetime notation:

• yyyymmddThhmmss+hhmm

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

+|–hhmmis an hour and minute signed offset from zero meridian time. The offset must be +|–hhmm (that is, + or – and four characters).

B8601DX Format 161

Page 168: ) Formats and Informats: Reference - go.documentation.sas.com

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +0200 indicates a two-hour time difference to the east of the zero meridian, and –0600 indicates a six-hour time difference to the west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

ExampleThe first example uses the local time to determine the time and the time zone offset. The second example changes the time zone to America/Adak, which is Hawaii-Aleutian Time.

Statement Result

data _null_ ; t='01Feb2013T12:34:56'dt ;put t b8601dx.; run;

20130201T073456-0500

options timezone='America/Adak';data _null_ ; t='01Feb2013T12:34:56'dt ;put t b8601dx.; run;

20130201T023456-1000

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

B8601DZ FormatWrites datetime values for the zero meridian Coordinated Universal Time (UTC) time by using the ISO 8601 datetime and time zone basic notation yyyymmddThhmmss+0000.

Categories: Date and TimeISO 8601

Alignment: Left

Supports: ISO 8601 Element 5.4.1, complete representation

SyntaxB8601DZw.

Syntax Descriptionw

specifies the width of the output field.

Default 26

162 Chapter 4 • Dictionary of Formats for SAS Only

Page 169: ) Formats and Informats: Reference - go.documentation.sas.com

Range 16–35

DetailsUTC values specify a time and a time zone based on the zero meridian in Greenwich, England. The B8601DZ format writes SAS datetime values for the zero meridian date and time by using one of the following ISO 8601 basic datetime notations:

• yyyymmddThhmmss+0000

Note: Use this form when w is large enough to support this time zone notation.

• yyyymmddThhmmssZ

Note: Use this form when w is not large enough to support the +0000 time zone notation.

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

+0000indicates the UTC time for the zero meridian (Greenwich, England).

An ISO 8601 time or datetime value that specifies a time zone offset is adjusted by the number of hours and minutes that is specified in the offset. Then, the time zone offset is processed as the time or datetime for the zero meridian (Greenwich, England). The B8601DZ format always writes the datetime value by using the zero meridian offset value of +0000. To write a datetime that uses a time zone offset other than +0000, see “B8601LZ Format” on page 165.

Restriction: The shorter form +00 is not supported.

Zindicates that the time is for the zero meridian (Greenwich, England) or +0000 UTC time. Z is used when the width of the format does not support the +0000 notation.

Exampleput bdz b8601dz20.;

Datetime Value Value of bdz Result

20110915T155300+0500 1631703180*

20110915T105300+0000

B8601DZ Format 163

Page 170: ) Formats and Informats: Reference - go.documentation.sas.com

Datetime Value Value of bdz Result

20110915T155300Z 1631721180 20110915T155300+0000

* The ISO 8601 value specifies a time zone offset of five hours. When SAS read the value, the SAS datetime value was adjusted by five hours. The Result column shows the adjustment of five hours.

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

B8601LX FormatWrites datetime values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 basic notation yyyymmddThhmmss+|–hhmm.

Categories: Date and TimeISO 8601

Alignment: Right

Supports: ISO 8601 Elements 5.3.3 and 5.3.4.2

SyntaxB8601LXw

Syntax Descriptionw

specifies the width of the output field.

Default 26

Range 20–35

DetailsThe B8601LX format writes datetime values without making any adjustments, and appends the UTC time zone offset for the local SAS session by using the ISO 8601 basic datetime notation:

• yyyymmddThhmmss+|–hhmm

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 23.

164 Chapter 4 • Dictionary of Formats for SAS Only

Page 171: ) Formats and Informats: Reference - go.documentation.sas.com

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

+|–hhmmis an hour and minute signed offset from zero meridian time. The offset must be +|–hhmm (that is, + or – and four characters).

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +0200 indicates a two-hour time difference to the east of the zero meridian, and –0600 indicates a six-hour time difference to the west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

ExampleThis PUT statement writes the time for the Eastern Standard time zone:

blx='01Feb2013T12:34:56'dt;put blx b8601lx.;

Value of blx Result

1675341296 20130201T123456-0500

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

B8601LZ FormatWrites time values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 basic time notation hhmmss+|–hhmm.

Categories: Date and TimeISO 8601

Alignment: Left

Supports: ISO 8601 Elements 5.3.3 and 5.3.4.2

SyntaxB8601LZw.

Syntax Descriptionw

specifies the width of the output field.

B8601LZ Format 165

Page 172: ) Formats and Informats: Reference - go.documentation.sas.com

Default 14

Range 9–20

DetailsThe B8601LZ format writes time values without making any adjustments, and appends the UTC time zone offset for the local SAS session by using the ISO 8601 basic notation hhmmss+|–hhmm:

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

+|–hhmmis an hour and minute signed offset from zero meridian time. Note that the offset must be +|–hhmm (that is, + or – and four characters).

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +0200 indicates a two-hour time difference to the east of the zero meridian, and -0600 indicates a six-hour time difference to the west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

When SAS reads a UTC time by using the B8601TZ informat, and the adjusted time is greater than 24 hours or less than 00 hours, SAS adjusts the value so that the time is between 000000 and 235959. If the B8601LZ format attempts to format a time outside of this time range, the time is formatted with asterisks to indicate that the value is out of range.

ExampleThis PUT statement writes the time for the Eastern Standard time zone:

put blz b8601lz.;

Value of blz Result

46380 125300-0500

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

B8601TM FormatWrites time values by using the ISO 8601 basic notation hhmmss<ffff>.

Categories: Date and Time

166 Chapter 4 • Dictionary of Formats for SAS Only

Page 173: ) Formats and Informats: Reference - go.documentation.sas.com

ISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

Supports: ISO 8601 Element 5.3.1.1, complete representation

SyntaxB8601TMw.d

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 6–15

dspecifies the number of digits to the right of the seconds value that represents a fraction of a second. This argument is optional.

Default 0

Range 0–6

DetailsThe B8601TM format writes SAS time values by using the ISO 8601 basic time notation hhmmss<ffffff>:

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

Exampleput btm b8601tm.;

B8601TM Format 167

Page 174: ) Formats and Informats: Reference - go.documentation.sas.com

Value of btm Result

57180 155300

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

B8601TX FormatAdjusts a Coordinated Universal Time (UTC) value to the user local time. Then, writes the local time by using the ISO 8601 basic time notation hhmmss+|-hhmm.

Categories: Date and TimeISO 8601

Alignment: Right

Supports: ISO 8601 Elements 5.3.3 and 5.3.4

SyntaxB8601TXw.

Syntax Descriptionw

specifies the width of the output field.

Default 14

Range 9–20

DetailsUTC values specify a time based on the zero meridian in Greenwich, England. Using this format, SAS converts a time value to the UTC value and determines the user local time by using the TIMEZONE= system option. If the TIMEZONE= option is not set, then the user local time is based on the local time. The B8601TX format writes SAS datetime values by using the following ISO 8601 basic time notation:

• hhmmss+|–hhmm

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

+|–hhmmis an hour and minute signed offset from zero meridian time. The offset must be +|–hhmm (that is, + or – and four characters).

168 Chapter 4 • Dictionary of Formats for SAS Only

Page 175: ) Formats and Informats: Reference - go.documentation.sas.com

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +0200 indicates a two-hour time difference to the east of the zero meridian, and –0600 indicates a six-hour time difference to the west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

When SAS reads a UTC time by using the B8601TZ informat, and the adjusted time is greater than 24 hours or less than 00 hours, SAS adjusts the value so that the time is between 000000 and 240000. If the B8601TX format attempts to format a time outside of this time range, the time is formatted with asterisks to indicate that the value is out of range.

ExampleThe first example uses the local time to determine the time and the time zone offset. The second example changes the time zone to America/Adak, which is Hawaii-Aleutian Time.

Statement Result

data _null_; t='12:34:56't;put t b8601tx.; run;

073456-0500

options timezone='America/Adak';data _null_ ; t='12:34:56't;put t b8601tx.; run;

023456-1000

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

B8601TZ FormatAdjusts time values to the Coordinated Universal Time (UTC) and writes the time values by using the ISO 8601 basic time notation hhmmss+|–hhmm.

Categories: Date and TimeISO 8601

Alignment: Left

Supports: ISO 8601 Elements 5.3.3 and 5.3.4

SyntaxB8601TZw.

B8601TZ Format 169

Page 176: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field.

Default 14

Range 9–20

DetailsUTC time values specify a time and a time zone based on the zero meridian in Greenwich, England. The B8601TZ format adjusts the time value to be the time at the zero meridian and writes the time value in one of the following ISO 8601 basic time notations:

• hhmmss+|–hhmm

Note: Use this form when w is large enough to support this time notation.

• hhmmssZ

Note: Use this form when w is not large enough to support the +|–hhmm time zone notation.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

+|–hh:mmis an hour and minute signed offset from zero meridian time. Note that the offset must be +|–hhmm (that is, + or – and four characters).

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +0200 indicates a two-hour time difference to the east of the zero meridian, and –0600 indicates a six-hour time difference to the west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

Zindicates that the time is for zero meridian (Greenwich, England) or +0000 UTC time.

When SAS reads a UTC time by using the B8601TZ informat, and the adjusted time is greater than 24 hours or less than 00 hours, SAS adjusts the value so that the time is between 000000 and 240000. If the B8601TZ format attempts to format a time outside of this time range, the time is formatted with asterisks to indicate that the value is out of range.

ComparisonsFor time values between 000000 and 240000, the B8601TZ format adjusts the time value to be the time at the zero meridian and writes the time value in the international standard extended time notation. The B8601LZ format makes no adjustment to the time and writes time values in the international standard extended time notation, using a UTC time zone offset for the local SAS session.

170 Chapter 4 • Dictionary of Formats for SAS Only

Page 177: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleput btz b8601tz.;

Values for btz Result

73441 202401+0000

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

E8601DA FormatWrites date values by using the ISO 8601 extended notation yyyy-mm-dd.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: IS8601DAw.

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.2.1.1, complete representation

SyntaxE8601DAw.

Syntax Descriptionw

specifies the width of the output field.

Default 10

Requirement The width of the output field must be 10.

DetailsThe E8601DA format writes a date by using the ISO 8601 extended notation yyyy-mm-dd:

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

E8601DA Format 171

Page 178: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleput eda e8601da.;

Value for eda Result

19251 2012-09-15

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

E8601DN FormatWrites dates from SAS datetime values by using the ISO 8601 extended notation yyyy-mm-dd.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: IS8601DN

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.2.1.1, complete representation

SyntaxE8601DNw.

Syntax Descriptionw

specifies the width of the input field.

Default 10

Requirement The width of the input field must be 10.

DetailsThe E8601DN format writes the date by using the ISO 8601 extended date notation yyyy-mm-dd:

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

172 Chapter 4 • Dictionary of Formats for SAS Only

Page 179: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleput edn e8601dn.;

Value for edn Result

1663308532 2012-09-15

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

E8601DT FormatWrites datetime values by using the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss.ffffff.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: IS8601DTw.d

Restriction: UTC time zone offset values are not supported.

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

Supports: ISO 8601 Element 5.4.1, complete representation

SyntaxE8601DTw.d

Syntax Descriptionw

specifies the width of the input field.

Default 19

Range 19–26

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Default 0

Range 0–6

E8601DT Format 173

Page 180: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe E8601DT format writes datetime values by using the ISO 8601 extended datetime notation yyyy-mm-ddThh:mm:ss.ffffff:

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

Exampleput edt e8601dt25.3.;

Value of edt Result

1663343580.2 2012-09-15T15:53:00.234

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

E8601DX FormatAdjusts a Coordinated Universal Time (UTC) datetime value to the user local date and time. Then, writes the local date and time by using the ISO 8601 datetime and time zone extended notation yyyy-mm-ddThh:mm:ss+hh:mm.

Categories: Date and TimeISO 8601

Alignment: Left

Supports: ISO 8601 Element 5.4.1, complete representation

SyntaxE8601DXw.

174 Chapter 4 • Dictionary of Formats for SAS Only

Page 181: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field.

Default 26

Range 20–35

DetailsUTC values specify a date and time that are based on the zero meridian in Greenwich, England. Using this format, SAS converts a datetime value to the UTC value and determines the user local date and time by using the value of the TIMEZONE= system option. If the TIMEZONE= option is not set, the user local date and time are based on the local date and time. The E8601DX format writes SAS datetime values by using the following ISO 8601 basic datetime notation:

• yyyy-mm-ddThh:mm:ss+hh:mm

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

+|–hh:mmis an hour and minute signed offset from zero meridian time. The offset must be +|–hh:mm (that is, + or – and four characters).

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +02:00 indicates a two-hour time difference to the east of the zero meridian, and –06:00 indicates a six-hour time difference to the west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

ExampleThe first example uses the local time to determine the time. The second example changes the time zone to America/Adak, which is Hawaii-Aleutian Time.

Statement Result

data _null_ ; t='01Feb2013T12:34:56'dt ;put t e8601dx.; run;

2013-02-01T07:34:56-05:00

E8601DX Format 175

Page 182: ) Formats and Informats: Reference - go.documentation.sas.com

Statement Result

options timezone='America/Adak';data _null_ ; t='01Feb2013T12:34:56'dt ;put t e8601dx.; run;

2013-02-01T02:34:56-10:00

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

E8601DZ FormatWrites datetime values for the zero meridian Coordinated Universal Time (UTC) time by using the ISO 8601 datetime and time zone extended notation yyyy-mm-ddThh:mm:ss+00:00.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: IS8601DZw.

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.4.1, complete representation

SyntaxE8601DZw.

Syntax Descriptionw

specifies the width of the output field.

Default 26

Range 20–35

DetailsUTC values specify a time and a time zone based on the zero meridian in Greenwich, England. The E8601DZ format writes SAS datetime values by using one of the following ISO 8601 extended datetime notations:

• yyyy-mm-ddThh:mm:ss+00:00

Note: Use this form when w is large enough to support this time zone notation.

• yyyy-mm-ddThh:mm:ssZ

Note: Use this form when w is not large enough to support the +00:00 time zone notation.

176 Chapter 4 • Dictionary of Formats for SAS Only

Page 183: ) Formats and Informats: Reference - go.documentation.sas.com

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 24.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

+00:00indicates that the time is for zero meridian (Greenwich, England) time.

An ISO 8601 time or datetime value that specifies a time zone offset is adjusted by the number of hours and minutes that is specified in the offset and processed as the time or datetime for the zero meridian (Greenwich, England). The E8601DZ format always writes the datetime value by using the zero meridian offset value of +00:00. To write a datetime that uses the UTC offset other than +00:00, see “E8601LZ Format” on page 179.

Restriction: The shorter form +00 is not supported.

Zindicates that the time is for zero meridian (Greenwich, England) or +00:00 UTC time. Z is used when the width of the format does not support the +00:00 notation.

Exampleput edz e8601dz.;

Value of edz Result

1663332780 2012-09-15T12:53:00+00:00

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

E8601LX FormatWrites datetime values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss+|–hh:mm.

Categories: Date and TimeISO 8601

Alignment: Right

Supports: ISO 8601 Elements 5.3.3 and 5.3.4.2

E8601LX Format 177

Page 184: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxE8601LXw

Syntax Descriptionw

specifies the width of the output field.

Default 26

Range 20–35

DetailsThe E8601LX format writes datetime values without making any adjustments, and appends the UTC time zone offset for the local SAS session by using the ISO 8601 basic datetime notation:

• yyyy-mm-ddThh:mm:ss+hh:mm

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

+|–hh:mmis an hour and minute signed offset from zero meridian time. The offset must be +|–hh:mm (that is, + or – and four characters).

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +02:00 indicates a two-hour time difference to the east of the zero meridian, and –06:00 indicates a six-hour time difference to the west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

ExampleThis PUT statement writes the time for the Eastern time zone:

blx='01Feb2013T12:34:56'dt;put blx e8601lx.;

178 Chapter 4 • Dictionary of Formats for SAS Only

Page 185: ) Formats and Informats: Reference - go.documentation.sas.com

Value of blx Result

1675341296 2013-02-01T12:34:56-05:00

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

E8601LZ FormatWrites time values as local time, appending the Coordinated Universal Time (UTC) offset for the local SAS session, using the ISO 8601 extended time notation hh:mm:ss+|–hh:mm.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: IS8601LZw.

Supports: ISO 8601 Element 5.3.1.1, complete representation

SyntaxE8601LZw.

Syntax Descriptionw

specifies the width of the output field.

Default 14

Range 9–20

DetailsThe E8601LZ format writes time values without making any adjustments, and appends the UTC time zone offset for the local SAS session by using one of the following ISO 8601 extended time notations:

• hh:mm:ss+|–hh:mm

Note: Use this form when w is large enough to support this time notation.

• hh:mm:ssZ

Note: Use this form when w is not large enough to support the +|– hh:mm time zone notation.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

E8601LZ Format 179

Page 186: ) Formats and Informats: Reference - go.documentation.sas.com

ssis a two-digit second (zero padded) between 00 and 59.

+|–hh:mmis an hour and minute signed offset from zero meridian time. Note that the offset must be +|–hh:mm (that is, + or – and five characters).

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +02:00 indicates a two-hour time difference to the east of the zero meridian, and –06:00 indicates a six-hour time difference to the west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

Zindicates zero meridian (Greenwich, England) or +00:00 UTC time.

SAS writes the time value by using the form hh:mm.ffffff, and appends the time zone indicator +|–hh:mm based on the time zone offset from the zero meridian for the local SAS session, or Z. The Z time zone indicator is used for format lengths that are less than 14.

If the same time is written using both zone indicators, they indicate two different times based on the UTC. For example, if the local SAS session uses Eastern Time in the U.S., and the time value is 45824, SAS would write 12:43:44–04:00 or 12:43:44Z. The time 12:43:44–04:00 is the time 16:43:44+00:00 at the zero meridian. The Z indicates that the time is the time at the zero meridian, or 12:43:44+00:00.

When SAS reads a UTC time by using the E8601TZ informat, and the adjusted time is greater than 24 hours or less than 00 hours, SAS adjusts the value so that the time is between 00:00:00 and 24:00:00. If the E8601LZ format attempts to format a time outside of this time range, the time is formatted with asterisks to indicate that the value is out of range.

ExampleThis PUT statement writes the time for the Eastern Time zone:

put elz e8601lz.;

Value of elz Result

46380 12:53:00-5:00

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

E8601TM FormatWrites time values by using the ISO 8601 extended notation hh:mm:ss.ffffff.

Categories: Date and TimeISO 8601

Alignment: Left

180 Chapter 4 • Dictionary of Formats for SAS Only

Page 187: ) Formats and Informats: Reference - go.documentation.sas.com

Alias: IS8601TMw.d

Restriction: UTC time zone offset values are not supported.

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

Supports: ISO 8601 Element 5.3.1.1, complete representation, and 5.3.1.3, representation of decimal fractions

SyntaxE8601TMw.d

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 8–15

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Default 0

Range 0–6

DetailsThe E8601TM format writes SAS time values by using the ISO 8601 extended time notation hh:mm:ss.ffffff:

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

.ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

Exampleput etm e8601tm.;

Value of etm Result

57180 15:53:00

E8601TM Format 181

Page 188: ) Formats and Informats: Reference - go.documentation.sas.com

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

E8601TX FormatAdjusts a Coordinated Universal Time (UTC) value to the user local time. Then, writes the local time by using the ISO 8601 extended time notation hh:mm:ss+|–hh:mm.

Categories: Date and TimeISO 8601

Alignment: Right

Supports: ISO 8601 Elements 5.3.3 and 5.3.4

SyntaxE8601TXw.

Syntax Descriptionw

specifies the width of the output field.

Default 14

Range 9–20

DetailsUTC values specify a time based on the zero meridian in Greenwich, England. Using this format, SAS converts a time value to the UTC value and determines the user local time by using the value of the TIMEZONE= system option. If the TIMEZONE= option is not set, the user local time is based on the local time. The E8601TX format writes SAS datetime values by using the following ISO 8601 basic time notation:

• hh:mm:ss+|–hh:mm

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

+|–hh:mmis an hour and minute signed offset from zero meridian time. The offset must be +|–hhmm (that is, + or – and four characters).

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +0200 indicates a two-hour time difference to the east of the zero meridian, and –0600 indicates a six-hour time difference to the west of the zero meridian.

182 Chapter 4 • Dictionary of Formats for SAS Only

Page 189: ) Formats and Informats: Reference - go.documentation.sas.com

Restriction: The shorter form +|-hh is not supported.

When SAS reads a UTC time by using the E8601TZ informat, and the adjusted time is greater than 24 hours or less than 00 hours, SAS adjusts the value so that the time is between 000000 and 240000. If the E8601TX format attempts to format a time outside of this time range, the time is formatted with asterisks to indicate that the value is out of range.

ExampleThe first example uses the local time to determine the time and the time zone offset. The second example changes the time zone to America/Adak, which is Hawaii-Aleutian Time.

Statement Result

data _null_ ; t='12:34:56't;put t e8601tx.; run;

07:34:56-05:00

options timezone='America/Adak';data _null_ ; t='12:34:56't;put t e8601tx.; run;

02:34:56-10:00

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

E8601TZ FormatAdjusts time values to the Coordinated Universal Time (UTC) and writes the time values by using the ISO 8601 extended notation hh:mm:ss.<fff>+|–hh:mm.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: IS8601TZw.d

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

Supports: ISO 8601 Element 5.3.1.1, complete representation

SyntaxE8601TZw.d

E8601TZ Format 183

Page 190: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field.

Default 14

Range 9–20

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Default 0

Range 0–6

DetailsUTC time values specify a time and a time zone based on the zero meridian in Greenwich, England. The E8601TZ format writes time values in one of the following ISO 8601 extended time notations:

• hh:mm:ss<.fff>+|–hh:mm

Note: Use this form when w is large enough to support this time zone notation.

• hh:mm:ssZ

Note: Use this form when w is not large enough to support the +|–hh:mm time zone notation.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

fffare optional fractional seconds.

+|–hh:mmis an hour and minute signed offset from zero meridian time. The offset must be +|–hh:mm (that is, + or – and five characters).

Restriction: The shorter form +|–hh is not supported.

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +02:00 indicates a two-hour time difference to the east of the zero meridian, and –06:00 indicates a six- hour time difference to the west of the zero meridian.

Zindicates zero meridian (Greenwich, England) or +00:00 UTC time.

When SAS reads a UTC time by using the E8601TZ informat, and the adjusted time is greater than 24 hours or less than 00 hours, SAS adjusts the value so that the time is between 00:00:00 and 24:00:00. If the E8601TZ format attempts to format a time outside of this time range, the time is formatted with asterisks to indicate that the value is out of range.

184 Chapter 4 • Dictionary of Formats for SAS Only

Page 191: ) Formats and Informats: Reference - go.documentation.sas.com

ComparisonsFor time values between 00:00:00 and 24:00:00, the time value E8601TZ format adjusts the time value to be the time at the zero meridian and writes the time value in the international standard extended time notation. The E8601LZ format makes no adjustment to the time and writes time values in the international standard extended time notation, using a UTC time zone offset for the local SAS session.

Exampleput etz e8601tz.;

Value of etz Result

17024 04:43:44+00:00

85424 23:43:44+00:00

See Also“Working with Dates and Times By Using the ISO 8601 Basic and Extended Notations” on page 14

IB FormatWrites native integer binary (fixed-point) values, including negative values.

Category: Numeric

Alignment: Left

SyntaxIBw.d

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 1–8

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–10

IB Format 185

Page 192: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe IBw.d format writes integer binary (fixed-point) values, including negative values that are represented in two's complement notation. IBw.d writes integer binary values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

Note: Different operating environments store integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 8 .

ComparisonsThe IBw.d and PIBw.d formats are used to write native format integers. (Native format enables you to read and write values created in the same operating environment.) The IBRw.d and PIBRw.d formats are used to write little endian integers in any operating environment.

To view a table that shows the type of format to use with big endian and little endian integers, see “Writing Data Generated on Big Endian or Little Endian Platforms” on page 8.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

Exampley=put(x,ib4.);put y $hex8.;

Value of x Result on Big Endian Platforms * Result on Little Endian Platforms *

----+----1 ----+----1

128 00000080 80000000

* The result is a hexadecimal representation of a four-byte integer binary number. Each byte occupies one column of the output field.

See Also

Formats:

• “IBR Format” on page 186

IBR FormatWrites integer binary (fixed-point) values in Intel and DEC formats.

Category: Numeric

Alignment: Left

186 Chapter 4 • Dictionary of Formats for SAS Only

Page 193: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxIBRw.d

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 1–8

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–10

DetailsThe IBRw.d format writes integer binary (fixed-point) values, including negative values that are represented in two's complement notation. IBRw.d writes integer binary values that are generated by and for Intel and DEC operating environments. Use IBRw.d to write integer binary data from Intel or DEC environments on other operating environments. The IBRw.d format in SAS code allows for a portable implementation for writing the data in any operating environment.

Note: Different operating environments store integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 8 .

Comparisons• The IBw.d and PIBw.d formats are used to write native format integers. (Native

format enables you to read and write values that are created in the same operating environment.)

• The IBRw.d and PIBRw.d formats are used to write little endian integers, regardless of the operating environment that you are writing on.

• In Intel and DEC operating environments, the IBw.d and IBRw.d formats are equivalent.

To view the type of format to use with big endian and little endian integers, see “Writing Data Generated on Big Endian or Little Endian Platforms” on page 8.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

Exampley=put(x,ibr4.);put y $hex8.;

IBR Format 187

Page 194: ) Formats and Informats: Reference - go.documentation.sas.com

Value of x Result*

----+----1

128 80000000

* The result is a hexadecimal representation of a 4-byte integer binary number. Each byte occupies one column of the output field.

See Also

Formats:

• “IB Format” on page 185

JULDAY FormatWrites date values as the Julian day of the year.

Category: Date and Time

Alignment: Right

SyntaxJULDAYw.

Syntax Descriptionw

specifies the width of the output field.

Default 3

Range 3–32

DetailsThe JULDAYw. format writes SAS date values in the form ddd, where

dddis the number of the day, 1–365 (or 1–366 for leap years).

ExampleThe example table uses the input values of 18993, which is the SAS date value that corresponds to January 1, 2012, and 19068, which is the SAS date value that corresponds to March 16, 2012.

Input Value SAS Statement Result

----+----1

188 Chapter 4 • Dictionary of Formats for SAS Only

Page 195: ) Formats and Informats: Reference - go.documentation.sas.com

Input Value SAS Statement Result

18993 put date julday3.; 1

19068 put date julday3.; 76

NUMX FormatWrites numeric values with a comma in place of the decimal point.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxNUMXw.d

Syntax Descriptionw

specifies the width of the output field.

Default 12

Range 1–32

dspecifies the number of digits to the right of the decimal point (comma) in the numeric value. This argument is optional.

Default 0

Range 0–31

DetailsThe NUMXw.d format writes numeric values with a comma in place of the decimal point.

ComparisonsThe NUMXw.d format is similar to the w.d format except that NUMXw.d writes numeric values with a comma in place of the decimal point.

Example: Examplesput x numx10.2;

NUMX Format 189

Page 196: ) Formats and Informats: Reference - go.documentation.sas.com

Value of x Result

----+----1----+

896.48 896,48

64.89 64,89

3064.10 3064,10

See Also

Formats:

• “w Format” on page 105

Informats:

• “NUMX Informat” on page 322

PD FormatWrites data in packed decimal format.

Category: Numeric

Alignment: Left

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxPDw.d

Syntax Descriptionw

specifies the width of the output field. The w value specifies the number of bytes, not the number of digits. (In packed decimal data, each byte contains two digits.)

Default 1

Range 1–16

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–31

190 Chapter 4 • Dictionary of Formats for SAS Only

Page 197: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsDifferent operating environments store packed decimal values in different ways. However, the PDw.d format writes packed decimal values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

The PDw.d format writes missing numerical data as –0. When the PDw.d informat reads a –0, it stores it as 0.

ComparisonsThe following table compares packed decimal notation in several programming languages:

Language Notation

SAS PD4.

COBOL COMP-3 PIC S9(7)

IBM 370 assembler PL4

PL/I FIXED DEC

Exampley=put(x,pd4.);put y $hex8.;

Value of x Result *

----+----1

128 00000128

* The result is a hexadecimal representation of a binary number written in packed decimal format. Each byte occupies one column of the output field.

PDJULG FormatWrites packed Julian date values in the hexadecimal format yyyydddF for IBM.

Category: Date and Time

SyntaxPDJULGw.

PDJULG Format 191

Page 198: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 3-16

DetailsThe PDJULGw. format writes SAS date values in the form yyyydddF:

yyyyis the two-byte representation of the four-digit Gregorian year.

dddis the one-and-a-half byte representation of the three-digit integer that corresponds to the Julian day of the year, 1–365 (or 1–366 for leap years).

Fis the half byte that contains all binary 1s, which assigns the value as positive.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

Example

SAS Statement Result

----+----1

date = '17mar2012'd;juldate = put(date,pdjulg4.);put juldate $hex8.;

2012077F

See Also

Formats:

• “JULDAY Format” on page 188

• “JULIAN Format” on page 80

• “PDJULI Format” on page 193

Functions:

• “DATEJUL Function” in SAS Viya Functions and CALL Routines: Reference

• “JULDATE Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “JULIAN Informat” on page 315

• “PDJULG Informat” on page 389

• “PDJULI Informat” on page 390

192 Chapter 4 • Dictionary of Formats for SAS Only

Page 199: ) Formats and Informats: Reference - go.documentation.sas.com

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

PDJULI FormatWrites packed Julian date values in the hexadecimal format ccyydddF for IBM.

Category: Date and Time

SyntaxPDJULIw.

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 3–16

DetailsThe PDJULIw. format writes SAS date values in the form ccyydddF:

cc is the one-byte representation of a two-digit integer that represents the century.

yy is the one-byte representation of a two-digit integer that represents the year. The PDJULIw. format makes an adjustment for the century byte by subtracting 1900 from the four-digit Gregorian year to produce the correct packed decimal ccyy representation. A year value of 1998 is stored in ccyy as 0098, and a year value of 2011 is stored as 0111.

ddd is the one-and-a-half byte representation of the three-digit integer that corresponds to the Julian day of the year, 1–365 (or 1–366 for leap years).

Fis the half byte that contains all binary 1s, which assigns the value as positive.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

Example

SAS Statement Result

----+----1

PDJULI Format 193

Page 200: ) Formats and Informats: Reference - go.documentation.sas.com

SAS Statement Result

date = '17mar2012'd;juldate = put(date,pdjuli4.);put juldate $hex8.;

0112077F

date = '31dec2013'd;juldate = put(date,pdjuli4.);put juldate $hex8.;

0113365F

See Also

Formats:

• “JULDAY Format” on page 188

• “JULIAN Format” on page 80

• “PDJULG Format” on page 191

Functions:

• “DATEJUL Function” in SAS Viya Functions and CALL Routines: Reference

• “JULDATE Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “JULIAN Informat” on page 315

• “PDJULG Informat” on page 389

• “PDJULI Informat” on page 390

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

PERCENT FormatWrites numeric values as percentages.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxPERCENTw.d

194 Chapter 4 • Dictionary of Formats for SAS Only

Page 201: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the output field.

Default 6

Range 4–32

Tip The width of the output field must account for the percent sign (% ) and parentheses for negative numbers, whether the number is negative or positive.

dspecifies the number of digits to the right of the decimal point in the numeric value. This argument is optional.

Range 0–31

Requirement must be less than w

DetailsThe PERCENTw.d format multiplies values by 100, formats them the same as the BESTw.d format, and adds a percent sign (%) to the end of the formatted value. Negative values are enclosed in parentheses.

Exampleput @10 gain percent10.;

Value of x Result

----+----1----+----2

0.1 10%

1.2 120%

-0.05 ( 5%)

See Also

Formats:

• “PERCENTN Format” on page 195

PERCENTN FormatProduces percentages, using a minus sign for negative values.

Category: Numeric

PERCENTN Format 195

Page 202: ) Formats and Informats: Reference - go.documentation.sas.com

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxPERCENTNw.d

Syntax Descriptionw

specifies the width of the output field.

Default 6

Range 4–32

Tip The width of the output field must account for the minus sign ( – ), the percent sign ( % ), and a trailing blank, whether the number is negative or positive.

dspecifies the number of digits to the right of the decimal point in the numeric value. This argument is optional.

Range 0–31

Requirement must be less than w

DetailsThe PERCENTNw.d format multiplies negative values by 100, formats them the same as the BESTw.d format, adds a minus sign to the beginning of the value, and adds a percent sign (%) to the end of the formatted value.

ComparisonsThe PERCENTNw.d format produces percents by using a minus sign instead of parentheses for negative values. The PERCENTw.d format produces percents by using parentheses for negative values.

Exampleput x percentn10.;

Value of x Result

–0.1 -10%

.2 20%

.8 80%

196 Chapter 4 • Dictionary of Formats for SAS Only

Page 203: ) Formats and Informats: Reference - go.documentation.sas.com

Value of x Result

–0.05 -5%

–6.3 –630%

See Also

Format:

• “PERCENT Format” on page 194

PIB FormatWrites positive integer binary (fixed-point) values.

Category: Numeric

Alignment: Left

SyntaxPIBw.d

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–8

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–31

DetailsAll values are treated as positive. PIBw.d writes positive integer binary values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

Note: Different operating environments store integer binary values in different ways. This concept is called byte ordering. For more information about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 8 .

PIB Format 197

Page 204: ) Formats and Informats: Reference - go.documentation.sas.com

Comparisons• Positive integer binary values are the same as integer binary values except that the

sign bit is part of the value, which is always a positive integer. The PIBw.d format treats all values as positive and includes the sign bit as part of the value.

• The PIBw.d format with a width of 1 results in a value that corresponds to the binary equivalent of the contents of a byte. A value that corresponds to the binary equivalent of the contents of a byte is useful if your data contains values between hexadecimal 80 and hexadecimal FF, where the high-order bit can be misinterpreted as a negative sign.

• The PIBw.d format is the same as the IBw.d format except that PIBw.d treats all values as positive values.

• The IBw.d and PIBw.d formats are used to write native format integers. (Native format enables you to read and write values that are created in the same operating environment.) The IBRw.d and PIBRw.d formats are used to write little endian integers in any operating environment.

To view a table that shows the type of format to use with big endian and little endian integers, see “Writing Data Generated on Big Endian or Little Endian Platforms” on page 8.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

Exampley=put(x,pib1.);put y $hex2.;

Value of x Result *

----+----1

12 0C

* The result is a hexadecimal representation of a one-byte binary number written in positive integer binary format, which occupies one column of the output field.

See Also

Formats:

• “PIBR Format” on page 198

PIBR FormatWrites positive integer binary (fixed-point) values in Intel and DEC formats.

Category: Numeric

198 Chapter 4 • Dictionary of Formats for SAS Only

Page 205: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxPIBRw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

Range 1–8

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–10

DetailsAll values are treated as positive. PIBRw.d writes positive integer binary values that have been generated by and for Intel and DEC operating environments. Use PIBRw.d to write positive integer binary data from Intel or DEC environments on other operating environments. The PIBRw.d format in SAS code allows for a portable implementation for writing the data in any operating environment.

Note: Different operating environments store positive integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 8 .

Comparisons• Positive integer binary values are the same as integer binary values except that the

sign bit is part of the value, which is always a positive integer. The PIBRw.d format treats all values as positive and includes the sign bit as part of the value.

• The PIBRw.d format with a width of 1 results in a value that corresponds to the binary equivalent of the contents of a byte. A value that corresponds to the binary equivalent of the contents of a byte is useful if your data contain values between hexadecimal 80 and hexadecimal FF, where the high-order bit can be misinterpreted as a negative sign.

• On Intel and DEC operating environments, the PIBw.d and PIBRw.d formats are equivalent.

• The IBw.d and PIBw.d formats are used to write native format integers. (Native format enables you to read and write values that are created in the same operating environment.) The IBRw.d and PIBRw.d formats are used to write little endian integers in any operating environment.

To view a table that shows the type of format to use with big endian and little endian integers, see “Writing Data Generated on Big Endian or Little Endian Platforms” on page 8.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

PIBR Format 199

Page 206: ) Formats and Informats: Reference - go.documentation.sas.com

Exampley=put(x,pibr2.);put y $hex4.;

Value of x Result *

----+----1

128 8000

* The result is a hexadecimal representation of a two-byte binary number written in positive integer binary format, which occupies one column of the output field.

See Also

Informats:

• “PIB Informat” on page 326

PK FormatWrites data in unsigned packed decimal format.

Category: Numeric

Alignment: Left

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxPKw.d

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–16

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–10

Requirement must be less than w

200 Chapter 4 • Dictionary of Formats for SAS Only

Page 207: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsEach byte of unsigned packed decimal data contains two digits.

ComparisonsThe PKw.d format is similar to the PDw.d format except that PKw.d does not write the sign in the low-order byte.

Exampley=put(x,pk4.); put y $hex8.;

Value of x Result *

----+----1

128 00000128

* The result is a hexadecimal representation of a four-byte number written in packed decimal format. Each byte occupies one column of the output field.

PVALUE FormatWrites p-values.

Category: Numeric

Alignment: Right

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxPVALUEw.d

Syntax Descriptionw

specifies the width of the output field.

Default 6

Range 3–32

dspecifies the number of digits to the right of the decimal point in the numeric value. This argument is optional.

Default the minimum of 4 and w–2

PVALUE Format 201

Page 208: ) Formats and Informats: Reference - go.documentation.sas.com

Range 1–30

Restriction must be less than w

ComparisonsThe PVALUEw.d format follows the rules for the w.d format, except in the following conditions:

• if the value x is such that 0 <= x < 10-d, x is printed as “<.0...01” with d-1 zeros

• missing values are printed as “.” unless you specify a different character by using the MISSING= system option

Exampleput x pvalue6.4;

Value of x Result

----+----1

.05 0.0500

0.000001 <.0001

0 <.0001

.0123456 0.0123

RB FormatWrites real binary data (floating-point) in real binary format.

Category: Numeric

Alignment: Left

SyntaxRBw.d

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 2–8

202 Chapter 4 • Dictionary of Formats for SAS Only

Page 209: ) Formats and Informats: Reference - go.documentation.sas.com

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–10

DetailsThe RBw.d format writes numeric data in the same way that SAS stores them. Because it requires no data conversion, RBw.d is the most efficient method for writing data with SAS.

Note: Different operating environments store real binary values in different ways. However, RBw.d writes real binary values with consistent results in the same type of operating environment that you use to run SAS.

CAUTION:Using RB4. to write real binary data on equipment that conforms to the IEEE standard for floating-point numbers results in a truncated eight-byte (double-precision) number rather than a true four-byte (single-precision) floating-point number.

ComparisonsThe following table compares the names of real binary notation in several programming languages:

Language 4 Bytes 8 Bytes

SAS RB4. RB8.

Fortran REAL*4 REAL*8

C float double

COBOL COMP-1 COMP-2

IBM 370 assembler E D

Exampley=put(x,rb8.);put y $hex16.;

Value of x Result *

----+---1----+----2

128 4280000000000000

* The result is a hexadecimal representation of an eight-byte real binary number as it looks on an IBM mainframe. Each byte occupies one column of the output field.

RB Format 203

Page 210: ) Formats and Informats: Reference - go.documentation.sas.com

S370FF FormatWrites native standard numeric data in IBM mainframe format.

Category: Numeric

SyntaxS370FFw.d

Syntax Descriptionw

specifies the width of the output field.

Default 12

Range 1–32

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–31

DetailsThe S370FFw.d format writes numeric data in IBM mainframe format (EBCDIC). The EBCDIC numeric values are represented with one byte per digit. If EBCDIC is the native format, S370FFw.d performs no conversion.

If a value is negative, an EBCDIC minus sign precedes the value. A missing value is represented as a single EBCDIC period.

Comparisons• On an EBCDIC system, S370FFw.d behaves like the w.d format.

• On all other systems, S370FFw.d performs the same role for numeric data that the $EBCDICw. format does for character data.

Exampley=put(x,s370ff5.); put y $hex10.;

Value of x Result *

----+----1

12345 F1F2F3F4F5

* The result is the hexadecimal representation for the integer.

204 Chapter 4 • Dictionary of Formats for SAS Only

Page 211: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

Formats:

• “$EBCDIC Format” on page 143

• “w Format” on page 105

S370FIB FormatWrites integer binary (fixed-point) values, including negative values, in IBM mainframe format.

Category: Numeric

Alignment: Left

SyntaxS370FIBw.d

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 1–8

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–10

DetailsThe S370FIBw.d format writes integer binary (fixed-point) values that are stored in IBM mainframe format, including negative values that are represented in two's complement notation. S370FIBw.d writes integer binary values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

Use S370FIBw.d to write integer binary data in IBM mainframe format from data that are created in other operating environments.

Note: Different operating environments store integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 8 .

Comparisons• If you use SAS on an IBM mainframe, S370FIBw.d and IBw.d are identical.

S370FIB Format 205

Page 212: ) Formats and Informats: Reference - go.documentation.sas.com

• S370FPIBw.d, S370FIBUw.d, and S370FIBw.d are used to write big endian integers in any operating environment.

To view a table that shows the type of format to use with big endian and little endian integers, see “Writing Data Generated on Big Endian or Little Endian Platforms” on page 8.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

Exampley=put(x,s370fib4.);put y $hex8.;

Value of x Result *

----+----1

128 00000080

* The result is a hexadecimal representation of a 4-byte integer binary number. Each byte occupies one column of the output field.

See Also

Formats:

• “S370FIBU Format” on page 206

• “S370FPIB Format” on page 210

S370FIBU FormatWrites unsigned integer binary (fixed-point) values in IBM mainframe format.

Category: Numeric

Alignment: Left

SyntaxS370FIBUw.d

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 1–8

206 Chapter 4 • Dictionary of Formats for SAS Only

Page 213: ) Formats and Informats: Reference - go.documentation.sas.com

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–10

DetailsThe S370FIBUw.d format writes unsigned integer binary (fixed-point) values that are stored in IBM mainframe format, including negative values that are represented in two's complement notation. Unsigned integer binary values are the same as integer binary values, except that all values are treated as positive. S370FIBUw.d writes integer binary values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

Use S370FIBUw.d to write unsigned integer binary data in IBM mainframe format from data that are created in other operating environments.

Note: Different operating environments store integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 8 .

Comparisons• The S370FIBUw.d format is equivalent to the COBOL notation PIC 9(n) BINARY,

where n is the number of digits.

• The S370FIBUw.d format is the same as the S370FIBw.d format except that the S370FIBUw.d format always uses the absolute value instead of the signed value.

• The S370FPIBw.d format writes all negative numbers as FFs, while the S370FIBUw.d format writes the absolute value.

• S370FPIBw.d, S370FIBUw.d, and S370FIBw.d are used to write big endian integers in any operating environment.

To view a table that shows the type of format to use with big endian and little endian integers, see “Writing Data Generated on Big Endian or Little Endian Platforms” on page 8.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

Exampley=put(x,s370fibu1.);put y $hex2.;

Value of x Result *

245 F5

-245 F5

* The result is a hexadecimal representation of a one-byte integer binary number. Each byte occupies one column of the output field.

S370FIBU Format 207

Page 214: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

Formats

• “S370FIB Format” on page 205

• “S370FPIB Format” on page 210

S370FPD FormatWrites packed decimal data in IBM mainframe format.

Category: Numeric

Alignment: Left

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxS370FPDw.d

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–16

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–31

DetailsUse S370FPDw.d in other operating environments to write packed decimal data in the same format as on an IBM mainframe computer.

ComparisonsThe following table shows the notation for equivalent packed decimal formats in several programming languages:

Language Packed Decimal Notation

SAS S370FPD4.

208 Chapter 4 • Dictionary of Formats for SAS Only

Page 215: ) Formats and Informats: Reference - go.documentation.sas.com

Language Packed Decimal Notation

PL/I FIXED DEC(7,0)

COBOL COMP-3 PIC S9(7)

IBM 370 assembler PL4

Exampley=put(x,s370fpd4.);put y $hex8.;

Value of x Result *

----+----1

128 0000128C

* The result is a hexadecimal representation of a binary number written in packed decimal format. Each byte occupies one column of the output field.

S370FPDU FormatWrites unsigned packed decimal data in IBM mainframe format.

Category: Numeric

Alignment: Left

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxS370FPDUw.d

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–16

dspecifies to multiply the number by 10d. This argument is optional.

S370FPDU Format 209

Page 216: ) Formats and Informats: Reference - go.documentation.sas.com

Default 0

Range 0–31

DetailsUse S370FPDUw.d in other operating environments to write unsigned packed decimal data in the same format as on an IBM mainframe computer.

Comparisons• The S370FPDUw.d format is similar to the S370FPDw.d format except that the

S370FPDw.d format always uses the absolute value instead of the signed value.

• The S370FPDUw.d format is equivalent to the COBOL notation PIC 9(n) PACKED-DECIMAL, where the n value is the number of digits.

Exampley=put(x,s370fpdu2.);put y $hex4.;

Value of x Result *

123 123F

-123 123F

* The result is a hexadecimal representation of a binary number written in packed decimal format. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the output field.

S370FPIB FormatWrites positive integer binary (fixed-point) values in IBM mainframe format.

Category: Numeric

Alignment: Left

SyntaxS370FPIBw.d

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 1–8

210 Chapter 4 • Dictionary of Formats for SAS Only

Page 217: ) Formats and Informats: Reference - go.documentation.sas.com

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–10

DetailsPositive integer binary values are the same as integer binary values, except that all values are treated as positive. S370FPIBw.d writes integer binary values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

Use S370FPIBw.d to write positive integer binary data in IBM mainframe format from data that are created in other operating environments.

Note: Different operating environments store integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 8 .

Comparisons• If you use SAS on an IBM mainframe, S370FPIBw.d and PIBw.d are identical.

• The S370FPIBw.d format is the same as the S370FIBw.d format except that the S370FPIBw.d format treats all values as positive values.

• S370FPIBw.d, S370FIBUw.d, and S370FIBw.d are used to write big endian integers in any operating environment.

To view a table that shows the type of format to use with big endian and little endian integers, see “Writing Data Generated on Big Endian or Little Endian Platforms” on page 8.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

Exampley=put(x,s370fpib1.);put y $hex2.;

Value of x Result *

----+----1

12 0C

* * The result is a hexadecimal representation of a one-byte binary number written in positive integer binary format, which occupies one column of the output field.

See Also

Formats:

S370FPIB Format 211

Page 218: ) Formats and Informats: Reference - go.documentation.sas.com

• “S370FIB Format” on page 205

• “S370FIBU Format” on page 206

S370FRB FormatWrites real binary (floating-point) data in IBM mainframe format.

Category: Numeric

Alignment: Left

SyntaxS370FRBw.d

Syntax Descriptionw

specifies the width of the output field.

Default 4

Range 2–8

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–10

DetailsA floating-point value consists of two parts: a mantissa that gives the value and an exponent that gives the value's magnitude.

Use S370FRBw.d in other operating environments to write floating-point binary data in the same format as on an IBM mainframe computer.

ComparisonsThe following table shows the notation for equivalent floating-point formats in several programming languages:

Language 4 Bytes 8 Bytes

SAS S370FRB4. S370FRB8.

PL/I FLOAT BIN(21) FLOAT BIN(53)

Fortran REAL*4 REAL*8

COBOL COMP-1 COMP-2

212 Chapter 4 • Dictionary of Formats for SAS Only

Page 219: ) Formats and Informats: Reference - go.documentation.sas.com

Language 4 Bytes 8 Bytes

IBM 370 assembler E D

C float double

Exampley=put(x,s370frb6.);put y $hex8.;

Value of x Result *

128 42800000

-123 C2800000

* The result is a hexadecimal representation of a binary number in zoned decimal format on an IBM mainframe computer. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the output field.

S370FZD FormatWrites zoned decimal data in IBM mainframe format.

Category: Numeric

Alignment: Left

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxS370FZDw.d

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 1–32

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

S370FZD Format 213

Page 220: ) Formats and Informats: Reference - go.documentation.sas.com

Range 0–31

DetailsUse S370FZDw.d in other operating environments to write zoned decimal data in the same format as on an IBM mainframe computer.

ComparisonsThe following table shows the notation for equivalent zoned decimal formats in several programming languages:

Language Zoned Decimal Notation

SAS S370FZD3.

PL/I PICTURE '99T'

COBOL PIC S9(3) DISPLAY

assembler ZL3

Exampley=put(x,s370fzd3.);put y $hex6.;

Value of x Result *

123 F1F2C3

-123 F1F2D3

* The result is a hexadecimal representation of a binary number in zoned decimal format on an IBM mainframe computer. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the output field.

S370FZDL FormatWrites zoned decimal leading–sign data in IBM mainframe format.

Category: Numeric

Alignment: Left

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

214 Chapter 4 • Dictionary of Formats for SAS Only

Page 221: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxS370FZDLw.d

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 1–32

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–31

DetailsUse S370FZDLw.d in other operating environments to write zoned decimal leading-sign data in the same format as on an IBM mainframe computer.

Comparisons• The S370FZDLw.d format is similar to the S370FZDw.d format except that the

S370FZDLw.d format displays the sign of the number in the first byte of the formatted output.

• The S370FZDLw.d format is equivalent to the COBOL notation PIC S9(n) DISPLAY SIGN LEADING, where the n value is the number of digits.

Exampley=put(x,s370fzdl3.);put y $hex6.;

Value of x Result *

123 C1F2F3

-123 D1F2F3

* The result is a hexadecimal representation of a binary number in zoned decimal format on an IBM mainframe computer. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the output field.

S370FZDS FormatWrites zoned decimal separate leading-sign data in IBM mainframe format.

Category: Numeric

S370FZDS Format 215

Page 222: ) Formats and Informats: Reference - go.documentation.sas.com

Alignment: Left

SyntaxS370FZDSw.d

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 2–32

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–31

DetailsUse S370FZDSw.d in other operating environments to write zoned decimal separate leading-sign data in the same format as on an IBM mainframe computer.

Comparisons• The S370FZDSw.d format is similar to the S370FZDLw.d format except that the

S370FZDSw.d format does not embed the sign of the number in the zoned output.

• The S370FZDSw.d format is equivalent to the COBOL notation PIC S9(n) DISPLAY SIGN LEADING SEPARATE, where the n value is the number of digits.

Exampley=put (x,s370fzds4.);put y $hex8.;

Value of x Result *

123 4EF1F2F3

-123 60F1F2F3

* The result is a hexadecimal representation of a binary number in zoned decimal format on an IBM mainframe computer. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the output field.

S370FZDT FormatWrites zoned decimal separate trailing-sign data in IBM mainframe format.

216 Chapter 4 • Dictionary of Formats for SAS Only

Page 223: ) Formats and Informats: Reference - go.documentation.sas.com

Category: Numeric

Alignment: Left

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxS370FZDTw.d

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 2–32

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–31

DetailsUse S370FZDTw.d in other operating environments to write zoned decimal separate trailing-sign data in the same format as on an IBM mainframe computer.

Comparisons• The S370FZDTw.d format is similar to the S370FZDSw.d format except that the

S370FZDTw.d format displays the sign of the number at the end of the formatted output.

• The S370FZDTw.d format is equivalent to the COBOL notation PIC S9(n) DISPLAY SIGN TRAILING SEPARATE, where the n value is the number of digits.

Exampley=put (x,s370fzdt4.); ;put y $hex8.;

Value of x Result *

123 F1F2F34E

-123 F1F2F360

* The result is a hexadecimal representation of a binary number in zoned decimal format on an IBM mainframe computer. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the output field.

S370FZDT Format 217

Page 224: ) Formats and Informats: Reference - go.documentation.sas.com

S370FZDU FormatWrites unsigned zoned decimal data in IBM mainframe format.

Category: Numeric

Alignment: Left

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxS370FZDUw.d

Syntax Descriptionw

specifies the width of the output field.

Default 8

Range 1–32

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–31

DetailsUse S370FZDUw.d in other operating environments to write unsigned zoned decimal data in the same format as on an IBM mainframe computer.

Comparisons• The S370FZDUw.d format is similar to the S370FZDw.d format except that the

S370FZDUw.d format always uses the absolute value of the number.

• The S370FZDUw.d format is equivalent to the COBOL notation PIC 9(n) DISPLAY, where the n value is the number of digits.

Exampley=put (x,s370fzdu3.);put y $hex6.;

218 Chapter 4 • Dictionary of Formats for SAS Only

Page 225: ) Formats and Informats: Reference - go.documentation.sas.com

Value of x Result *

123 F1F2F3

-123 F1F2F3

* The result is a hexadecimal representation of a binary number in zoned decimal format on an IBM mainframe computer. Each pair of hexadecimal characters (such as F1) corresponds to one byte of binary data, and each byte corresponds to one column of the output field.

SSN FormatWrites Social Security numbers.

Category: Numeric

SyntaxSSNw.

Syntax Descriptionw

specifies the width of the output field.

Default 11

Restriction w must be 11

DetailsIf the value is missing, SAS writes nine single periods with hyphens between the third and fourth periods and between the fifth and sixth periods. If the value contains fewer than nine digits, SAS right aligns the value and pads it with zeros on the left. If the value has more than nine digits, SAS writes it as a missing value.

Exampleput id ssn.;

Value of id Result

----+----1----+

263878439 263-87-8439

SSN Format 219

Page 226: ) Formats and Informats: Reference - go.documentation.sas.com

VMSZN FormatGenerates VMS and MicroFocus COBOL zoned numeric data.

Category: Numeric

Alignment: Left

SyntaxVMSZNw.d

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–32

dspecifies the number of digits to the right of the decimal point in the numeric value. This argument is optional.

DetailsThe VMSZNw.d format is similar to the ZDw.d format. Both generate a string of ASCII digits, and the last digit is a special character that denotes the magnitude of the last digit and the sign of the entire number. The difference between these formats is in the special character that is used for the last digit. The following table shows the special characters that are used by the VMSZNw.d format.

Desired

Digit

Special

Character

Desired

Digit

Special

Character

0 0 –0 p

1 1 –1 q

2 2 –2 r

3 3 –3 s

4 4 –4 t

5 5 –5 u

6 6 –6 v

7 7 –7 w

220 Chapter 4 • Dictionary of Formats for SAS Only

Page 227: ) Formats and Informats: Reference - go.documentation.sas.com

Desired

Digit

Special

Character

Desired

Digit

Special

Character

8 8 –8 x

9 9 –9 y

If the value to be formatted is too large to fit in a field of the specified width, then the VMSZNw.d format does the following:

• For positive values, it sets the output to the largest positive number that fits in the given width.

• For negative values, it sets the output to the negative number of greatest magnitude that fits in the given width.

Example

SAS Statement Result

----+----1

x=1234;put x vmszn4.;

1234

x=1234;put x vmszn5.1;

12340

x=1234;put x vmszn6.2;

123400

x=-1234;put x vmszn5.;

0123t

See Also

Formats:

• “ZD Format” on page 227

Informats:

• “VMSZN Informat” on page 359

WORDDATE FormatWrites date values as the name of the month, the day, and the year in the form month-name dd, yyyy.

Category: Date and Time

Alignment: Right

WORDDATE Format 221

Page 228: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxWORDDATEw.

Syntax Descriptionw

specifies the width of the output field.

Default 18

Range 3–32

DetailsThe WORDDATEw. format writes SAS date values in the form month-name dd, yyyy:

ddis an integer that represents the day of the month.

yyyyis a four-digit integer that represents the year.

If the width is too small to write the complete month, SAS abbreviates as necessary.

ComparisonsThe WORDDATEw. format is the same as the WORDDATXw. format except that WORDDATXw. prints dd before the month's name.

ExampleThe example table uses the input value of 19158, which is the SAS date value that corresponds to June 14, 2012.

SAS Statement Result

put term worddate3.; Jun

put term worddate9.;

----+----1----+----2 June

put term worddate12.; Jun 14, 2012

put term worddate20.;

----+----1----+----2 June 14, 2012

See Also

Formats:

• “WORDDATX Format” on page 223

222 Chapter 4 • Dictionary of Formats for SAS Only

Page 229: ) Formats and Informats: Reference - go.documentation.sas.com

WORDDATX FormatWrites date values as the day, the name of the month, and the year in the form dd month-name yyyy.

Category: Date and Time

Alignment: Right

SyntaxWORDDATXw.

Syntax Descriptionw

specifies the width of the output field.

Default 18

Range 3–32

DetailsThe WORDDATXw. format writes SAS date values in the form dd month-name, yyyy:

ddis an integer that represents the day of the month. For days 1–9, the leading 0 is not displayed.

yyyyis a four-digit integer that represents the year.

If the width is too small to write the complete month, SAS abbreviates as necessary.

ComparisonsThe WORDDATXw. format is the same as the WORDDATEw. format except that WORDDATEw. prints dd after the month's name.

ExampleThe example table uses the input value of 19057, which is the SAS date value that corresponds to March 5, 2012.

SAS Statement Result

----+----1----+----2

put term worddatx.; 5 March 2012

See Also

Formats:

WORDDATX Format 223

Page 230: ) Formats and Informats: Reference - go.documentation.sas.com

• “WORDDATE Format” on page 221

WORDF FormatWrites numeric values as words with fractions that are shown numerically.

Category: Numeric

Alignment: Left

SyntaxWORDFw.

Syntax Descriptionw

specifies the width of the output field.

Default 10

Range 5–32767

DetailsThe WORDFw. format converts numeric values to their equivalent in English words, with fractions that are represented numerically in hundredths. For example, 8.2 is printed as eight and 20/100.

Negative numbers are preceded by the word minus. When the value's equivalent in words does not fit into the specified field, it is truncated on the right and the last character is printed as an asterisk.

ComparisonsThe WORDFw. format is similar to the WORDSw. format except that WORDFw. prints fractions as numbers instead of words.

Exampleput price wordf15.;

Value of price Result

----+----1----+

2.5 two and 50/100

See Also

Formats:

224 Chapter 4 • Dictionary of Formats for SAS Only

Page 231: ) Formats and Informats: Reference - go.documentation.sas.com

• “WORDS Format” on page 225

WORDS FormatWrites numeric values as words.

Category: Numeric

Alignment: Left

SyntaxWORDSw.

Syntax Descriptionw

specifies the width of the output field.

Default 10

Range 5–32767

DetailsYou can use the WORDSw. format to print checks with the amount written out below the payee line.

Negative numbers are preceded by the word minus. If the number is not an integer, the fractional portion is represented as hundredths. For example, 5.3 is printed as five and thirty hundredths. When the value's equivalent in words does not fit into the specified field, it is truncated on the right and the last character is printed as an asterisk.

ComparisonsThe WORDSw. format is similar to the WORDFw. format except that WORDSw. prints fractions as words instead of numbers.

Exampleput price words23.;

Value of price Result

----+----1----+----2----+

2.1 two and ten hundredths

See Also

Formats:

WORDS Format 225

Page 232: ) Formats and Informats: Reference - go.documentation.sas.com

• “WORDF Format” on page 224

YYMMx FormatWrites date values in the form <yy>yymm or <yy>yy-mm. The x in the format name represents the special character that separates the year and the month. This special character can be a hyphen (-), period (.), slash (/), colon (:), or no separator. The year can be either two or four digits.

Category: Date and Time

Alignment: Right

SyntaxYYMMxw.

Syntax Descriptionx

identifies a separator or specifies that no separator appear between the year and the month. These are valid values for x:

Cseparates with a colon.

Dseparates with a hyphen.

Nindicates no separator.

Pseparates with a period.

Sseparates with a forward slash.

wspecifies the width of the output field.

Default 7

Range 5–32

Interactions When x is set to N, no separator is specified. The width range is then 4–32, and the default changes to 6.

When x has a value of C, D, P, or S and w has a value of 5 or 6, the date appears with only the last two digits of the year. When w is 7 or more, the date appears with a four-digit year.

When x has a value of N and w has a value of 4 or 5, the date appears with only the last two digits of the year. When x has a value of N and w is 6 or more, the date appears with a four-digit year.

226 Chapter 4 • Dictionary of Formats for SAS Only

Page 233: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe YYMMxw. format writes SAS date values in one of the following forms:

<yy>yymm

<yy>yyXmm

where

<yy>yyis a two-digit or four-digit integer that represents the year.

xis a specified separator.

mmis an integer that represents the month.

ExampleThe following examples use the input value of 19127, which is the SAS date value that corresponds to May 14, 2012.

SAS Statement Result

----+----1----+

put date yymmc5.; 12:05

put date yymmd.; 2012-05

put date yymmn4.; 1205

put date yymmp8.; 2012.05

put date yymms10.; 2012/05

See Also

Formats:

• “MMYYx Format” on page 89

• “YYMM Format” on page 116

ZD FormatWrites numeric data in zoned decimal format.

Category: Numeric

Alignment: Left

Interaction: When the DECIMALCONV= system option is set to STDIEEE, the output that is written using this format might differ slightly from previous releases. For more

ZD Format 227

Page 234: ) Formats and Informats: Reference - go.documentation.sas.com

information, see “DECIMALCONV= System Option” in SAS Viya System Options: Reference.

SyntaxZDw.d

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–32

dspecifies to multiply the number by 10d. This argument is optional.

Default 0

Range 0–31

DetailsThe zoned decimal format is similar to standard numeric format in that every digit requires one byte. However, the value's sign is in the last byte, along with the last digit.

Note: Different operating environments store zoned decimal values in different ways. However, the ZDw.d format writes zoned decimal values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

ComparisonsThe following table compares the zoned decimal format with notation in several programming languages:

Language Zoned Decimal Notation

SAS ZD3.

PL/I PICTURE '99T'

COBOL DISPLAY PIC S 999

IBM 370 assembler ZL3

Exampley=put(x,zd4.);put y $hex8.;

228 Chapter 4 • Dictionary of Formats for SAS Only

Page 235: ) Formats and Informats: Reference - go.documentation.sas.com

Value of x Result *

120 F0F1F2C0

* The result is a hexadecimal representation of a binary number in zoned decimal format on an IBM mainframe computer. Each byte occupies one column of the output field.

ZD Format 229

Page 236: ) Formats and Informats: Reference - go.documentation.sas.com

230 Chapter 4 • Dictionary of Formats for SAS Only

Page 237: ) Formats and Informats: Reference - go.documentation.sas.com

Part 2

SAS Informats

Chapter 5Overview of Informats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

Chapter 6Informats Documented in Other Publications . . . . . . . . . . . . . . . . . . . . 251

Chapter 7Dictionary of Informats for SAS and the CAS Server . . . . . . . . . . . . . 253

Chapter 8Dictionary of Informats for SAS Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

231

Page 238: ) Formats and Informats: Reference - go.documentation.sas.com

232

Page 239: ) Formats and Informats: Reference - go.documentation.sas.com

Chapter 5

Overview of Informats

Definition of Informats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

Using Informats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234Ways to Specify Informats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234Permanent versus Temporary Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236User-Defined Informats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237How the Bytes Are Ordered . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237Reading Data Generated on Big Endian or Little Endian Platforms . . . . . . . . . . . 238Integer Binary Notation in Different Programming Languages . . . . . . . . . . . . . . . 238

Working with Packed Decimal and Zoned Decimal Data . . . . . . . . . . . . . . . . . . . . 239Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Types of Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240Platforms Supporting Packed Decimal and Zoned Decimal Data . . . . . . . . . . . . . 241Languages Supporting Packed Decimal and Zoned Decimal Data . . . . . . . . . . . . 241Summary of Packed Decimal and Zoned Decimal Formats and Informats . . . . . . 242

Reading Dates and Times By Using the ISO 860 Basic and Extended Notations . 243ISO 8601 Formatting Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243Reading ISO 8601 Date, Time, and Datetime Values . . . . . . . . . . . . . . . . . . . . . . . 244Reading ISO 8601 Duration, Interval, and Datetime Values . . . . . . . . . . . . . . . . . 246

Definition of InformatsAn informat is a type of SAS language element that applies a pattern to or executes instructions for a data value to be read as input. Types of informats correspond to the data's type: numeric, character, date, time, or timestamp. The ability to create user-defined informats is also supported. Examples of SAS informats are BINARY, DATE. and COMMA. For example, the following value contains a dollar sign and commas:

$1,000,000

To remove the dollar sign ($) and commas (,) before storing the numeric value 1000000 in a variable, read this value with the COMMA11. informat.

233

Page 240: ) Formats and Informats: Reference - go.documentation.sas.com

Unless you explicitly define a variable first, SAS uses the informat to determine whether the variable is numeric or character. SAS also uses the informat to determine the length of character variables.

SyntaxSAS informats have the following form:

<$>informat<w>.<d>

$indicates a character informat; its absence indicates a numeric informat.

informatnames the informat. The informat is a SAS informat or a user-defined informat that was previously defined with the INVALUE statement in PROC FORMAT. “FORMAT” in SAS Viya Utility Procedures Guide.

wspecifies the informat width, which for most informats is the number of columns in the input data.

dspecifies an optional decimal scaling factor in the numeric informats. SAS divides the input data by 10 to the power of d.

Note: Even though SAS can read up to 32 digits when you specify some numeric informats, numbers with more than 15 significant digits might lose precision due to the limitations of the eight-byte floating-point representation used by most computers.

Informats always contain a period (.) as a part of the name. If you omit the w and d values from the informat, SAS uses default values. If the data contain decimal points, SAS ignores the d value and reads the number of decimal places that are actually in the input data.

If the informat width is too narrow to read all the columns in the input data, you might get unexpected results. The problem frequently occurs with the date and time informats. You must adjust the width of the informat to include blanks or special characters between the day, month, year, or time.

When a problem occurs with an informat, SAS writes a note to the SAS log and assigns a missing value to the variable. Problems occur if you use an incompatible informat, such as a numeric informat to read character data, or if you specify the width of a date and time informat that causes SAS to read a special character in the last column.

Using Informats

Ways to Specify Informats

Overview of Specifying InformatsYou can specify informats in the following ways:

• in an INPUT statement

234 Chapter 5 • Overview of Informats

Page 241: ) Formats and Informats: Reference - go.documentation.sas.com

• with the INPUT, INPUTC, and INPUTN functions

• in an INFORMAT statement in a DATA step or a PROC step

• in an ATTRIB statement in a DATA step or a PROC step

INPUT StatementThe INPUT statement with an informat after a variable name is the simplest way to read values into a variable. For example, the following INPUT statement uses two informats:

input @15 style $3. @21 price 5.2;

The $w. character informat reads values into the variable STYLE. The w.d numeric informat reads values into the variable PRICE.

For a complete discussion of the INPUT statement, see “INPUT Statement” in SAS Viya Statements: Reference.

INPUT FunctionThe INPUT function converts a SAS character expression using a specified informat. The informat determines whether the resulting value is numeric or character. Thus, the INPUT function is useful for converting data. Here is an example:

TempCharacter='98.6';TemperatureNumber=input(TempCharacter,4.);

The INPUT function in combination with the w.d informat converts the character value of TempCharacter to a numeric value and assigns the numeric value 98.6 to TemperatureNumber.

T I P If the first argument of the INPUT function is a character expression and not a variable, the character expression must include quotation marks.

Use the PUT function with a SAS format to convert numeric values to character values. For an example of a numeric-to-character conversion, see “PUT Function” in SAS Viya Functions and CALL Routines: Reference. For a complete discussion of the INPUT function, see “INPUT Function” in SAS Viya Functions and CALL Routines: Reference.

INFORMAT StatementThe INFORMAT statement associates an informat with a variable. SAS uses the informat in any subsequent INPUT statement to read values into the variable. For example, in the following statements the INFORMAT statement associates the DATEw. informat with the variables Birthdate and Interview:

informat Birthdate Interview date9.;input @63 Birthdate Interview;

An informat that is associated with an INFORMAT statement behaves like an informat that you specify with a colon (:) format modifier in an INPUT statement. For details about using the colon (:) modifier, see “INPUT Statement, List” in SAS Viya Statements: Reference. Therefore, SAS uses a modified list input to read the variable so that

• the w value in an informat does not determine column positions or input field widths in an external file

• the blanks that are embedded in input data are treated as delimiters unless you change the DLM= or DLMSTR= option in an INFILE statement

• for character informats, the w value in an informat specifies the length of character variables

• for numeric informats, the w value is ignored

Using Informats 235

Page 242: ) Formats and Informats: Reference - go.documentation.sas.com

• for numeric informats, the d value in an informat behaves in the usual way for numeric informats.

If you have coded the INPUT statement to use another style of input, such as formatted input or column input, that style of input is not used when you use the INFORMAT statement.

See “INPUT Statement, List” in SAS Viya Statements: Reference for more information about how to use modified list input to read data.

Note: Anytime a text file originates from anywhere other than the local encoding environment, it might be necessary to specify the ENCODING= option in either ASCII or EBCDIC environments. For example, when you read an EBCDIC text file on an ASCII platform, it is recommended that you specify the ENCODING= option in the FILENAME or INFILE statement. However, if you use the DSD and the DLM= or DLMSTR= options in the FILENAME or INFILE statement, the ENCODING= option is a requirement because these options require certain characters in the session encoding (such as quotation marks, commas, and blanks).The use of encoding-specific informats should be reserved for use with true binary files. That is, they contain both character and non-character fields.

ATTRIB StatementThe ATTRIB statement can also associate an informat, as well as other attributes, with one or more variables. For example, in the following statements, the ATTRIB statement associates the DATEw. informat with the variables Birthdate and Interview:

attrib Birthdate Interview informat=date9.;input @63 Birthdate Interview;

An informat that is associated by using the INFORMAT= option in the ATTRIB statement behaves like an informat that you specify with a colon (:) format modifier in an INPUT statement. For details about using the colon (:) modifier, see “INPUT Statement, List” in SAS Viya Statements: Reference.. Therefore, SAS uses a modified list input to read the variable in the same way as it does for the INFORMAT statement.

For more information, see “ATTRIB Statement” in SAS Viya Statements: Reference.

Permanent versus Temporary AssociationWhen you specify an informat in an INPUT statement, SAS uses the informat to read input data values during that DATA step. SAS, however, does not permanently associate the informat with the variable. To permanently associate an informat with a variable, use an INFORMAT statement or an ATTRIB statement. SAS permanently associates an informat with the variable by modifying the descriptor information in the SAS data set.

User-Defined InformatsIn addition to the informats that are supplied with Base SAS software, you can create your own informats. In Base SAS software, PROC FORMAT enables you to create your own informats and formats for both character and numeric variables. For more information about user-defined informats, see “FORMAT” in SAS Viya Utility Procedures Guide.

When you execute a SAS program that uses user-defined informats, these informats should be available. The two ways to make these informats available are

• to create permanent, not temporary, informats with PROC FORMAT

236 Chapter 5 • Overview of Informats

Page 243: ) Formats and Informats: Reference - go.documentation.sas.com

• to store the source code that creates the informats (the PROC FORMAT step) with the SAS program that uses them.

If you execute a program that cannot locate a user-defined informat, the result depends on the setting of the FMTERR= system option. If the user-defined informat is not found, then these system options produce these results:

System Option Result

FMTERR SAS produces an error that causes the current DATA or PROC step to stop.

NOFMTERR SAS continues processing by substituting a default informat.

Although using NOFMTERR enables SAS to process a variable, you lose the information that the user-defined informat supplies. This option can cause a DATA step to misread data, and it can produce incorrect results. For more information, see “FMTERR System Option” in SAS Viya System Options: Reference.

To avoid problems, make sure that users of your program have access to all the user-defined informats that are used.

Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms

DefinitionsInteger values for integer binary data are typically stored in one of three sizes: one byte, two bytes, or four bytes. The ordering of the bytes for the integer varies depending on the platform (operating environment) on which the integers were produced.

The ordering of bytes differs between the “big endian” and the “little endian” platforms. These colloquial terms are used to describe byte ordering for IBM mainframes (big endian) and for platforms that are based on Intel (little endian). In the SAS System, the following platforms are considered big endian: HP-UX, AIX, Solaris on SPARC, and Macintosh. In SAS, the following platforms are considered little endian: Intel ABI, Linux, OpenVMS, and OpenVMS Integrity.

How the Bytes Are OrderedOn big endian platforms, the value 1 is stored in binary and is represented here in hexadecimal notation. One byte is stored as 01, two bytes as 00 01, and four bytes as 00 00 00 01. On little endian platforms, the value 1 is stored in one byte as 01 (the same as big endian), in two bytes as 01 00, and in four bytes as 01 00 00 00.

If an integer is negative, the “two's complement” representation is used. The high-order bit of the most significant byte of the integer is set on. For example, –2 would be represented in one, two, and four bytes on big endian platforms as FE, FF FE, and FF FF FF FE respectively. On little endian platforms, the representation would be FE, FE FF, and FE FF FF FF. These representations result from the output of the integer binary value –2 expressed in hexadecimal representation.

Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms 237

Page 244: ) Formats and Informats: Reference - go.documentation.sas.com

Reading Data Generated on Big Endian or Little Endian PlatformsSAS can read signed and unsigned integers regardless of whether they were generated on a big endian or a little endian system. Likewise, SAS can write signed and unsigned integers in both big endian and little endian format. The length of these integers can be up to eight bytes.

The following table shows which informat to use for various combinations of platforms. In the Sign? column, “no” indicates that the number is unsigned and cannot be negative. “Yes” indicates that the number can be either negative or positive.

Platform for Which the Data Was Created

Platform the Data Is Read On

Signed Integer Informat

big endian big endian yes IB or S370FIB

big endian big endian no PIB, S370FPIB, S370FIBU

big endian little endian yes IBR

big endian little endian no PIBR

little endian big endian yes IBR

little endian big endian no PIBR

little endian little endian yes IB or IBR

little endian little endian no PIB or PIBR

big endian either yes S370FIB

big endian either no S370FPIB

little endian either yes IBR

little endian either no PIBR

Integer Binary Notation in Different Programming LanguagesThe following table compares integer binary notation according to programming language.

238 Chapter 5 • Overview of Informats

Page 245: ) Formats and Informats: Reference - go.documentation.sas.com

Language2 Bytes or 8-Bit Systems

4 Bytes or 16-Bit Systems

8 Bytes or 64-Bit Systems

SAS IB2., IBR2., PIB2.,PIBR2., S370FIB2., S370FIBU2., S370FPIB2.

IB4., IBR4., PIB4., PIBR4., S370FIB4., S370FIBU4., S370FPIB4.

IB8., IBR8., PIB8., PIBR8., S370FIB8., S370FIBU8., S370FPIB8.

C short int long *

Java short int long *

Visual Basic 6.0 short long* none

Visual Basic.NET short integer long *

PL/I fixed bin(15) fixed bin(31) fixed bin(63)

Fortran integer*2 integer*4 integer*8

COBOL comp pic 9(4) comp pic 9(8) comp pic 9(16)

IBM assembler H F FD

* The size of integers declared as long depends on the operating environment.

Working with Packed Decimal and Zoned Decimal Data

DefinitionsPacked decimal

specifies a method of encoding decimal numbers by using each byte to represent two decimal digits. Packed decimal representation stores decimal data with exact precision. The fractional part of the number is determined by the informat or format because there is no separate mantissa and exponent.

An advantage of using packed decimal data is that exact precision can be maintained. However, computations involving decimal data might become inexact due to the lack of native instructions.

Zoned decimalspecifies a method of encoding decimal numbers in which each digit requires one byte of storage. The last byte contains the number's sign as well as the last digit. Zoned decimal data produces a printable representation.

Nibblespecifies 1/2 of a byte.

Working with Packed Decimal and Zoned Decimal Data 239

Page 246: ) Formats and Informats: Reference - go.documentation.sas.com

Types of Data

Packed Decimal DataA packed decimal representation stores decimal digits in each “nibble” of a byte. Each byte has two nibbles, and each nibble is indicated by a hexadecimal character. For example, the value 15 is stored in two nibbles, using the hexadecimal characters 1 and 5.

The sign indication is dependent on your operating environment. On IBM mainframes, the sign is indicated by the last nibble. With formats, C indicates a positive value, and D indicates a negative value. With informats, A, C, E, and F indicate positive values, and B and D indicate negative values. Any other nibble is invalid for signed packed decimal data. In all other operating environments, the sign is indicated in its own byte. If the high-order bit is 1, then the number is negative. Otherwise, it is positive.

The following applies to packed decimal data representation:

• You can use the S370FPD format on all platforms to obtain the IBM mainframe configuration.

• You can have unsigned packed data with no sign indicator. The packed decimal format and informat handles the representation. It is consistent between ASCII and EBCDIC platforms.

• Note that the S370FPDU format and informat expects to have an F in the last nibble, whereas packed decimal expects no sign nibble.

Zoned Decimal DataThe following applies to zoned decimal data representation:

• A zoned decimal representation stores a decimal digit in the low order nibble of each byte. For all but the byte containing the sign, the high-order nibble is the numeric zone nibble (F on EBCDIC and 3 on ASCII).

• The sign can be merged into a byte with a digit, or it can be separate, depending on the representation. But the standard zoned decimal format and informat expects the sign to be merged into the last byte.

• The EBCDIC and ASCII zoned decimal formats produce the same printable representation of numbers. There are two nibbles per byte, each indicated by a hexadecimal character. For example, the value 15 is stored in two bytes. The first byte contains the hexadecimal value F1 and the second byte contains the hexadecimal value C5.

Packed Julian DatesThe following applies to packed Julian dates:

• The two formats and informats that handle Julian dates in packed decimal representation are PDJULI and PDJULG. PDJULI uses the IBM mainframe year computation, whereas PDJULG uses the Gregorian computation.

• The IBM mainframe computation considers 1900 to be the base year, and the year values in the data indicate the offset from 1900. For example, 98 means 1998, 100 means 2000, and 102 means 2002. 1998 would mean 3898.

• The Gregorian computation allows for two-digit or four-digit years. If you use two-digit years, SAS uses the setting of the YEARCUTOFF= system option to determine the true year.

240 Chapter 5 • Overview of Informats

Page 247: ) Formats and Informats: Reference - go.documentation.sas.com

Platforms Supporting Packed Decimal and Zoned Decimal DataSome platforms have native instructions to support packed and zoned decimal data, whereas others must use software to emulate the computations. For example, the IBM mainframe has an Add Pack instruction to add packed decimal data, but the platforms that are based on Intel have no such instruction and must convert the decimal data into some other format.

Languages Supporting Packed Decimal and Zoned Decimal DataSeveral languages support packed decimal and zoned decimal data. The following table shows how COBOL picture clauses correspond to SAS formats and informats.

IBM VS COBOL II Clauses

Corresponding S370Fxxx Formats and Informats

PIC S9(X) PACKED-DECIMAL S370FPDw.

PIC 9(X) PACKED-DECIMAL S370FPDUw.

PIC S9(W) DISPLAY S370FZDw.

PIC 9(W) DISPLAY S370FZDUw.

PIC S9(W) DISPLAY SIGN LEADING S370FZDLw.

PIC S9(W) DISPLAY SIGN LEADING SEPARATE S370FZDSw.

PIC S9(W) DISPLAY SIGN TRAILING SEPARATE S370FZDTw.

For the packed decimal representation listed above, X indicates the number of digits represented, and W is the number of bytes. For PIC S9(X) PACKED-DECIMAL, W is ceil((x+1)/2). For PIC 9(X) PACKED-DECIMAL, W is ceil(x/2). For example, PIC S9(5) PACKED-DECIMAL represents five digits. If a sign is included, six nibbles are needed. ceil((5+1)/2) has a length of three bytes, and the value of W is 3.

Note that you can substitute COMP-3 for PACKED-DECIMAL.

In IBM assembly language, the P directive indicates packed decimal, and the Z directive indicates zoned decimal. The following shows an excerpt from an assembly language listing, showing the offset, the value, and the DC statement:

offset value (in hex) inst label directive

+000000 00001C 2 PEX1 DC PL3'1' +000003 00001D 3 PEX2 DC PL3'-1'+000006 F0F0C1 4 ZEX1 DC ZL3'1' +000009 F0F0D1 5 ZEX2 DC ZL3'1'

In PL/I, the FIXED DECIMAL attribute is used in conjunction with packed decimal data. You must use the PICTURE specification to represent zoned decimal data. There is no standardized representation of decimal data for the Fortran or C languages.

Working with Packed Decimal and Zoned Decimal Data 241

Page 248: ) Formats and Informats: Reference - go.documentation.sas.com

Summary of Packed Decimal and Zoned Decimal Formats and Informats

SAS uses a group of formats and informats to handle packed and zoned decimal data. The following table lists the type of data representation for these formats and informats. Note that the formats and informats that begin with S370 refer to IBM mainframe representation.

FormatData Type Representation

Corresponding Informat Comments

PD Packed decimal PD Local signed packed decimal

PK Packed decimal PK Unsigned packed decimal; not specific to your operating environment

ZD Zoned decimal ZD Local zoned decimal

none Zoned decimal ZDB Translates EBCDIC blank (x'40') to EBCDIC zero (x'F0'), and then corresponds to the informat as zoned decimal

none Zoned decimal ZDV Zoned decimal representation other than IBM

S370FPD Packed decimal S370FPD Last nibble C (positive) or D (negative)

S370FPDU Packed decimal S370FPDU Last nibble always F (positive)

S370FZD Zoned decimal S370FZD Last byte contains sign in upper nibble: C (positive) or D (negative)

S370FZDU Zoned decimal S370FZDU Unsigned; sign nibble always F

S370FZDL Zoned decimal S370FZDL Sign nibble in first byte in informat; separate leading sign byte of x'C0' (positive) or x'D0' (negative) in format

S370FZDS Zoned decimal S370FZDS Leading sign of – (x'60') or + (x'4E')

S370FZDT Zoned decimal S370FZDT Trailing sign of – (x'60') or + (x'4E')

242 Chapter 5 • Overview of Informats

Page 249: ) Formats and Informats: Reference - go.documentation.sas.com

FormatData Type Representation

Corresponding Informat Comments

PDJULI Packed decimal PDJULI Julian date in packed representation - IBM computation

PDJULG Packed decimal PDJULG Julian date in packed representation - Gregorian computation

none Packed decimal RMFDUR Input layout is: mmsstttF

none Packed decimal SHRSTAMP Input layout is: yyyydddFhhmmssth, where yyyydddF is the packed Julian date; yyyy is a 0-based year from 1900

none Packed decimal SMFSTAMP Input layout is: xxxxxxxxyyyydddF, where yyyydddF is the packed Julian date; yyyy is a 0-based year from 1900

none Packed decimal PDTIME Input layout is: 0hhmmssF

none Packed decimal RMFSTAMP Input layout is: 0hhmmssFyyyydddF, where yyyydddF is the packed Julian date; yyyy is a 0-based year from 1900

Reading Dates and Times By Using the ISO 860 Basic and Extended Notations

ISO 8601 Formatting SymbolsThe following list explains the formatting symbols that are used to notate the ISO 8601 dates, time, datetime, durations, and interval values:

nspecifies a number that represents the number of years, months, or days

Pindicates that the duration that follows is specified by the number of years, months, days, hours, minutes, and seconds

Tindicates that a time value follows. Any value with a time must begin with T.

Reading Dates and Times By Using the ISO 860 Basic and Extended Notations 243

Page 250: ) Formats and Informats: Reference - go.documentation.sas.com

Requirement Time values that are read by the extended notation informats that begin with the characters E8601 must use an uppercase T.

Windicates that the duration is specified in weeks.

Zindicates that the time value is the time in Greenwich, England, or UTC time.

+|-the + indicates the time zone offset to the east of Greenwich, England. The - indicates the time zone offset to the west of Greenwich, England.

yyyyspecifies a four-digit year

mmas part of a date, specifies a two-digit month, 01–12

ddspecifies a two-digit day, 01–1

hhspecifies a two-digit hour, 00–24

mmas part of a time, specifies a two-digit minute, 00–59

ssspecifies a two-digit second, 00–59

fff | ffffffspecifies an optional fraction of a second using the digits 0–9:

fff use 1 - 3 digits for values read by the $N8601B informat and the $N8601E informat

ffffff use 1 - 6 digits for informat other than the $N8601B informat and the $N8601E informat

Yindicates that a year value precedes this character in a duration

Mas part of a date, indicates that a month value precedes this character in a duration

Dindicates that a day value precedes this character in a duration

Hindicates that an hour value precedes this character in a duration

Mas part of a time, indicates that a minute value precedes this character in a duration

Sindicates that a seconds value precedes this character in a duration

Reading ISO 8601 Date, Time, and Datetime ValuesSAS reads ISO 8601 dates, times, and datetimes using various informats, and the resulting values are SAS date, time, or datetime values. The following table shows different date, time, and datetime forms and the informats that you use to read them:

244 Chapter 5 • Overview of Informats

Page 251: ) Formats and Informats: Reference - go.documentation.sas.com

Date, Time, or Datetime ISO 8601 Notation Example Informat

Basic Notations

Date YYYYMMDD 20130915 B8601DAw.

Time with no time zone offset

hhmmssnnnnnn 155300322348 B8601TMw.d

Time with a time zone offset

hhmmss+|–hhmm 155300–0500 B8601TZw.d

hhmmssZ 155300Z B8601TZw.d

Convert to local time with a time zone offset

hhmmss+|–hhmm 155300+0500 B8601TZw.d

Datetime with no time zone offset

yyyymmddThhmmssnnnnnn

20130915T155300 B8601DTw.d

Datetime with a time zone offset

yyyymmddThhmmss+|–hhmm

20130915T155300+0500

B8601DZw.d

yyyymmddThhmmssZ 20130915T155300Z B8601DZw.d

Date from a datetime and no time zone offset

yyyymmdd 20130915 B8601DNw.

Extended Notations

Date yyyy-mm-dd 2013-09-15 E8601DAw.

Time with no time zone offset

hh:mm:ss.nnnnnn 15:53:00.322348 E8601TMw.d

Time with a time zone offset

hh:mm:ss.nnnnnn+|–hh:mm

15:53:00+05:00 E8601TZw.d

Convert to local time with a time zone offset

hh:mm:ss.nnnnnn+|–hh:mm

15:53:00+05:00 E8601LZw.d

Datetime with no time zone offset

yyyy-mm-ddThh:mm:ss.nnnnnn

2013-09-15T15:53:00

E8601DTw.d

Datetime with a time zone offset

yyyy-mm-ddThh:mm:ss.nnnnnn+|–hh:mm

2013-09-15T15:53:00+05:00

E8601DZw.d

Reading Dates and Times By Using the ISO 860 Basic and Extended Notations 245

Page 252: ) Formats and Informats: Reference - go.documentation.sas.com

Date, Time, or Datetime ISO 8601 Notation Example Informat

Date from a datetime and no time zone offset

yyyy-mm-dd 2013-09-15 E8601DNw.

When SAS reads an ISO 8601 value that specifies a time zone offset (+|–hh:mm or +|–hhmm), the time or datetime value is adjusted to account for the offset. A SAS time or datetime value for an ISO 8601 value with a time zone offset is the time or datetime for the zero meridian (Greenwich, England). For example, if SAS reads the datetime 2013-09-15T15:53:00+05:00 using the E8601DZ informat, the datetime value 1694861580 has been adjusted for the five-hour time zone difference. This datetime value is the datetime value for the zero meridian. If you write this value using the E8601DZ format, the value is 2013–09–15T10:53:00+00:00. The hour specified after the T shows the five-hour adjustment.

For examples of reading ISO 8601 dates, times, and datetimes, see “Examples of Reading and Writing Basic and Extended ISO 8601 Date, Time, and Datetime Values” on page 20.

Reading ISO 8601 Duration, Interval, and Datetime Values

Informats That Read Duration, Interval, and Datetime ValuesSAS uses two informats that reads ISO datetime, duration, and interval values.

$N8601B informatreads duration, interval, and datetime values that are specified in either the basic notation or the extended notation

$N8601E informatreads duration, interval, and datetime values that are specified only in the extended notation

Use the $N8601E informat when you want to make sure that you are in compliance with the extended notation.

The datetime values that are read by these informats result in a SAS character representation. If you want a datetime value to be read as a numeric value, use the B8601DT informat, the B8601DZ informat, the E8601DT informat, or the E8601DZ informat.

Complete Duration, Interval, and Datetime NotationsThe following table shows the formatting of duration, datetime, and interval values that can be read in the complete form:

Time Component ISO 8601 Notation Example

Duration - Basic Notation PYYYYMMDDThhmmss P20120915T155300

–PYYYYMMDDThhmmss –P20080915T155300

Duration - Extended Notation PYYYY-MM-DDThh:mm:ss P2012-09-15T15:53:00

246 Chapter 5 • Overview of Informats

Page 253: ) Formats and Informats: Reference - go.documentation.sas.com

Time Component ISO 8601 Notation Example

–PYYYY-MM-DDThh:mm:ss

–P2012-09-15T15:53:00

Duration - Basic and Extended Notation

PnYnMnDTnHnMnS P2y10m14dT20h13m45s

–PnYnMnDTnHnMnS –P2n10m14dT20h13m45s

PnW (weeks) P6w

Interval - Basic Notation YYYYMMDDThhmmss/YYYYMMDDThhmmss

20120915T155300/20141113T000000

PnYnMnDTnHnMnS/YYYYMMDDThhmmss

P2y10M14dT20h13m45s/20120915T155300

YYYYMMDDThhmmss/PnYnMnDTnHnMnS

20120915T155300/P2y10M14dT20h13m45s

Interval- Extended Notation YYYY-MM-DDThh:mm:ss/YYYY-MM-DDThh:mm:ss

2012-09-15T15:53:00/2014-11-13T00:00:00

PnYnMnDTnHnMnS/YYYY-MM-DDThh:mm:ss

P2y10M14dT20h13m45s/2012-09-15T15:53:00

YYYY-MM-DDThh:mm:ss/PnYnMnDTnHnMnS

2012-09-15T15:53:00/P2y10M14dT20h13m45s

Datetime-Basic Notation YYYYMMDDThhmmss.fff+|–hhmm

20120915T155300

(all blank)

Datetime-Extended Notation YYYY-MM-DDThh:mm:ss.fff+|–hhmm

2012-09-15T15:53:00

+04:30

(all blank)

Reading Omitted ComponentsOne or more date or time components can be omitted from a datetime value or a duration value that is in the form Pyyyymmdd. SAS reads omitted components using the $N8601B informat or the $N8601E informat, and the omitted component must be represented by a hyphen ( - ).

The following examples show duration, datetime, and interval values with omitted components:

p0003-02--T10:31:33The omitted component is the number of days.

–p0003-02-02T-:31:33The omitted component is the number of hours.

Reading Dates and Times By Using the ISO 860 Basic and Extended Notations 247

Page 254: ) Formats and Informats: Reference - go.documentation.sas.com

x-09-15T15:x:xThe omitted components are the number of years, minutes, and seconds.

2012-09-15T15:x:00/2010-09-15T15:x:00The omitted components are the minutes.

When reading values that contain a time zone offset, omitted components are not allowed. Use 00 in place of omitted components.

Truncated ValuesSAS reads truncated duration, datetime, and interval values, where one or more lower order components is truncated because the value is 0 or the value is not significant.

The following list shows examples of truncated values:

• p00030202T1031

• 2012-09-15T15/2014-09-15T15:53

• –p0003-03-03T-:-:-

• P2y3m4dT5h6m

• 2012-09-xTx:x:x

• 2012

When reading values that contain a time zone offset, truncation is not allowed. Use 00 in place of truncated values.

Normalizing Duration ComponentsWhen a value for a duration component is greater than the largest standard value for a component, SAS normalizes the component except when the duration component is a single component. The following table shows examples of normalized duration components:

Duration Extended Normalized Duration

p3y13m p0004-01

pt24h24m65s P----01T-:25:05

p3y13mT24h61m P0004-01-01T01:01

p0004-13 p0005-01

p0003-02-61T15:61:61 P0003-04-01T16:02:01

p13m P13M

If a component contains the largest value, such as 60 for minutes or seconds, SAS normalizes the value and replaces the value with a hyphen. For example, pT12:60:13 becomes PT13:-:13.

Thirty days is used to normalize a month.

Dates and times in a datetime value that are greater than the standard value for the component are not normalized. They produce an error.

248 Chapter 5 • Overview of Informats

Page 255: ) Formats and Informats: Reference - go.documentation.sas.com

Fractions in Durations, Datetime, and Interval ValuesEnding components can contain a fraction that consists of a period or a comma, followed by one to three digits. The following examples show the use of fractions in duration, datetime, and interval values:

• 201209.5

• P2012-09-15T10.33

• 2012-09-15/P0003-03-03,333

Reading Dates and Times By Using the ISO 860 Basic and Extended Notations 249

Page 256: ) Formats and Informats: Reference - go.documentation.sas.com

250 Chapter 5 • Overview of Informats

Page 257: ) Formats and Informats: Reference - go.documentation.sas.com

Chapter 6

Informats Documented in Other Publications

Documentation for Additional Informats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

Documentation for Additional InformatsFor information about additional informats, see “Dictionary of Informats for NLS” in SAS Viya National Language Support (NLS): Reference Guide.

251

Page 258: ) Formats and Informats: Reference - go.documentation.sas.com

252 Chapter 6 • Informats Documented in Other Publications

Page 259: ) Formats and Informats: Reference - go.documentation.sas.com

Chapter 7

Dictionary of Informats for SAS and the CAS Server

Informats by Category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260$ASCII Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260$BASE64X Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261$BINARY Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262$CB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263$CHAR Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264$CHARZB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265$EBCDIC Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266$HEX Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267$N8601B Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268$N8601E Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270$OCTAL Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272$PHEX Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273$QUOTE Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274$UPCASE Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275$VARYING Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276$w Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278ANYDTDTE Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279ANYDTDTM Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281ANYDTTME Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285BINARY Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287BITS Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288BZ Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289CB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290COMMA Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291COMMAX Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292DATE Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293DATETIME Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295DDMMYY Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296E8601DA Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298E8601DN Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299E8601DT Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300E8601DX Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302E8601DZ Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302E8601TM Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304E8601TZ Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305FLOAT Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307HEX Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308HHMMSS Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309IB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

253

Page 260: ) Formats and Informats: Reference - go.documentation.sas.com

IBR Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312IEEE Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313JULIAN Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315MDYAMPM Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316MMDDYY Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318MONYY Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319MSEC Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321NUMX Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322PD Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323PDTIME Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325PERCENT Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326PIB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326PIBR Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328PK Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330PUNCH Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331RB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332RMFDUR Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333RMFSTAMP Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334S370FF Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336S370FIB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337S370FIBU Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338S370FPD Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340S370FPDU Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341S370FPIB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342S370FRB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344S370FZD Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345S370FZDB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346S370FZDL Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347S370FZDS Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349S370FZDT Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350S370FZDU Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351SHRSTAMP Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352SMFSTAMP Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353TIME Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354TODSTAMP Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356TRAILSGN Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357TU Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358VAXRB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359VMSZN Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359w Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361YYMMDD Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362YYMMN Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364YYQ Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365ZD Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367ZDB Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368ZDV Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

Informats by CategoryThere are five categories of informats in this list:

254 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 261: ) Formats and Informats: Reference - go.documentation.sas.com

Category Description

Character instructs SAS to read character data values into character variables.

Column Binary instructs SAS to read data stored in column-binary or multipunched form into character or numeric variables.

Date and Time instructs SAS to read date values into variables that represent dates, times, and datetimes.

ISO 8601 instructs SAS to read date, time, and datetime values that are written in the ISO 8601 standard into either numeric or character variables.

Numeric instructs SAS to read numeric data values into numeric variables.

Informats created with PROC FORMAT are supported on CAS. For information about creating user-defined informats, see “FORMAT Procedure” in SAS Viya Utility Procedures Guide.

The following table provides brief descriptions of the SAS informats. For more detailed descriptions, see the dictionary entry for each informat.

Category Language Elements Description

Character $ASCII Informat (p. 260) Converts ASCII character data to native format.

$BASE64X Informat (p. 261) Converts ASCII text into character data by using Base 64 encoding.

$BINARY Informat (p. 262) Converts binary data to character data.

$CHAR Informat (p. 264) Reads character data with blanks.

$CHARZB Informat (p. 265) Converts binary 0s to blanks.

$EBCDIC Informat (p. 266) Converts EBCDIC character data to native format.

$HEX Informat (p. 267) Converts hexadecimal data to character data.

$OCTAL Informat (p. 272) Converts octal data to character data.

$PHEX Informat (p. 273) Converts packed hexadecimal data to character data.

$QUOTE Informat (p. 274) Removes matching quotation marks from character data.

$UPCASE Informat (p. 275) Converts character data to uppercase.

$VARYING Informat (p. 276) Reads character data of varying length.

$w Informat (p. 278) Reads standard character data.

Column Binary $CB Informat (p. 263) Reads standard character data from column-binary files.

Informats by Category 255

Page 262: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

CB Informat (p. 290) Reads standard numeric values from column-binary files.

PUNCH Informat (p. 331) Reads whether a row of column-binary data is punched.

Date and Time $N8601B Informat (p. 268) Reads complete, truncated, and omitted forms of ISO 8601 duration, datetime, and interval values that are specified in either the basic or extended notations.

$N8601E Informat (p. 270) Reads ISO 8601 duration, datetime, and interval values that are specified in the extended notation.

ANYDTDTE Informat (p. 279) Reads and extracts the date value from various date, time, and datetime forms.

ANYDTDTM Informat (p. 281)

Reads and extracts datetime values from various date, time, and datetime forms.

ANYDTTME Informat (p. 285)

Reads and extracts time values from various date, time, and datetime forms.

DATE Informat (p. 293) Reads date values in the form ddmmmyy or ddmmmyyyy.

DATETIME Informat (p. 295) Reads datetime values in the form ddmmmyy hh:mm:ss.ss or ddmmmyyyy hh:mm:ss.ss.

DDMMYY Informat (p. 296) Reads date values in the form ddmmyy<yy> or dd-mm-yy<yy>, where a special character, such as a hyphen (-), period (.), or slash (/), separates the day, month, and year; the year can be either 2 or 4 digits.

E8601DA Informat (p. 298) Reads date values that are specified using the ISO 8601 extended notation yyyy-mm-dd.

E8601DN Informat (p. 299) Reads date values that are specified using the ISO 8601 extended notation yyyy-mm-dd and returns SAS datetime values where the time portion of the value is 000000.

E8601DT Informat (p. 300) Reads datetime values that are specified using the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss.<ffffff>.

E8601DZ Informat (p. 302) Reads Coordinated Universal Time (UTC) datetime values that are specified using the ISO 8601 datetime extended notation yyyy-mm-ddThh:mm:ss+|–hh:mm.<fffff> or yyyy-mm-ddThh:mm:ss.<fffff>Z.

E8601TM Informat (p. 304) Reads time values that are specified using the ISO 8601 extended notation hh:mm:ss.<ffffff>.

E8601TZ Informat (p. 305) Reads time values that are specified using the ISO 8601 extended time notation hh:mm:ss+|–hh:mm.<ffffff> or hh:mm:ssZ.

HHMMSS Informat (p. 309) Reads hours, minutes, and seconds in the form hh:mm:ss or hhmmss.

256 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 263: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

JULIAN Informat (p. 315) Reads Julian dates in the form yyddd or yyyyddd.

MDYAMPM Informat (p. 316) Reads datetime values in the form mm-dd-yy<yy> hh:mm:ss.ss AM|PM, where a special character such as a hyphen (-), period (.), slash (/), or colon (:) separates the month, day, and year; the year can be either 2 or 4 digits.

MMDDYY Informat (p. 318) Reads date values in the form mmddyy or mmddyyyy.

MONYY Informat (p. 319) Reads month and year date values in the form mmmyy or mmmyyyy.

MSEC Informat (p. 321) Reads TIME MIC values.

PDTIME Informat (p. 325) Reads packed decimal time of SMF and RMF records.

RMFDUR Informat (p. 333) Reads duration intervals of RMF records.

RMFSTAMP Informat (p. 334) Reads time and date fields of RMF records.

SHRSTAMP Informat (p. 352) Reads date and time values of SHR records.

SMFSTAMP Informat (p. 353) Reads time and date values of SMF records.

TIME Informat (p. 354) Reads hours, minutes, and seconds in the form hh:mm:ss.ss, where special characters such as the colon (:) or the period (.) are used to separate the hours, minutes, and seconds.

TODSTAMP Informat (p. 356) Reads an eight-byte time-of-day stamp.

TU Informat (p. 358) Reads timer units.

YYMMDD Informat (p. 362) Reads date values in the form yymmdd or yyyymmdd.

YYMMN Informat (p. 364) Reads date values in the form yyyymm or yymm.

YYQ Informat (p. 365) Reads quarters of the year in the form yyQq or yyyyQq.

ISO 8601 $N8601B Informat (p. 268) Reads complete, truncated, and omitted forms of ISO 8601 duration, datetime, and interval values that are specified in either the basic or extended notations.

$N8601E Informat (p. 270) Reads ISO 8601 duration, datetime, and interval values that are specified in the extended notation.

E8601DA Informat (p. 298) Reads date values that are specified using the ISO 8601 extended notation yyyy-mm-dd.

E8601DN Informat (p. 299) Reads date values that are specified using the ISO 8601 extended notation yyyy-mm-dd and returns SAS datetime values where the time portion of the value is 000000.

Informats by Category 257

Page 264: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

E8601DT Informat (p. 300) Reads datetime values that are specified using the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss.<ffffff>.

E8601DZ Informat (p. 302) Reads Coordinated Universal Time (UTC) datetime values that are specified using the ISO 8601 datetime extended notation yyyy-mm-ddThh:mm:ss+|–hh:mm.<fffff> or yyyy-mm-ddThh:mm:ss.<fffff>Z.

E8601TM Informat (p. 304) Reads time values that are specified using the ISO 8601 extended notation hh:mm:ss.<ffffff>.

E8601TZ Informat (p. 305) Reads time values that are specified using the ISO 8601 extended time notation hh:mm:ss+|–hh:mm.<ffffff> or hh:mm:ssZ.

Numeric BINARY Informat (p. 287) Converts positive binary values to integers.

BITS Informat (p. 288) Extracts bits.

BZ Informat (p. 289) Converts blanks to 0s.

COMMA Informat (p. 291) Removes embedded characters.

COMMAX Informat (p. 292) Removes embedded periods, blanks, dollar signs, percent signs, hyphens, and closing parenthesis from the input data. An open parenthesis at the beginning of a field is converted to a minus sign. The COMMAX informat reverses the roles of the decimal point and the comma.

FLOAT Informat (p. 307) Reads a native single-precision, floating-point value and divides it by 10 raised to the dth power.

HEX Informat (p. 308) Converts hexadecimal positive binary values to either integer (fixed-point) or real (floating-point) binary values.

IB Informat (p. 311) Reads native integer binary (fixed-point) values, including negative values.

IBR Informat (p. 312) Reads integer binary (fixed-point) values in Intel and DEC formats.

IEEE Informat (p. 313) Reads an IEEE floating-point value and divides it by 10 raised to the d th power.

NUMX Informat (p. 322) Reads numeric values with a comma in place of the decimal point.

PD Informat (p. 323) Reads data that are stored in IBM packed decimal format.

PERCENT Informat (p. 326) Reads percentages as numeric values.

PIB Informat (p. 326) Reads positive integer binary (fixed-point) values.

PIBR Informat (p. 328) Reads positive integer binary (fixed-point) values in Intel and DEC formats.

258 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 265: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

PK Informat (p. 330) Reads unsigned packed decimal data.

RB Informat (p. 332) Reads numeric data that is stored in real binary (floating-point) notation.

S370FF Informat (p. 336) Reads EBCDIC numeric data.

S370FIB Informat (p. 337) Reads integer binary (fixed-point) values, including negative values, in IBM mainframe format.

S370FIBU Informat (p. 338) Reads unsigned integer binary (fixed-point) values in IBM mainframe format.

S370FPD Informat (p. 340) Reads packed data in IBM mainframe format.

S370FPDU Informat (p. 341) Reads unsigned packed decimal data in IBM mainframe format.

S370FPIB Informat (p. 342) Reads positive integer binary (fixed-point) values in IBM mainframe format.

S370FRB Informat (p. 344) Reads real binary (floating-point) data in IBM mainframe format.

S370FZD Informat (p. 345) Reads zoned decimal data in IBM mainframe format.

S370FZDB Informat (p. 346) Reads zoned decimal data in which zeros have been left blank.

S370FZDL Informat (p. 347) Reads zoned decimal leading-sign data in IBM mainframe format.

S370FZDS Informat (p. 349) Reads zoned decimal separate leading-sign data in IBM mainframe format.

S370FZDT Informat (p. 350) Reads zoned decimal separate trailing-sign data in IBM mainframe format.

S370FZDU Informat (p. 351) Reads unsigned zoned decimal data in IBM mainframe format.

TRAILSGN Informat (p. 357) Reads a trailing plus (+) or minus (–) sign.

VAXRB Informat (p. 359) Reads real binary (floating-point) data in VMS format.

VMSZN Informat (p. 359) Reads VMS and MicroFocus COBOL zoned numeric data.

w Informat (p. 361) Reads standard numeric data.

ZD Informat (p. 367) Reads zoned decimal data.

ZDB Informat (p. 368) Reads zoned decimal data in which zeros have been left blank.

ZDV Informat (p. 369) Reads and validates zoned decimal data.

Informats by Category 259

Page 266: ) Formats and Informats: Reference - go.documentation.sas.com

Dictionary

$ASCII InformatConverts ASCII character data to native format.

Category: Character

Syntax$ASCIIw.

Syntax Descriptionw

specifies the width of the input field.

Default 1 if the length of the variable is undefined. Otherwise, the default is the length of the variable.

Range 1–32767

DetailsIf ASCII is the native format, no conversion occurs.

Comparisons• On an IBM mainframe system, $ASCIIw. converts ASCII data to EBCDIC.

• On all other systems, $ASCIIw. behaves like the $CHARw. informat except that the default length is different.

Exampleinput @1 name $ascii3.;

Data Line Result *

----+----1 EBCDIC ASCII

abc 818283 616263

ABC C1C2C3 414243

(); 4D5D5E 28293B

* The results are hexadecimal representations of codes for characters. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one character value.

260 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 267: ) Formats and Informats: Reference - go.documentation.sas.com

$BASE64X InformatConverts ASCII text into character data by using Base 64 encoding.

Category: Character

Alignment: Left

Syntax$BASE64Xw.

Syntax Descriptionw

specifies the width of the input field.

Default 1

Range 1–32767

DetailsBase 64 is an industry encoding method whose encoded characters are determined by using a positional scheme that uses only ASCII characters. Several Base 64 encoding schemes have been defined by the industry for specific uses, such as email or content masking. SAS maps positions 0–61 to the characters A–Z, a–z, and 0–9. Position 62 maps to the character +, and position 63 maps to the character /.

Here are some uses of Base 64 encoding:

• embed binary data in an XML file

• encode passwords

• encode URLs

The '=' character in the encoded results indicates that the results have been padded with zero bits. In order for the encoded characters to be decoded, the '=' must be included in the value to be decoded.

Exampleinput @1 b64exmpl $base64x64.;

Data Line Result

RkNBMDFBNzk5M0JD FCA01A7993BC

TXlQYXNzd29yZA== MyPassword

d3d3Lm15ZG9tYWluLmNvbi9teWhpZGRlblVSTA== www.mydomain.com/myhiddenURL

$BASE64X Informat 261

Page 268: ) Formats and Informats: Reference - go.documentation.sas.com

See Also• The XMLDOUBLE option of the “LIBNAME Statement Syntax” in SAS Viya XML

LIBNAME Engine: User’s Guide

Formats:

• “$BASE64X Format” on page 37

$BINARY InformatConverts binary data to character data.

Category: Character

Syntax$BINARYw.

Syntax Descriptionw

specifies the width of the input field. Because eight bits of binary information represent one character, every eight characters of input that $BINARYw. reads becomes one character value stored in a variable.

If w< 8, $BINARYw. reads the data as w characters followed by 0s. Thus, $BINARY4. reads the characters 0101 as 01010000, which converts to an EBCDIC & or an ASCII P. If w> 8 but is not a multiple of 8, $BINARYw. reads up to the largest multiple of 8 that is less than w before converting the data.

Default 8

Range 1–32767

DetailsThe $BINARYw. informat does not interpret actual binary data, but it converts a string of characters that contains only 0s or 1s as if it is actual binary information. Therefore, use only the character digits 1 and 0 in the input, with no embedded blanks. $BINARYw. ignores leading and trailing blanks.

To read representations of binary codes for unprintable characters, enter an ASCII or EBCDIC equivalent for a particular character as a string of 0s and 1s. The $BINARYw. informat converts the string to its equivalent character value.

Comparisons• The BINARYw. informat reads eight characters of input that contain only 0s or 1s as

a binary representation of one byte of numeric data.

• The $HEXw. informat reads hexadecimal characters that represent the ASCII or EBCDIC equivalent of character data.

262 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 269: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleinput @1 name $binary16.;

Data Line Result

----+----1----+----2 ASCII EBCDIC

0100110001001101 LM <(

$CB InformatReads standard character data from column-binary files.

Category: Column Binary

Syntax$CBw.

Syntax Descriptionw

specifies the width of the input field.

Default none

Range 1–32767

DetailsColumn-binary data storage compresses data so that more than 80 items of data can be stored on a single “virtual” punch card.

The $CBw. informat reads standard character data from column-binary files, where each card column is represented in two bytes. The $CBw. informat translates the data into standard character codes. If the combinations are invalid punch codes, SAS returns blanks and sets the automatic variable _ERROR_ to 1.

Exampleinput @1 name $cb2.;

Data Line * Result

----+----1 EBCDIC ASCII

200A + N

* The data line is a hexadecimal representation of the column binary. The “virtual” punch card column for the example data has row 12, row 6, and row 8 punched. The binary representation is 0010 0000 0000 1010.

$CB Informat 263

Page 270: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

Informats:

• “CB Informat” on page 290

• “PUNCH Informat” on page 331

• “ROW Informat” on page 392

$CHAR InformatReads character data with blanks.

Category: Character

Syntax$CHARw.

Syntax Descriptionw

specifies the width of the input field.

Default 8 if the length of the variable is undefined. Otherwise, the default is the length of the variable

Range 1–32767

DetailsThe $CHARw. informat does not trim leading and trailing blanks or convert a single period in the input data field to a blank before storing values. If you use $CHARw. in an INFORMAT or ATTRIB statement within a DATA step to read list input, then by default SAS interprets any blank embedded within data as a field delimiter, including leading blanks.

Comparisons• The $CHARw. informat is almost identical to the $w. informat. However, $CHARw.

does not trim leading blanks or convert a single period in the input data field to a blank, while the $w. informat does.

• Use the table below to compare the SAS informat $CHAR8. with notation in other programming languages:

Language Character Notation

SAS $CHAR8.

IBM 370 assembler CL8

C char [8]

264 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 271: ) Formats and Informats: Reference - go.documentation.sas.com

Language Character Notation

COBOL PIC x(8)

Fortran A8

PL/I CHAR(8)

Exampleinput @1 name $char5.;

Data Line Result *

----+----1

XYZ XYZ##

XYZ #XYZ#

. ##.##

X YZ #X#YZ

* The character # represents a blank space.

$CHARZB InformatConverts binary 0s to blanks.

Category: Character

Syntax$CHARZBw.

Syntax Descriptionw

specifies the width of the input field.

Default 1 if the length of the variable is undefined. Otherwise, the default is the length of the variable.

Range 1–32767

$CHARZB Informat 265

Page 272: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe $CHARZBw. informat does not trim leading and trailing blanks in character data before it stores values.

ComparisonsThe $CHARZBw. informat is identical to the $CHARw. informat except that $CHARZBw. converts any byte that contains a binary 0 to a blank character.

Exampleinput @1 name $charzb5.;

Data Line * Result **

EBCDIC ASCII

E7E8E90000 58595A0000 XYZ##

00E7E8E900 0058595A00 #XYZ#

00E700E8E9 005800595A #X#YZ

* The data lines are hexadecimal representations of codes for characters. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one character.

** The character # represents a blank space.

$EBCDIC InformatConverts EBCDIC character data to native format.

Category: Character

Syntax$EBCDICw.

Syntax Descriptionw

specifies the width of the input field.

Default 1 if the length of the variable is undefined. Otherwise, the default is the length of the variable.

Range 1–32767

DetailsIf EBCDIC is the native format, no conversion occurs.

266 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 273: ) Formats and Informats: Reference - go.documentation.sas.com

Note: Anytime a text file originates from anywhere other than the local encoding environment, it might be necessary to specify the ENCODING= option on either ASCII or EBCDIC environments. When that you read an EBCDIC text file on an ASCII platform, it is recommended that you specify the ENCODING= option in the FILENAME or INFILE statement. However, if you use the DSD and the DLM= or DLMSTR= options in the FILENAME or INFILE statement, the ENCODING= option is a requirement because these options require certain characters in the session encoding (for example, quotation marks, commas, and blanks). The use of encoding-specific informats should be reserved for use with true binary files. That is, they contain both character and non-character fields.

Comparisons• On an IBM mainframe system, $EBCDICw. behaves like the $CHARw. informat.

• On all other systems, $EBCDICw. converts EBCDIC data to ASCII.

Exampleinput @1 name $ebcdic3.

Data Line Result *

----+----1 ASCII EBCDIC

qrs 717273 9899A2

QRS 515253 D8D9E2

+;> 2B3B3E 4E5E6E

* The results are hexadecimal representations of codes for characters. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one character value.

$HEX InformatConverts hexadecimal data to character data.

Category: Character

Syntax$HEXw.

Syntax Descriptionw

specifies the number of digits of hexadecimal data.

If w=1, $HEXw. pads a trailing hexadecimal 0. If w is an odd number that is greater than 1, then $HEXw. reads w–1 hexadecimal characters.

$HEX Informat 267

Page 274: ) Formats and Informats: Reference - go.documentation.sas.com

Default 2

Range 1–32767

DetailsThe $HEXw. informat converts every two digits of hexadecimal data into one byte of character data. Use $HEXw. to encode hexadecimal values into a character variable when your input method is limited to printable characters. SAS interprets values that are read with this informat as ASCII values.

ComparisonsThe HEXw. informat reads two digits of hexadecimal data at a time and converts them into one byte of numeric data.

Exampleinput @1 name $hex4.;

Data Line Result

----+----1 ASCII

6C6C ll

$N8601B InformatReads complete, truncated, and omitted forms of ISO 8601 duration, datetime, and interval values that are specified in either the basic or extended notations.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.4.4, complete representation

Syntax$N8601Bw.d

Syntax Descriptionw

specifies the width of the input field.

Default 50

Range 1–200

268 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 275: ) Formats and Informats: Reference - go.documentation.sas.com

Requirement The minimum length for a duration value or a datetime value is 16. The minimum length for an interval value is 16.

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Default 0

Range 0–3

DetailsThe $N8601B informat reads ISO 8601 duration, interval, and datetime values as character data for the following basic notations:

Time Component ISO 8601 Notation Example

Duration Pyyyy-mm-ddThh:mm:ss.fff P2012-09-15T15:53:00

PyyyymmddThhmmss P00020304T050607

PnYnMnDTnHnMn.fffS P2y10m14dT20h13m45.222s

PnW P6w

Interval yyyy-mm-ddThh:mm:ss.fff/yyyy-mm-ddThh:mm:ss.fff

2012-09-15T15:53:00/2014-11-13T00:00:00

yyyymmddThhmmss.fff/yyyymmddThhmmss.fff

20120915T155300/20141115T120000

PnYnMnDTnHnMn.fffS/yyyy-mm-ddThh:mm:ss.fff

P2y10M14dT20h13m45s/2012-09-15T15:53:00

yyyy-mm-ddThh:mm:ss.fff/PnYnMnDTnHnMn.fffS

2012-09-15T15:53:00/P2y10M14dT20h13m45s

Datetime yyyy-mm-ddThh:mm:ss.fff 2012-09-15T15:53:00

yyyymmddThhmmss.fff 20120915T155300

The $N8601B informat also reads ISO 8601 duration, interval, and datetime components that contain omitted or truncated components. Omitted components must use a single hyphen ( - ) to represent the component.

ComparisonsThe $N8601B informat reads durations, intervals, and datetimes that are specified in either the basic or extended notation.

$N8601B Informat 269

Page 276: ) Formats and Informats: Reference - go.documentation.sas.com

The $N8601E informat reads durations, intervals, and datetimes that are specified only in the extended notation. Use the $N8601E informat when you need to ensure compliance with the extended notation.

Exampleinput @1 i860 $n8601b.;

Data Line Result

p0002-04-05t5:1:12 0002405050112FFC

2012-09-15T15:53:00/2010-09-15T00:00:00 2012915155300FFD2010915000000FFD

p0033-01-04T3:2:55/2012-09-15T15:53:00 0033104030255FFC2012915155300FFD

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

$N8601E InformatReads ISO 8601 duration, datetime, and interval values that are specified in the extended notation.

Categories: Date and TimeISO 8601

Alignment: Left

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.4.4, complete representation

Syntax$N8601Ew.d

Syntax Descriptionw

specifies the width of the input field.

Default 50

Range 1–200

Requirement The minimum length for a duration value or a datetime value is 16. The minimum length for an interval value is 16.

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

270 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 277: ) Formats and Informats: Reference - go.documentation.sas.com

Default 0

Range 0–3

DetailsThe $N8601E informat reads ISO 8601 duration, interval, and datetime values that can be specified in the following extended notations:

Time Component ISO 8601 Notation Example

Duration Pyyyy-mm-ddThh:mm:ss.fff P2012-09-15T15:53:00

PnW P6w

Interval yyyy-mm-ddThh:mm:ss.fff/yyyy-mm-ddThh:mm:ss.fff

2012-09-15T15:53:00/2014-11-13T00:00:00

yyyy-mm-ddThh:mm:ss.fff/PnYnMnDTnHnMns.fffS

2012-09-15T15:53:00/P2Y10M14DT20H13M45S

Datetime yyyy-mm-ddThh:mm:ss.fff 2012-09-15T15:53:00

nspecifies a number that represents the number of years, months, or days.

Pis the character that is used to indicate that the duration that follows is specified by the number of years, months, days, hours, minutes, and seconds.

Wis the character that is used to designate that the duration is specified in weeks.

Tis the character that is used to designate that a time value follows. If all time values are 0, T is not required.

/in an interval, is used to separate the beginning and ending datetime values.

yyyyspecifies a four-digit year.

mmspecifies a two-digit month between 01 and 12.

ddspecifies a two-digit day between 01 and 31.

hhspecifies a two-digit hour between 00 and 23.

mmspecifies a two-digit minute between 00 and 59.

ssspecifies a two-digit second between 00 and 59.

$N8601E Informat 271

Page 278: ) Formats and Informats: Reference - go.documentation.sas.com

fffspecifies an optional fraction of a second with a precision of up to three digits, where each digit is between 0 and 9.

Yis the character that is used to designate years in a duration.

Mis the character that is used to designate months in a duration.

Dis the character that is used to designate days in a duration.

His the character that is used to designate hours in a duration.

Mis the character that is used to designate minutes in a duration.

Sis the character that is used to designate seconds in a duration.

ComparisonsThe $N8601E informat reads valid durations, intervals, and datetimes that are specified only in the extended notation.

The $N8601B informat reads valid durations, intervals, and datetimes that are specified in either the basic or extended notation.

Use the $N8601E informat when you need to ensure compliance with the extended notation.

Exampleinput @1 i860 $n8601e.;

Data Line Result

p0002-04-05t5:1:12s 0002405050112FFC

2012-09-15T15:53:00/2014-09-15T00:00:00 2012915155300FFD2014915000000FFD

p0033-01-04T3:2:55/2012-09-15T15:53:00 0033104030255FFC2012915155300FFD

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

$OCTAL InformatConverts octal data to character data.

Category: Character

272 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 279: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax$OCTALw.

Syntax Descriptionw

specifies the width of the input field in bits. Because one digit of octal data represents three bits of binary information, increment the value of w by three for every column of octal data that $OCTALw. reads.

Default 3

Range 1–32767

DetailsEight bits of binary data represent the code for one digit of character data. Therefore, you need at least three digits of octal data to represent one digit of character data, which includes an extra bit. $OCTALw. treats every three digits of octal data as one digit of character data, ignoring the extra bit.

Use $OCTALw. to read octal representations of binary codes for unprintable characters. Enter an ASCII or EBCDIC equivalent for a particular character in octal notation. Then use $OCTALw. to convert it to its equivalent character value.

Use only the digits 0 through 7 in the input, with no embedded blanks. $OCTALw. ignores leading and trailing blanks.

ComparisonsThe OCTALw. informat reads octal data and converts it to the numeric equivalents.

Exampleinput @1 name $octal9.;

Data Line Result

----+----1 EBCDIC ASCII

114 < L

$PHEX InformatConverts packed hexadecimal data to character data.

Category: Character

Syntax$PHEXw.

$PHEX Informat 273

Page 280: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the number of bytes in the input.

When you use $PHEXw. to read packed hexadecimal data, the length of the variable is the number of bytes that are required to store the resulting character value, not w. In general, a character variable whose length is implicitly defined with $PHEXw. has a length of 2w–1.

Default 2

Range 1–32767

DetailsPacked hexadecimal data are like packed decimal data, except that all hexadecimal characters are valid. In packed hexadecimal data, the value of the low-order nibble has no meaning. In packed decimal data, the value of the low-order nibble indicates the sign of the numeric value that the data represent. The $PHEXw. informat returns a character value and treats the value of the sign nibble as if it were X'F', regardless of its actual value.

ComparisonsThe PDw.d. informat reads packed decimal data and converts them to numeric data.

Exampleinput @1 devaddr $phex2.;

Data Line * Result

0001111000001111 1E0

* The data line represents two bytes of actual binary data, Each half-byte corresponds to a single hexadecimal character. The equivalent hexadecimal representation for the data line is 1E0F.

$QUOTE InformatRemoves matching quotation marks from character data.

Category: Character

Syntax$QUOTEw.

Syntax Descriptionw

specifies the width of the input field.

274 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 281: ) Formats and Informats: Reference - go.documentation.sas.com

Default 8 if the length of the variable is undefined. Otherwise, the default is the length of the variable.

Range 1–32767

Exampleinput @1 name $quote7.;

Data Line Result

----+----1

'SAS' SAS

"SAS" SAS

"SAS's" SAS's

$UPCASE InformatConverts character data to uppercase.

Category: Character

Syntax$UPCASEw.

Syntax Descriptionw

specifies the width of the input field.

Default 8 if the length of the variable is undefined. Otherwise, the default is the length of the variable.

Range 1–32767

DetailsSpecial characters, such as hyphens, are not altered.

Exampleinput @1 name $upcase3.;

$UPCASE Informat 275

Page 282: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Result

----+----1

sas SAS

$VARYING InformatReads character data of varying length.

Category: Character

Syntax$VARYINGw. length-variable

Syntax Descriptionw

specifies the maximum width of a character field for all the records in an input file.

Default 8 if the length of the variable is undefined. Otherwise, the default is the length of the variable.

Range 1–32767

length-variablespecifies a numeric variable that contains the width of the character field in the current record. SAS obtains the value of length-variable by reading it directly from a field that is described in an INPUT statement or by calculating its value in the DATA step.

Restriction Length-variable cannot be an array reference.

Requirement You must specify length-variable immediately after $VARYINGw. in an INPUT statement.

Tips If the value of length-variable is negative or missing, SAS reads no data from the corresponding record.

If the value of length-variable is 0, the value of the variable is a blank character. A value of 0 for length-variable enables you to read zero-length records and fields.

If a variable has been read using an informat other than the $VARYING. informat, and then the same data is read into the same variable that uses the $VARYING. informat where length-variable is 0, then the previous value is overwritten with a blank value.

If length-variable is greater than 0 but less than w, SAS reads the number of columns that are specified by length-variable. Then SAS

276 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 283: ) Formats and Informats: Reference - go.documentation.sas.com

pads the value with trailing blanks up to the maximum width that is assigned to the variable.

If length-variable is greater than or equal to w, SAS reads w columns.

DetailsUse $VARYINGw. when the length of a character value differs from record to record. After reading a data value with $VARYINGw., the pointer's position is set to the first column after the value.

Examples

Example 1: Obtaining a Current Record Length Directlyinput fwidth 1. name $varying9. fwidth;

Data Line Result *

----+----1

5shark shark

3sunfish sun

8bluefish bluefish

* Notice the result of reading the second data line.

Example 2: Obtaining a Record Length IndirectlyUse the LENGTH= option in the INFILE statement to obtain a record length indirectly. The input data lines and results follow the explanation of the SAS statements.

data one; infile file-specification length=reclen; input @; fwidth=reclen-9; input name $ 1-9 @10 class $varying20. fwidth;run;

The LENGTH= option in the INFILE statement assigns the internally stored record length to RECLEN when the first INPUT statement executes. The trailing @ holds the record for another INPUT statement. Next, the assignment statement calculates the value of the varying-length field by subtracting the fixed-length portion of the record from the total record length. The variable FWIDTH contains the length of the last field and becomes the length-variable argument to the $VARYING20. informat.

Data Line Result

----+----1----+----2

PATEL CHEMISTRY PATEL CHEMISTRY

$VARYING Informat 277

Page 284: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Result

JOHNSON GEOLOGY JOHNSON GEOLOGY

WILCOX ART WILCOX ART

$w InformatReads standard character data.

Category: Character

Alias: $Fw.

Syntax$w.

Syntax Descriptionw

specifies the width of the input field. You must specify w because SAS does not supply a default value.

Range 1–32767

DetailsThe $w. informat trims leading blanks and left aligns the values before storing the text. In addition, if a field contains only blanks and a single period, $w. converts the period to a blank because it interprets the period as a missing value. The $w. informat treats two or more periods in a field as character data.

ComparisonsThe $w. informat is almost identical to the $CHARw. informat. However, $CHARw. does not trim leading blanks nor does it convert a single period in an input field to a blank, while $w. does both.

Exampleinput @1 name $5.;

Data Line Result *

----+----1

XYZ XYZ##

XYZ XYZ##

278 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 285: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Result *

.

X YZ X#YZ#

* The character # represents a blank space.

ANYDTDTE InformatReads and extracts the date value from various date, time, and datetime forms.

Category: Date and Time

SyntaxANYDTDTEw.

Syntax Descriptionw

specifies the width of the input field.

Default 9

Range 5–32

DetailsThe ANYDTDTE informat reads input data that corresponds to any of the following informats or date, time, or datetime forms and extracts the date part from the derived value.

Informat or Form of Input Example Data

Informat or Form of Input Example Data

DATE 01JAN12

01JAN2012

MONYY JAN12

JAN2012

DATETIME 01JAN12 14:30:08

01JAN2012 14:30:08.5

TIME 14:30

14:30:08.05

DDMMYY 010112

01012012

YMDDTTM 12-01-01 11:23

JULIAN 12001

2012001

YYMMDD 120101

20120101

ANYDTDTE Informat 279

Page 286: ) Formats and Informats: Reference - go.documentation.sas.com

Informat or Form of Input Example Data

Informat or Form of Input Example Data

MDYAMPM 01-01-12 3:53 pm YYQ 12Q1

2012Q1

MMDDYY 010112

01012012

YY<YY>xMM * 12/01

2012-01

MMxYY<YY> * 01/12

01-2012

month-day-year January 1, 2012

* x is a special character that separates the month from the year.

If the input value is a time-only value, then SAS assumes a date of 01JAN1960.

It is possible for input data such as 01-02-03 or 01-02 to be ambiguous with respect to the month, day, and year. In this case, the DATESTYLE system option indicates the order of the month, day, and year.

Input data that contains colons is interpreted as time data. For example, 2013:12 is interpreted as 2013 hours and 12 minutes, not as the year 2013 and the month 12. The date result of reading a time value is zero.

ComparisonsThe ANYDTDTE informat extracts the date part from the derived value. The ANYDTDTM informat extracts the datetime part. The ANYDTTME informat extracts the time part.

Exampleinput dateinfo anydtdte21.;

Data Line Informat Form Result

Formatted with the DATEw. Format

----+----1----+----2

01JAN12 DATE 18993 01JAN12

01JAN2012 14:30:08.5 DATETIME 18993 01JAN12

01012012 DDMMYY 18993 01JAN12

2012001 JULIAN 18993 01JAN12

01/01/12 MMDDYY 18993 01JAN12

JAN2012 MONYY 18993 01JAN12

14:30 TIME 0 01JAN60

280 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 287: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Informat Form Result

Formatted with the DATEw. Format

20120101 YYMMDD 18993 01JAN12

12q1 YYQ 18993 01JAN12

January 1, 2012 none 18993 01JAN12

See Also

Informats:

• “ANYDTDTM Informat” on page 281

• “ANYDTTME Informat” on page 285

• “DATE Informat” on page 293

• “DATETIME Informat” on page 295

• “DDMMYY Informat” on page 296

• “JULIAN Informat” on page 315

• “MDYAMPM Informat” on page 316

• “MMDDYY Informat” on page 318

• “MONYY Informat” on page 319

• “TIME Informat” on page 354

• “YMDDTTM Informat” on page 400

• “YYMMDD Informat” on page 362

• “YYQ Informat” on page 365

ANYDTDTM InformatReads and extracts datetime values from various date, time, and datetime forms.

Category: Date and Time

Interaction: If an input datetime value contains a special character for formatting characters, and the character is not B, C, N, P, or S, the ANYDTDTMw. informat reads only the date portion of the input and the time is set to 0. For example, for a EN_US locale, an input value of '150501X1' results in 01MAY15:00:00:00.

SyntaxANYDTDTMw.

ANYDTDTM Informat 281

Page 288: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the input field.

Default 19

Range 1–32

DetailsThe ANYDTDTM informat reads data that is in the form of any of the following informats or date/time forms, and extracts the datetime part from the derived value:

Informat or Form of Input Example Data

DATE 01JAN12

01JAN2012

DATETIME 01JAN12 14:30:08

01JAN2012 14:30:08.5

DDMM<YY>YY ** *** 010112

01012012

JULIAN 12001

2012001

MMDD<YY>YY ** *** 010112

01012012

MMx<YY>YY * ** 01/12

01-2012

MDYAMPM *** 01/01/12 02:30:08 AM

01/01/2012 02:30:08 AM

MONYY JAN12

JAN2012

TIME 14.30

14:30:08.05

<YY>YYMMDD ** 120101

20120101

<YY>YYQ ** 12Q1

2012Q1

282 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 289: ) Formats and Informats: Reference - go.documentation.sas.com

Informat or Form of Input Example Data

<YY>YYxMM * ** 12/01

2012/01

month-day-year January 1, 2012

month-day-year hh:mm:ss January 1, 2012 12:00:00

* x is a special character that separates the month from the year.** <YY> indicates the century is optional.

*** IF the month and day values are ambiguous, the value for the DATESTYLE= system option is used to determine the order.

If the input value is a time-only value, then SAS assumes a date of 01JAN1960. If the input value is a date-only value , then SAS assumes a time of 12:00 midnight. Input time values must include hours and minutes. If any part of a date in the input value is missing in the input value, or if the hour and minutes in a time value are missing or out of range, then the value read is a SAS missing value.

The input values for the preceding informats are mutually exclusive except for MMDDYY, DDMMYY, or YYMMDD when two-digit years are used. It is possible for input data such as 01-02-03 or 01-02 to be ambiguous with respect to the month, day, and year. In this case, the DATESTYLE system option indicates the order of the month, day, and year.

The ANYDTTME informat uses the following rules when reading colons and periods in time values:

Use of Colons and Periods Example

a single colon in the value h:m indicates hours and minutes

14:30

two colons in the value h:m:s indicate hours, minutes, and seconds

14:30:08

a single period in the value m:s.ff, where ff is a fraction of a second, indicates that the number preceding the period is the number of seconds

2:39.66

multiple periods in the value indicate that the period is a delimiter for dates and the value is not a time value.

12.25.2012

ComparisonsThe ANYDTDTE informat extracts the date part from the derived value. The ANYDTDTM informat extracts the datetime part. The ANYDTTME informat extracts the time part.

Exampleinput dateinfo anydtdtm21.;

ANYDTDTM Informat 283

Page 290: ) Formats and Informats: Reference - go.documentation.sas.com

Data LineInformat or Form of Data Result

Formatted with DATETIMEw.d Format

----+----1----+----2

01JAN2012 DATE 1640995200 01JAN12:00:00:00

01JAN2012 14:30:08.5 DATETIME 1641047408.5 01JAN12:14:30:09

01012012 DDMMYY 1640995200 01JAN12:00:00:00

2012001 JULIAN 1546387200 01JAN12:00:00:00

01/01/12 MMDDYY 1546387200 01JAN12:00:00:00

01-12 MMxYY 1546387200 01JAN12:00:00:00

JAN2012 MONYY 1546387200 01JAN12:00:00:00

14:30 TIME 52200 01JAN60:14:30:00

20120101 YYMMDD 1546387200 01JAN12:00:00:00

12Q1 YYQ 1546387200 01JAN12:00:00:00

January 1, 2012 month-day-year 1546387200 01JAN12:00:00:00

See Also

Informats:

• “ANYDTDTE Informat” on page 279

• “ANYDTTME Informat” on page 285

• “DATE Informat” on page 293

• “DATETIME Informat” on page 295

• “DDMMYY Informat” on page 296

• “JULIAN Informat” on page 315

• “MMDDYY Informat” on page 318

• “MONYY Informat” on page 319

• “TIME Informat” on page 354

• “YYMMDD Informat” on page 362

• “YYQ Informat” on page 365

284 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 291: ) Formats and Informats: Reference - go.documentation.sas.com

ANYDTTME InformatReads and extracts time values from various date, time, and datetime forms.

Category: Date and Time

SyntaxANYDTTMEw.

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 1–32

DetailsThe ANYDTTME informat reads input data that corresponds to any of the following informats or forms.

Informat or Form of Input Example Data

Informat or Form of Input Example Data

DATE 01JAN12

01JAN2012

MONYY JAN12

JAN2012

DATETIME 01JAN12 14:30:08

01JAN2012 14:30:08.5

YYMMDD 120101

20120101

DDMMYY 010112

01012012

YYQ 12Q1

2012Q1

JULIAN 12001

2012001

YYQ 12Q1

2012Q1

MMDDYY 010112

01012012

month-day-year January 1, 2012 2012-01

If the input value is a time-only value, then SAS assumes a date of 01JAN1960. If the input value is a date value only, then SAS assumes a time of 12:00 midnight.

It is possible for input data such as 01-02-03 or 01-02 to be ambiguous with respect to the month, day, and year. In this case, the DATESTYLE system option indicates the order of the month, day, and year.

ANYDTTME Informat 285

Page 292: ) Formats and Informats: Reference - go.documentation.sas.com

The ANYDTTME informat uses the following rules when reading colons and periods in time values:

Use of Colons and Periods Example

a single colon in the value h:m indicates hours and minutes

14:30

two colons in the value h:m:s indicate hours, minutes, and seconds

14:30:08

a single period in the value m:s.ff, where ff is a fraction of a second, indicates that the number preceding the period is the number of seconds

2:39.66

multiple periods in the value indicate that the period is a delimiter for dates and the value is not a time value.

12.25.2012

ComparisonsThe ANYDTDTE informat extracts the date part from the derived value. The ANYDTDTM informat extracts the datetime part. The ANYDTTME informat extracts the time part.

Exampleinput dateinfo anydttme21.;

Data Line Informat Result

Formatted with the TIMEw.d Format

----+----1----+----2

01JAN12 DATE 0 00:00:00

01JAN2012 14:30:08.5 DATETIME 52208.5 14:30:09

010112 DDMMYY 0 00:00:00

2012001 JULIAN 0 00:00:00

01012012 MMDDYY 0 00:00:00

JAN2012 MONYY 0 00:00:00

14:30:08.5 TIME 52208.5 14:30:09

20120101 YYMMDD 0 00:00:00

286 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 293: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Informat Result

Formatted with the TIMEw.d Format

12Q1 YYQ 0 00:00:00

January 1, 2012 month-day-year 0 00:00:00

See Also

Informats:

• “ANYDTDTE Informat” on page 279

• “ANYDTDTM Informat” on page 281

• “DATE Informat” on page 293

• “DATETIME Informat” on page 295

• “DDMMYY Informat” on page 296

• “JULIAN Informat” on page 315

• “MMDDYY Informat” on page 318

• “MONYY Informat” on page 319

• “TIME Informat” on page 354

• “YYMMDD Informat” on page 362

• “YYQ Informat” on page 365

BINARY InformatConverts positive binary values to integers.

Category: Numeric

SyntaxBINARYw.d

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 1–64

dspecifies the power of 10 by which to divide the value. SAS uses the d value even if the data contain decimal points. This argument is optional.

BINARY Informat 287

Page 294: ) Formats and Informats: Reference - go.documentation.sas.com

Range 0–31

DetailsUse only the character digits 1 and 0 in the input, with no embedded blanks. BINARYw.d ignores leading and trailing blanks.

BINARYw.d cannot read negative values. It treats all input values as positive (unsigned).

Exampleinput @1 value binary8.1;

Data Line Result

----+----1

00001111 1.5

BITS InformatExtracts bits.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxBITSw.d

Syntax Descriptionw

specifies the number of bits to read.

Default 1

Range 1–64

dspecifies the zero-based offset.

Range 0–63

DetailsThe BITSw.d informat extracts particular bits from an input stream and assigns the numeric equivalent of the extracted bit string to a variable. Together, the w and d values specify the location of the string that you want to read.

288 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 295: ) Formats and Informats: Reference - go.documentation.sas.com

This informat is useful for extracting data from system records with many pieces of information packed into single bytes.

Exampleinput @1 value bits4.1;

Data Line Result *

----+----1----+

B 8

* The EBCDIC binary code for a capital B is 11000010, and the ASCII binary code is 01000010.

The input pointer moves to column 2 (d=1). Then the INPUT statement reads four bits (w=4), which is the bit string 1000, and stores the numeric value 8, which is equivalent to this binary combination.

BZ InformatConverts blanks to 0s.

Category: Numeric

SyntaxBZw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

Range 1–32

dspecifies the power of 10 by which to divide the value. If the data contain decimal points, the d value is ignored. This argument is optional.

Range 0–31

DetailsThe BZw.d informat reads numeric values, converts any trailing or embedded blanks to 0s, and ignores leading blanks.

The BZw.d informat can read numeric values that are located anywhere in the field. Blanks can precede or follow the numeric value, and a minus sign must precede negative values. The BZw.d informat ignores blanks between a minus sign and a numeric value in an input field.

BZ Informat 289

Page 296: ) Formats and Informats: Reference - go.documentation.sas.com

The BZw.d informat interprets a single period in a field as a 0. The informat interprets multiple periods or other nonnumeric characters in a field as a missing value.

To use BZw.d in a DATA step with list input, change the delimiter for list input with the DLM= or DLMSTR= option in the INFILE statement. By default, SAS interprets blanks between values in the data line as delimiters rather than 0s.

ComparisonsThe BZw.d informat converts trailing or embedded blanks to 0s. If you do not want to convert trailing blanks to 0s (for example, when reading values in E notation), use either the w.d informat or the Ew.d informat instead.

Exampleinput @1 x bz4.;

Data Line Result

----+----1

34 3400

-2 -200

-2 1 -201

CB InformatReads standard numeric values from column-binary files.

Category: Column Binary

SyntaxCBw.d

Syntax Descriptionw

specifies the width of the input field.

Range 1–32

dspecifies the power of 10 by which to divide the value. SAS uses the d value even if the data contain decimal points. This argument is optional.

DetailsColumn-binary data storage compresses data so that more than 80 items of data can be stored on a single “virtual” punch card.

290 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 297: ) Formats and Informats: Reference - go.documentation.sas.com

The CBw.d informat reads standard numeric values from column-binary files and translates the data into standard binary format.

SAS first stores each column of column-binary data that you read with CBw.d in two bytes and ignores the two high-order bits of each byte. If the punch codes are valid, then SAS stores the equivalent numeric value in the variable that you specify. If the combinations are not valid, then SAS assigns the variable a missing value and sets the automatic variable _ERROR_ to 1.

Example: Examplesinput @1 x cb8.;

Data Line * Result

----+----1

0009 9

* The data line is a hexadecimal representation of the column binary. The “virtual” punch card column for the example data has row 9 punched. The binary representation is 0000 0000 0000 1001.

See Also

Informats

• “$CB Informat” on page 263

• “PUNCH Informat” on page 331

• “ROW Informat” on page 392

COMMA InformatRemoves embedded characters.

Category: Numeric

Alias: DOLLARw.d

SyntaxCOMMAw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

Range 1–32

COMMA Informat 291

Page 298: ) Formats and Informats: Reference - go.documentation.sas.com

dspecifies the power of 10 by which to divide the value. If the data contain decimal points, the d value is ignored. This argument is optional.

Range 0–31

DetailsThe COMMAw.d informat reads numeric values and removes embedded commas, blanks, dollar signs, percent signs, hyphens, and close parentheses from the input data. The COMMAw.d informat converts an open parenthesis at the beginning of a field to a minus sign.

ComparisonsThe COMMAw.d informat operates like the COMMAXw.d informat, but it reverses the roles of the decimal point and the comma. This convention is common in European countries.

Exampleinput @1 x comma10.;

Data Line Result

----+----1----+

$1,000,000 1000000

(500) -500

COMMAX InformatRemoves embedded periods, blanks, dollar signs, percent signs, hyphens, and closing parenthesis from the input data. An open parenthesis at the beginning of a field is converted to a minus sign. The COMMAX informat reverses the roles of the decimal point and the comma.

Category: Numeric

Alias: DOLLARXw.d

SyntaxCOMMAXw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

292 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 299: ) Formats and Informats: Reference - go.documentation.sas.com

Range 1−32

dspecifies the power of 10 by which to divide the value. If the data contain a comma, which represents a decimal point, the d value is ignored. This argument is optional.

Range 0−31

DetailsThe COMMAXw.d informat reads numeric values and removes embedded periods, blanks, dollar signs, percent signs, hyphens, and close parentheses from the input data. The COMMAXw.d informat converts an open parenthesis at the beginning of a field to a minus sign.

ComparisonsThe COMMAXw.d informat operates like the COMMAw.d informat, but it reverses the roles of the decimal point and the comma. This convention is common in European countries.

Exampleinput @1 x commax10.;

Data Line Result

----+----1----+

$1.000.000 1000000

1.234,56 1234.56

(500) -500

DATE InformatReads date values in the form ddmmmyy or ddmmmyyyy.

Category: Date and Time

SyntaxDATEw.

Syntax Descriptionw

specifies the width of the input field.

DATE Informat 293

Page 300: ) Formats and Informats: Reference - go.documentation.sas.com

Default 7

Range 7–32

Tip Use a width of 9 to read a 4–digit year.

DetailsThe date values must be in the form ddmmmyy or ddmmmyyyy:

ddis an integer between 01 and 31 that represents the day of the month.

mmmis the first three letters of the month name.

yy or yyyyis a two-digit or four-digit integer that represents the year.

You can separate the year, month, and day values by blanks or by special characters. Make sure the width of the input field allows space for blanks and special characters.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

Exampleinput calendar_date date11.;

Data Line Result

----+----1----+

16mar12 19068

16 mar 12 19068

16-mar-2012 19068

See Also

Formats:

• “DATE Format” on page 141

Functions:

• “DATE Function” in SAS Viya Functions and CALL Routines: Reference

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

294 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 301: ) Formats and Informats: Reference - go.documentation.sas.com

DATETIME InformatReads datetime values in the form ddmmmyy hh:mm:ss.ss or ddmmmyyyy hh:mm:ss.ss.

Category: Date and Time

SyntaxDATETIMEw.

Syntax Descriptionw

specifies the width of the input field.

Default 18

Range 13–40

DetailsThe datetime values must be in the following form: ddmmmyy or ddmmmyyyy, followed by a blank or special character, followed by hh:mm:ss.ss (the time):

dd is an integer between 01 and 31 that represents the day of the month.

mmmis the first three letters of the month name.

yy or yyyyis a two-digit or four-digit integer that represents the year.

hh is an integer between 00 and 23 that represents hours.

mmis an integer between 00 and 59 that represents minutes.

ss.ssis the number of seconds ranging from 00–59 with the fraction of a second following the decimal point.

DATETIMEw. requires values for both the date and the time. However, the ss.ss portion is optional.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

Note: SAS can read time values with AM and PM in them.

ComparisonsThe DATETIMEw.d informat reads datetime values with optional separators in the form dd-mmm-yy<yy> hh:mm:ss.ss AM|PM, and the date and time can be separated by a special character.

DATETIME Informat 295

Page 302: ) Formats and Informats: Reference - go.documentation.sas.com

The MDYAMPMw.d in format reads datetime values with optional separators in the form mm-dd-yy<yy> hh:mm:ss.ss AM | PM, and requires a space between the date and the time.

The YMDDTTMw.d informat reads datetime values with required separators in the form <yy>yy-mm-dd/hh:mm:ss.ss.

Exampleinput date_and_time datetime20.;

Data Line Result

----+----1----+----2

16mar12:11:23:07.4 1647516187.4

16mar2012/11:23:07.4 1647516187.4

16mar2012/11:23 PM 1647559380.0

See Also

Formats:

• “DATE Format” on page 141

• “DATETIME Format” on page 56

• “TIME Format” on page 98

Functions:

• “DATETIME Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “DATE Informat” on page 293

• “MDYAMPM Informat” on page 316

• “TIME Informat” on page 354

• “YMDDTTM Informat” on page 400

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

DDMMYY InformatReads date values in the form ddmmyy<yy> or dd-mm-yy<yy>, where a special character, such as a hyphen (-), period (.), or slash (/), separates the day, month, and year; the year can be either 2 or 4 digits.

Category: Date and Time

296 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 303: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxDDMMYYw.

Syntax Descriptionw

specifies the width of the input field.

Default 6

Range 6–32

DetailsThe date values must be in the form ddmmyy<yy> or ddxmmxyy<yy>:

dd is an integer between 01 and 31 that represents the day of the month.

mmis an integer between 01 and 12 that represents the month.

yy or yyyy is a two-digit or four-digit integer that represents the year.

xis a separators that can be any special character or a blank.:

If you use separators, place them between all the values. Blanks can also be placed before and after the date. Make sure the width of the input field allows space for blanks and special characters.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

Exampleinput calendar_date ddmmyy10.;

Data Line Result

----+----1----+

160308 19068

16/03/08 19068

16-03-2008 19068

16 03 2008 19068

DDMMYY Informat 297

Page 304: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYY Format” on page 58

• “MMDDYY Format” on page 82

• “YYMMDD Format” on page 117

Functions:

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “DATE Informat” on page 293

• “MMDDYY Informat” on page 318

• “YYMMDD Informat” on page 362

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

E8601DA InformatReads date values that are specified using the ISO 8601 extended notation yyyy-mm-dd.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: IS8601DAw

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.2.1.1, complete representation

SyntaxE8601DAw.

Syntax Descriptionw

specifies the width of the input field.

Default 10

Requirement The width of the input field must be 10.

298 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 305: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe E8601DA informat reads date values that are specified in the ISO 8601 extended date notation yyyy-mm-dd:

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

Exampleinput eda e8601da.;

Data Line Result

----+----1

2012-09-15 19251

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

E8601DN InformatReads date values that are specified using the ISO 8601 extended notation yyyy-mm-dd and returns SAS datetime values where the time portion of the value is 000000.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: IS8601DNw

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.2.1.1, complete representation

SyntaxE8601DNw.

Syntax Descriptionw

specifies the width of the input field.

Default 10

E8601DN Informat 299

Page 306: ) Formats and Informats: Reference - go.documentation.sas.com

Requirement The width of the input field must be 10.

DetailsThe E8601DN informat reads date values that are specified using the ISO 8601 extended date notation yyyy-mm-dd and returns the date in a SAS datetime value:

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

Exampleinput edn e8601dn.;

Data Line Result

----+----1

2012-09-15 1663286400

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

E8601DT InformatReads datetime values that are specified using the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss.<ffffff>.

Categories: Date and TimeISO 8601

Alignment: Left

Aliases: E8601LXw.dIS8601DTw.d

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.4.1, complete representation

SyntaxE8601DTw.d

300 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 307: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the input field.

Default 19

Range 19–26

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Default 0

Range 0–6

DetailsThe E8601DT informat reads datetime values that are specified using the ISO 8601 extended datetime notation yyyy-mm-ddThh:mm:ss.<ffffff>:

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

Exampleinput @1 edt e8601dt.;

Data Line Result

----+----1----+----2----+----3

2012-09-15T15:53:00 1663343580

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

E8601DT Informat 301

Page 308: ) Formats and Informats: Reference - go.documentation.sas.com

E8601DX InformatAdjusts a Coordinated Universal Time (UTC) datetime value to the user local date and time. Then, reads the local date and time by using the ISO 8601 datetime and time zone extended notation yyyy-mm-ddThh:mm:ss+|-hh:mm.

See: The E8601DXw. informat uses the E8601DZw.d informat to read data. See “E8601DZ Informat” on page 302.

SyntaxE8601DXw.

E8601DZ InformatReads Coordinated Universal Time (UTC) datetime values that are specified using the ISO 8601 datetime extended notation yyyy-mm-ddThh:mm:ss+|–hh:mm.<fffff> or yyyy-mm-ddThh:mm:ss.<fffff>Z.

Categories: Date and TimeISO 8601

Alignment: Left

Aliases: E8601DXw.dIS8601DZw.d

Supports: ISO 8601 Element 5.4.1, complete representation

SyntaxE8601DZw.d

Syntax Descriptionw

specifies the width of the input field.

Default 26

Range 20–35

dspecifies the number of digits to the right of the decimal point in the value for the lowest-order component. This argument is optional.

Default 0

Range 0–6

302 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 309: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsUTC values specify a time and a time zone based on the zero meridian in Greenwich, England. The E8601DZ informat reads datetime values that contain UTC time offsets and that are specified in one of the following ISO 8601 extended datetime notations:

• yyyy-mm-ddThh:mm:ss.<ffffff>+|–hh:mm

• yyyy-mm-ddThh:mm:ss.<ffffff>Z

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 24.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

+|–hh:mmis an hour and minute signed offset from zero meridian time. Note that the offset must be +|–hh:mm (that is, + or – and five characters).

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +02:00 indicates a two-hour time difference to the east of the zero meridian, and –06:00 indicates a six-hour time difference to the west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

Zindicates that the time is UTC time at the zero meridian (Greenwich, England).

Example

Input Statement Data Line Result

----1----+----2----+----3

input edz e8601dz.; 2012-09-15T15:53:00Z 1663343580

input edz e8601dz28.2; 2012-09-15T15:53:00+03:00 1663332780

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

E8601DZ Informat 303

Page 310: ) Formats and Informats: Reference - go.documentation.sas.com

E8601TM InformatReads time values that are specified using the ISO 8601 extended notation hh:mm:ss.<ffffff>.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: IS8601TMw.d

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Elements 5.3.1.1 and 5.3.1.3, complete representation and representation of decimal fractions

SyntaxE8601TMw.d

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 8–15

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Default 0

Range 0–6

DetailsThe E8601TM informat reads time values that are specified using the ISO 8601 extended time notation hh:mm:ss.<ffffff>:

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

Example

304 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 311: ) Formats and Informats: Reference - go.documentation.sas.com

input @1 etm e8601tm.;

Data Line Result

----+----1

15:53:00 57180

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

E8601TZ InformatReads time values that are specified using the ISO 8601 extended time notation hh:mm:ss+|–hh:mm.<ffffff> or hh:mm:ssZ.

Categories: Date and TimeISO 8601

Alignment: Left

Aliases: E8601TXw.dIS8601TZw.d

Supports: ISO 8601 Element 5.3.1.1, complete representation

SyntaxE8601TZw.d

Syntax Descriptionw

specifies the width of the input field.

Default 14

Range 9−20

Requirement To read a time with the Z time zone indicator, the width of the input field must be 9 if data follows on the same line of data.

dspecifies the number of digits to the right of the decimal point in the value for the lowest-order component. This argument is optional.

Default 0

Range 0−6

E8601TZ Informat 305

Page 312: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsUTC time values specify a time and a time zone based on the zero meridian in Greenwich, England. The E8601TZ informat reads UTC time values that are specified in one of the following ISO 8601 extended notations:

• hh:mm:ss+|–hh:mm.<ffffff>

• hh:mm:ssZ

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

+|–hh:mmis an hour and minute signed offset from zero meridian. Note that the offset must be +|–hh:mm (that is, + or – and five characters).

Use the + for time zones east of the zero meridian, and use the – for time zones west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

Zindicates zero meridian or +00:00 UTC time.

When SAS reads a UTC time by using the E8601TZ informat and the adjusted time is greater than 24:00:00 or less than 00:00:00, SAS adjusts the value so that the time is between 00:00:00 and 24:00:00. For example, if SAS reads the UTC time 23:43:44–05:00 by using the E8601TZ informat, SAS adds five hours to the time so that the value is 28:43:44, and then makes the time adjustment. The value stored represents the time 04:43:44+00:00.

Exampleinput @1 etz e8601tz.;

Data Line Result

----+----1----+

23:43:44-05:00 17024

23:43:44Z 85424

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

306 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 313: ) Formats and Informats: Reference - go.documentation.sas.com

FLOAT InformatReads a native single-precision, floating-point value and divides it by 10 raised to the dth power.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxFLOATw.d

Syntax Descriptionw

specifies the width of the input field.

Requirement w must be 4.

dspecifies the power of 10 by which to divide the value. This argument is optional.

DetailsThe FLOATw.d informat is useful in operating environments where a float value is not the same as a truncated double.

On the IBM mainframe systems, a four-byte floating-point number is the same as a truncated eight-byte floating-point number. However, in operating environments that use the IEEE floating-point standard, such as the IBM PC-based operating environments and LINUX, a four-byte floating-point number is not the same as a truncated double. Therefore, the RB4. informat does not produce the same results as FLOAT4. Floating-point representations other than IEEE might have this same characteristic. Values read with FLOAT4. typically come from some other external program that is running in your operating environment.

ComparisonsThe following table compares the names of float notation in several programming languages:

Language Float Notation

SAS FLOAT4.

Fortran REAL*4

C float

IBM 370 ASM E

FLOAT Informat 307

Page 314: ) Formats and Informats: Reference - go.documentation.sas.com

Language Float Notation

PL/I FLOAT BIN(21)

Exampleinput x float4.;

Data Line * Result

----+----1----+----2

3F800000 1

* The data line is a hexadecimal representation of a binary number that is stored in IEEE form.

HEX InformatConverts hexadecimal positive binary values to either integer (fixed-point) or real (floating-point) binary values.

Category: Numeric

SyntaxHEXw.

Syntax Descriptionw

specifies the field width of the input value and also specifies whether the final value is fixed-point or floating-point.

If w<16, HEXw. converts the input value to positive integer binary values, treating all input values as positive (unsigned). If w is 16, HEXw. converts the input value to real binary (floating-point) values, including negative values.

Default 8

Range 1–16

DetailsThe HEXw. informat converts the hexadecimal representation of positive binary numbers to real floating-point binary values. The width value of the HEXw. informat determines whether the input represents an integer (fixed-point) or real (floating-point) binary number. When you specify a width of 1 through 15, the informat interprets the input hexadecimal as an integer binary number. When you specify 16 for the width value, the informat interprets the input hexadecimal as a floating-point value.

The HEXw. informat ignores leading or trailing blanks.

308 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 315: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleinput @1 x hex3. @5 y hex16.;

Data Line Result

----+----1----+----2

88F 4014800000000000 2191 5.125

HHMMSS InformatReads hours, minutes, and seconds in the form hh:mm:ss or hhmmss.

Category: Date and Time

SyntaxHHMMSSw.

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 1–20

DetailsThe HHMMSSw. informat reads SAS time values in one of the following forms:

• hh:mm:ss

• hhmmss

hhis an integer that represents the number of hours.

:represents a special character that separates hours, minutes, and seconds.

mmis an integer that represents the number of minutes.

ssis an integer that represents the number of seconds. Fractional seconds are ignored.

If the input data is six digits, SAS reads the data from left to right as hours, minutes, and seconds. For data that is less than six digits, SAS follows these rules:

• If the number has an odd number of digits, SAS pads a zero to the left of the first digit. Then SAS pads after the last digit to the right with zeros until there are six digits.

HHMMSS Informat 309

Page 316: ) Formats and Informats: Reference - go.documentation.sas.com

• If the number has an even number of digits, SAS pads zeros to the right of the last digit until there are six digits.

The first two digits are read as hours. Digits three and four are read as minutes. Digits five and six are read as seconds.

1 is the same as 010000 or 1:00:00.02 is the same as 020000 or 2:00:00.124 is the same as 0124000 or 1:24:00.1435 is the same as 143500 or 14:35:00.20345 is the same as 020345 or 2:03:45.165532 is the same as 16:55:32.

When there are more than six digits, SAS reads the last two digits from the right as seconds. SAS reads the third and forth digits from the right as minutes. SAS reads the remaining digits to the left of the minutes as hours.

2358444 is the same as 235:84:44.12545533 is the same as 1254:55:33.

If the input data has only one colon (for example, 17:35), SAS reads the two digits before the colon as hours. SAS reads the two digits after the colon as seconds. The number of seconds is 0.

If a colon is omitted between minutes and seconds, as in 12:3400, SAS reads the 3400 as 3400 minutes. 3400 minutes adds 56 hours and 40 minutes to the 12 hours, resulting in 68:40:00.

Exampleinput tm hhmmss.;

Data Line Result Formatted with TIMEw.

23 82800 23:00:00

12:45:44 45344 12:45:44

2358444 851084 236:24:44

17:35 63300 17:35:00

12:3400 247200 68:40:00

See Also

Informats:

• “TIME Informat” on page 354

310 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 317: ) Formats and Informats: Reference - go.documentation.sas.com

IB InformatReads native integer binary (fixed-point) values, including negative values.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

See:

SyntaxIBw.d

Syntax Descriptionw

specifies the width of the input field.

Default 4

Range 1–8

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–10

DetailsThe IBw.d informat reads integer binary (fixed-point) values, including negative values represented in two's complement notation. IBw.d reads integer binary values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

Note: Different operating environments store integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 237 .

ComparisonsThe IBw.d and PIBw.d informats are used to read native format integers. (Native format enables you to read and write values created in the same operating environment.) The IBRw.d and PIBRw.d informats are used to read little endian integers in any operating environment.

To view a table that shows the type of informat to use with big endian and little endian integers, see “Reading Data Generated on Big Endian or Little Endian Platforms” on page 238.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

IB Informat 311

Page 318: ) Formats and Informats: Reference - go.documentation.sas.com

ExampleYou can use the INPUT statement and specify the IB informat. However, these examples use the informat with the INPUT function, where binary input values are described using a hexadecimal literal.

x=input('0080'x,ib2.);y=input('8000'x,ib2.);

SAS StatementResult on Big Endian Platforms

Result on Little Endian Platforms

put x=; 128 -32768

put y=; -32768 128

See Also

Informats:

• “IBR Informat” on page 312

IBR InformatReads integer binary (fixed-point) values in Intel and DEC formats.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxIBRw.d

Syntax Descriptionw

specifies the width of the input field.

Default 4

Range 1–8

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–10

312 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 319: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe IBRw.d informat reads integer binary (fixed-point) values, including negative values that are represented in two's complement notation. IBRw.d reads integer binary values that are generated by and for Intel and DEC platforms. Use IBRw.d to read integer binary data from Intel or DEC environments in other operating environments. The IBRw.d informat in SAS code allows for a portable implementation for reading the data in any operating environment.

Note: Different operating environments store integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 237 .

ComparisonsThe IBw.d and PIBw.d informats are used to read native format integers. (Native format enables you to read and write values that are created in the same operating environment.) The IBRw.d and PIBRw.d informats are used to read little endian integers in any operating environment.

On Intel and DEC operating environments, the IBw.d and IBRw.d informats are equivalent.

To view a table that shows the type of informat to use with big endian and little endian integers, see “Reading Data Generated on Big Endian or Little Endian Platforms” on page 238.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

ExampleYou can use the INPUT statement and specify the IBR informat. However, in these examples that we use the informat with the INPUT function, where binary input values are described using a hexadecimal literal.

x=input('0100'x,ibr2.);y=input('0001'x,ibr2.);

SAS Statement Result on BigEndian PlatformsResult on LittleEndian Platforms

put x=;put y=;

1256

1256

See Also

Informats:

• “IB Informat” on page 311

IEEE InformatReads an IEEE floating-point value and divides it by 10 raised to the d th power.

IEEE Informat 313

Page 320: ) Formats and Informats: Reference - go.documentation.sas.com

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxIEEEw.d

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 2–8

Tip If w is 8, an IEEE double-precision, floating-point number is read. If w is 5, 6, or 7, an IEEE double-precision, floating-point number is read, which assumes truncation of the appropriate number of bytes. If w is 4, an IEEE single-precision, floating-point number is read. If w is 3, an IEEE single-precision, floating-point number is read, which assumes truncation of one byte.

dspecifies the power of 10 by which to divide the value.

DetailsThe IEEEw.d informat is useful in operating environments where IEEE is the floating-point representation that is used. In addition, you can use the IEEEw.d informat to read files that are created by programs on operating environments that use the IEEE floating-point representation.

Typically, programs generate IEEE values in single precision (4 bytes) or double precision (8 bytes). Truncation is performed by programs solely to save space on output files. Machine instructions require that the floating-point number be of one of the two lengths. The IEEEw.d informat allows other lengths, which enables you to read data from files that contain space-saving truncated data.

Exampleinput test1 ieee4.; input test2 ieee5.;

Data Line * Result

----+----1----+

3F800000 1

3FF0000000 1

* The data lines are hexadecimal representations of binary numbers that are stored in IEEE format.

314 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 321: ) Formats and Informats: Reference - go.documentation.sas.com

The first INPUT statement reads the first data line, and the second INPUT statement reads the next data line.

JULIAN InformatReads Julian dates in the form yyddd or yyyyddd.

Category: Date and Time

SyntaxJULIANw.

Syntax Descriptionw

specifies the width of the input field.

Default 5

Range 5–32

DetailsThe date values must be in one of the following forms:

• yyddd

• yyyyddd

yy or yyyy is a two-digit or four-digit integer that represents the year.

dd or ddd is an integer from 01–365 that represents the day of the year.

Julian dates consist of strings of contiguous numbers, which means that zeros must pad any space between the year and the day values.

Julian dates that contain year values before 1582 are invalid for the conversion to Gregorian dates.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

Exampleinput julian_date julian7.;

Data Line Result *

----+----1

12076 19068

JULIAN Informat 315

Page 322: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Result *

2012076 19068

* The input values correspond to the 76th day of 2012, which is March 16.

See Also

Formats:

• “JULIAN Format” on page 80

Functions:

• “DATEJUL Function” in SAS Viya Functions and CALL Routines: Reference

• “JULDATE Function” in SAS Viya Functions and CALL Routines: Reference

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

MDYAMPM InformatReads datetime values in the form mm-dd-yy<yy> hh:mm:ss.ss AM|PM, where a special character such as a hyphen (-), period (.), slash (/), or colon (:) separates the month, day, and year; the year can be either 2 or 4 digits.

Category: Date and Time

Alignment: Right

Requirement: A space must separate the date and the time.

Note: The default time period is AM.

SyntaxMDYAMPMw.d

Syntax Descriptionw

specifies the width of the output field.

Default 19

Range 8–40

dspecifies the number of digits to the right of the decimal point in the seconds value. The digits to the right of the decimal point specify a fraction of a second. This argument is optional.

Default 0

316 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 323: ) Formats and Informats: Reference - go.documentation.sas.com

Range 0–39

DetailsThe MDYAMPMw.d format reads SAS datetime values in the form mm-dd-yy<yy> hh:mm<:ss<.ss>> <AM | PM>:

mmis an integer between 01 and 12 that represents the month.

ddis an integer between 01 and 31 that represents the day of the month.

yy or yyyyspecifies a two-digit or four-digit integer that represents the year.

hhis an integer between 00 and 23 that represents hours.

mmis an integer between 00 and 59 that represents minutes.

ss.ssis the number of seconds that range from 00–59 with the fraction of a second following the decimal point.

Requirement: If a fraction of a second is specified, the decimal point can be represented only by a period and is required.

AM | PMspecifies either the time period 00:01–12:00 noon (AM) or the time period 12:01–12:00 midnight ( PM)

- or :represents one of several special characters, such as the slash (/), hyphen (-), colon (:), or a blank character that can be used to separate date and time components. Special characters can be used as separators between any date or time component and between the date and the time.

ComparisonsThe MDYAMPMw.d informat reads datetime values with optional separators in the form mm-dd-yy<yy> hh:mm:ss.ss AM | PM, and requires a space between the date and the time.

The DATETIMEw.d informat reads datetime values with optional separators in the form dd-mmm-yy<yy> hh:mm:ss.ss AM|PM, and the date and time can be separated by a special character.

The YMDDTTMw.d informat reads datetime values with required separators in the form <yy>yy-mm-dd/hh:mm:ss.ss.

Exampleinput @1 dt mdyampm25.2.;

Data Line Result

09.15.2012 03:53:00 pm 1663343580

MDYAMPM Informat 317

Page 324: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Result

09-15-12 3.53 pm 1663343580

See Also

Informats:

• “DATETIME Informat” on page 295

• “YMDDTTM Informat” on page 400

MMDDYY InformatReads date values in the form mmddyy or mmddyyyy.

Category: Date and Time

SyntaxMMDDYYw.

Syntax Descriptionw

specifies the width of the input field.

Default 6

Range 6–32

DetailsThe date values must be in one of the following forms:

• mmddyy

• mmddyyyy

mmis an integer between 01 and 12 that represents the month.

ddis an integer between 01 and 31 that represents the day of the month.

yy or yyyyis a two-digit or four-digit integer that represents the year.

You can separate the month, day, and year fields by blanks or by special characters. However, if you use delimiters, place them between all fields in the value. Blanks can also be placed before and after the date.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

318 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 325: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleinput calendar_date mmddyy8.;

Data Line Result

----+----1----+

031612 19068

03/16/12 19068

03 16 12 19068

03162012 19068

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYY Format” on page 58

• “MMDDYY Format” on page 82

• “YYMMDD Format” on page 117

Functions:

• “DAY Function” in SAS Viya Functions and CALL Routines: Reference

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

• “MONTH Function” in SAS Viya Functions and CALL Routines: Reference

• “YEAR Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “DATE Informat” on page 293

• “DDMMYY Informat” on page 296

• “YYMMDD Informat” on page 362

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

MONYY InformatReads month and year date values in the form mmmyy or mmmyyyy.

Category: Date and Time

MONYY Informat 319

Page 326: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxMONYYw.

Syntax Descriptionw

specifies the width of the input field.

Default 5

Range 5–32

DetailsThe date values must be in one of the following forms:

• mmmyy

• mmmyyyy

mmmis the first three letters of the month name.

yy or yyyyis a two-digit or four-digit integer that represents the year.

A value read with the MONYYw. informat results in a SAS date value that corresponds to the first day of the specified month.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

Exampleinput month_and_year monyy7.;

Data Line Result

----+----1

mar 12 19053

mar2012 19053

See Also

Formats:

• “DDMMYY Format” on page 58

• “MMDDYY Format” on page 82

• “MONYY Format” on page 92

• “YYMMDD Format” on page 117

Functions:

320 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 327: ) Formats and Informats: Reference - go.documentation.sas.com

• “MONTH Function” in SAS Viya Functions and CALL Routines: Reference

• “YEAR Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “DDMMYY Informat” on page 296

• “MMDDYY Informat” on page 318

• “YYMMDD Informat” on page 362

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

MSEC InformatReads TIME MIC values.

Category: Date and Time

SyntaxMSECw.

Syntax Descriptionw

specifies the width of the input field.

Requirement w must be 8 because the OS TIME macro or the STCK System/370 instruction on IBM mainframes each return an eight-byte value.

DetailsThe MSECw. informat reads time values that are produced by IBM mainframe operating environments and converts the time values to SAS time values.

Use the MSECw. informat to find the difference between two IBM mainframe TIME values, with precision to the nearest microsecond.

ComparisonsThe MSECw. and TODSTAMPw. informats both read IBM time-of-day clock values, but the MSECw. informat assigns a time value to a variable, and the TODSTAMPw. informat assigns a datetime value.

Exampleinput btime msec8.;

MSEC Informat 321

Page 328: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line * Result

0000EA044E65A000 62818.412122

* The data line is a hexadecimal representation of a binary 8-byte time-of-day clock value. Each byte occupies one column of the input field. The result is a SAS time value corresponding to 5:26:58.41 p.m.

See Also

Informats:

• “TODSTAMP Informat” on page 356

NUMX InformatReads numeric values with a comma in place of the decimal point.

Category: Numeric

SyntaxNUMXw.d

Syntax Descriptionw

specifies the width of the input field.

Default 12

Range 1–32

dspecifies the number of digits to the right of the decimal. If the data contain decimal points, the d value is ignored. This argument is optional.

Range 0–31

DetailsThe NUMXw.d informat reads numeric values and interprets a comma as a decimal point.

ComparisonsThe NUMXw.d informat is similar to the w.d informat except that it reads numeric values that contain a comma in place of the decimal point.

Exampleinput @1 x numx10.;

322 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 329: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Result

----+----1----+

896,48 896.48

3064,1 3064.1

6489 6489

See Also

Formats:

• “NUMX Format” on page 189

• “w Format” on page 105

PD InformatReads data that are stored in IBM packed decimal format.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxPDw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

Range 1–16

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–10

DetailsThe PDw.d informat is useful because many programs write data in packed decimal format for storage efficiency, fitting two digits into each byte and using only a half byte for a sign.

PD Informat 323

Page 330: ) Formats and Informats: Reference - go.documentation.sas.com

Note: Different operating environments store packed decimal values in different ways. However, PDw.d reads packed decimal values with consistent results if the values are created on the same type of operating environment that you use to run SAS.

The PDw.d format writes missing numerical data as -0. When the PDw.d informat reads -0, it stores it as 0.

ComparisonsThe following table compares packed decimal notation in several programming languages:

Language Notation

SAS PD4.

COBOL COMP-3 PIC S9(7)

IBM 370 Assembler PL4

PL/I FIXED DEC

Examples

Example 1: Reading Packed Decimal Datainput @1 x pd4.;

Data Line * Result

----+----1

0000128C 128

* The data line is a hexadecimal representation of a binary number stored in packed decimal form. Each byte occupies one column of the input field.

Example 2: Creating a SAS Date with Packed Decimal Datainput x: $hex10.;mnth=input(x, pd5.); date=input(put(mnth,8.),mmddyy6.);

Data Line * Result

----+----1

012252010C 18621

* The data line is a hexadecimal representation of a binary number that is stored in packed decimal form on an IBM mainframe operating environment. Each byte occupies one column of the input field. The result is a SAS date value that corresponds to December 25, 2010.

324 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 331: ) Formats and Informats: Reference - go.documentation.sas.com

PDTIME InformatReads packed decimal time of SMF and RMF records.

Category: Date and Time

SyntaxPDTIMEw.

Syntax Descriptionw

specifies the width of the input field.

Requirement w must be 4 because packed decimal time values in RMF and SMF records contain four bytes of information.

DetailsThe PDTIMEw. informat reads packed decimal time values that are contained in SMF and RMF records that are produced by IBM mainframe systems and converts the values to SAS time values.

The general form of a packed decimal time value in hexadecimal notation is 0hhmmssF:

0is a half byte that contains all 0s.

hhis one byte that represents two digits that correspond to hours.

mmis one byte that represents two digits that correspond to minutes.

ssis one byte that represents two digits that correspond to seconds.

Fis a half byte that contains all 1s.

If a field contains all 0s, PDTIMEw. treats it as a missing value.

PDTIMEw. enables you to read packed decimal time values from files that are created on an IBM mainframe on any operating environment.

Exampleinput begin pdtime4.;

Data Line * Result

0142225F 51745

* The data line is a hexadecimal representation of a binary time value that is stored in packed decimal form. Each byte occupies one column of the input field. The result is a SAS time value that corresponds to 2:22.25 p.m.

PDTIME Informat 325

Page 332: ) Formats and Informats: Reference - go.documentation.sas.com

PERCENT InformatReads percentages as numeric values.

Category: Numeric

SyntaxPERCENTw.d

Syntax Descriptionw

specifies the width of the input field.

Default 6

Range 1–32

dspecifies the power of 10 by which to divide the value. If the data contain decimal points, the d value is ignored. This argument is optional.

Range 0–31

DetailsThe PERCENTw.d informat converts the numeric portion of the input data to a number using the same method as the COMMAw.d informat. If a percent sign (%) follows the number in the input field, PERCENTw.d divides the number by 100.

Exampleinput @1 x percent3. @4 y percent5.;

Data Line Result

----+----1

1% (20%) 0.01 -0.2

PIB InformatReads positive integer binary (fixed-point) values.

Category: Numeric

326 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 333: ) Formats and Informats: Reference - go.documentation.sas.com

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxPIBw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

Range 1–8

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–10

DetailsAll values are treated as positive. PIBw.d reads positive integer binary values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

Note: Different operating environments store positive integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 237 .

Comparisons• Positive integer binary values are the same as integer binary values except that the

sign bit is part of the value, which is always a positive integer. The PIBw.d informat treats all values as positive and includes the sign bit as part of the value.

• The PIBw.d informat with a width of 1 results in a value that corresponds to the binary equivalent of the contents of a byte. The binary equivalent of the contents of a byte is useful if your data contain values between hexadecimal 80 and hexadecimal FF, where the high-order bit can be misinterpreted as a negative sign.

• The IBw.d and PIBw.d informats are used to read native format integers. (Native format enables you to read and write values that are created in the same operating environment.) The IBRw.d and PIBRw.d informats are used to read little endian integers in any operating environment.

To view a table that shows the type of informat to use with big endian and little endian integers, see “Reading Data Generated on Big Endian or Little Endian Platforms” on page 238.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

PIB Informat 327

Page 334: ) Formats and Informats: Reference - go.documentation.sas.com

ExampleYou can use the INPUT statement and specify the PIB informat. However, in these examples, we use the informat with the INPUT function, where binary input values are described by using a hexadecimal literal.

x=input('0100'x,pib2.);y=input('0001'x,pib2.);

SAS StatementResult on Big Endian Platforms

Result on Little Endian Platforms

put x=;put y=;

2561

1256

See Also

Informats:

• “PIBR Informat” on page 328

PIBR InformatReads positive integer binary (fixed-point) values in Intel and DEC formats.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxPIBRw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

Range 1–8

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–10

DetailsAll values are treated as positive. PIBRw.d reads positive integer binary values that have been generated by and for Intel and DEC operating environments. Use PIBRw.d to read positive integer binary data from Intel or DEC environments on other operating

328 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 335: ) Formats and Informats: Reference - go.documentation.sas.com

environments. The PIBRw.d informat in SAS code allows for a portable implementation for reading the data in any operating environment.

Note: Different operating environments store positive integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 237 .

Comparisons• Positive integer binary values are the same as integer binary values except that the

sign bit is part of the value, which is always a positive integer. The PIBRw.d informat treats all values as positive and includes the sign bit as part of the value.

• The PIBRw.d informat with a width of 1 results in a value that corresponds to the binary equivalent of the contents of a byte. This is useful if your data contain values between hexadecimal 80 and hexadecimal FF, where the high-order bit can be misinterpreted as a negative sign.

• On Intel and DEC platforms, the PIBw.d and PIBRw.d informats are equivalent.

• The IBw.d and PIBw.d informats are used to read native format integers. (Native format enables you to read and write values that are created in the same operating environment.) The IBRw.d and PIBRw.d informats are used to read little endian integers in any operating environment.

To view a table that shows the type of informat to use with big endian and little endian integers, see “Reading Data Generated on Big Endian or Little Endian Platforms” on page 238.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

ExampleYou can use the INPUT statement and specify the PIBR informat. However, these examples use the informat with the INPUT function, where binary input values are described using a hexadecimal literal.

x=input('0100'x,pibr2.); y=input('0001'x,pibr2.);

SAS StatementResult on Big Endian Platforms

Result on Little Endian Platforms

put x=;put y=;

1256

1256

See Also

Informat

• “PIB Informat” on page 326

PIBR Informat 329

Page 336: ) Formats and Informats: Reference - go.documentation.sas.com

PK InformatReads unsigned packed decimal data.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxPKw.d

Syntax Descriptionw

specifies the number of bytes of unsigned packed decimal data, each of which contains two digits.

Default 1

Range 1–16

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–10

DetailsEach byte of unsigned packed decimal data contains two digits.

ComparisonsThe PKw.d informat is the same as the PDw.d informat, except that PKw.d treats the sign half of the field's last byte as part of the value, not as the sign of the value.

Exampleinput @1 x pk3.;

Data Line * Result

----+----1

001234 1234

* The data line is a hexadecimal representation of a binary number stored in unsigned packed decimal form. Each byte occupies one column of the input field.

330 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 337: ) Formats and Informats: Reference - go.documentation.sas.com

PUNCH InformatReads whether a row of column-binary data is punched.

Category: Column Binary

SyntaxPUNCH.d

Syntax Descriptiond

specifies which row in a card column to read.

Range 1–12

DetailsColumn-binary data storage compresses data so that more than 80 items of data can be stored on a single “virtual” punch card.

This informat assigns the value 1 to the variable if row d of the current card column is punched, or 0 if row d of the current card column is not punched. After PUNCH.d reads a field, the pointer does not advance to the next column.

Example

Data Line * SAS Statement Result

12-7-8 input x punch.12 1

input x punch.11 0

input x punch0.7 1

* The data line is “virtual” punched card code. The punch card column for the example data has row 12, row 7, and row 8 punched.

See Also

Informats:

• “$CB Informat” on page 263

• “CB Informat” on page 290

• “ROW Informat” on page 392

PUNCH Informat 331

Page 338: ) Formats and Informats: Reference - go.documentation.sas.com

RB InformatReads numeric data that is stored in real binary (floating-point) notation.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxRBw.d

Syntax Descriptionw

specifies the width of the input field.

Default 4

Range 2–8

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–10

DetailsNote: Different operating environments store real binary values in different ways.

However, the RBw.d informat reads real binary values with consistent results if the values are created on the same type of operating environment that you use to run SAS.

ComparisonsThe following table compares the names of real binary notation in several programming languages:

Real Binary Notation

Language 4 Bytes 8 Bytes

SAS RB4. RB8.

Fortran REAL*4 REAL*8

C float double

IBM 370 assembler F D

PL/I FLOAT BIN(21) FLOAT BIN(53)

332 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 339: ) Formats and Informats: Reference - go.documentation.sas.com

CAUTION:Using the RBw.d informat to read real binary information about equipment that conforms to the IEEE standard for floating-point numbers results in a truncated eight-byte number (double-precision), rather than in a true four-byte floating-point number (single-precision).

Exampleinput @1 x rb8.;

Data Line * Result

----+----1

4280000000000000 128

* The data line is a hexadecimal representation of a real binary (floating-point) number on an IBM mainframe operating environment. Each byte occupies one column of the input field.

See Also

Informats:

• “IEEE Informat” on page 313

RMFDUR InformatReads duration intervals of RMF records.

Category: Date and Time

SyntaxRMFDURw.

Syntax Descriptionw

specifies the width of the input field.

Requirement w must be 4 because packed decimal duration values in RMF records contain four bytes of information.

DetailsThe RMFDURw. informat reads the duration of RMF measurement intervals of RMF records that are produced as packed decimal data by IBM mainframe systems and converts them to SAS time values.

The general form of the duration interval data in an RMF record in hexadecimal notation is mmsstttF:

RMFDUR Informat 333

Page 340: ) Formats and Informats: Reference - go.documentation.sas.com

mmis the one-byte representation of two digits that correspond to minutes.

ssis the one-byte representation of two digits that correspond to seconds.

tttis the one-and-a-half-bytes representation of three digits that correspond to thousandths of a second.

Fis a half byte that contains all binary 1s, which assigns the value as positive.

If the field does not contain packed decimal data, then RMFDURw. results in a missing value.

Comparisons• Both the RMFDURw. informat and the RMFSTAMPw. informat read packed

decimal information from RMF records that are produced by IBM mainframe systems.

• The RMFDURw. informat reads duration data and results in a time value.

• The RMFSTAMPw. informat reads time-of-day data and results in a datetime value.

Exampleinput dura rmfdur4.;

Data Line * Result

----+----1

3552226F 2152.226

* The data line is a hexadecimal representation of a binary duration value that is stored in packed decimal form as it would appear in an RMF record. Each byte occupies one column of the input field. The result is a SAS time value corresponding to 00:35:52.226.

See Also

Informats:

• “RMFSTAMP Informat” on page 334

• “SMFSTAMP Informat” on page 353

RMFSTAMP InformatReads time and date fields of RMF records.

Category: Date and Time

334 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 341: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxRMFSTAMPw.

Syntax Descriptionw

specifies the width of the input field.

Requirement w must be 8 because packed decimal time and date values in RMF records contain eight bytes of information: four bytes of time data that are followed by four bytes of date data.

DetailsThe RMFSTAMPw. informat reads packed decimal time and date values of RMF records that are produced by IBM mainframe systems, and converts the time and date values to SAS datetime values.

The general form of the time and date information in an RMF record in hexadecimal notation is 0hhmmssFccyydddF:

0is the half byte that contains all binary 0s.

hhis the one-byte representation of two digits that correspond to the hour of the day.

mmis the one-byte representation of two digits that correspond to minutes.

ssis 1 byte that represents two digits that correspond to seconds.

ccis the one-byte representation of two digits that correspond to the century.

yyis the one-byte representation of two digits that correspond to the year.

dddis the one-and-a-half bytes that contain three digits that correspond to the day of the year.

Fis the half byte that contains all binary 1s.

The century indicators 00 correspond to 1900, 01 to 2000, and 02 to 2100.

RMFSTAMPw. enables you to read, on any operating environment, packed decimal time and date values from files that are created on an IBM mainframe.

ComparisonsBoth the RMFSTAMPw. informat and the PDTIMEw. informat read packed decimal values from RMF records. The RMFSTAMPw. informat reads both time and date values and results in a SAS datetime value. The PDTIMEw. informat reads only time values and results in a SAS time value.

Example

RMFSTAMP Informat 335

Page 342: ) Formats and Informats: Reference - go.documentation.sas.com

input begin: $hex16.;y=input(begin, rmfstamp8.);

Data Line * Result

----+----1----+----2

0142225F2612200F 80550512545

* The data line is a hexadecimal representation of a binary time and date value that is stored in packed decimal form as it would appear in an RMF record. Each byte occupies one column of the input field. The result is a SAS datetime value that corresponds to July 18, 2012, 2:22.25 PM.

S370FF InformatReads EBCDIC numeric data.

Category: Numeric

SyntaxS370FFw.d

Syntax Descriptionw

specifies the width of the input field.

Default 12

Range 1–32

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–31

DetailsThe S370FFw.d informat reads numeric data that are represented in EBCDIC and converts the data to native format. If EBCDIC is the native format, S370FFw.d performs no conversion.

S370FFw.d reads EBCDIC numeric values that are represented with one byte per digit. Use S370FFw.d on other operating environments to read numeric data from IBM mainframe files.

S370FFw.d reads numeric values located anywhere in the input field. EBCDIC blanks can precede or follow a numeric value with no effect. If a value is negative, an EBCDIC minus sign should immediately precede the value. S370FFw.d reads values with EBCDIC decimal points and values in scientific notation, and it interprets a single EBCDIC period as a missing value.

336 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 343: ) Formats and Informats: Reference - go.documentation.sas.com

ComparisonsThe S370FFw.d informat performs the same role for numeric data that the $EBCDICw.d informat does for character data. That is, on an IBM mainframe system, S370FFw.d has the same effect as the standard w.d informat. On all other systems, using S370FFw.d is equivalent to using $EBCDICw.d as well as using the standard w.d informat.

Exampleinput @1 x s370ff3.;

Data Line * Result

----+----1

F1F2F3 123

F2F4F0 240

* The data lines are hexadecimal representations of codes for characters. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one character value.

S370FIB InformatReads integer binary (fixed-point) values, including negative values, in IBM mainframe format.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FIBw.d

Syntax Descriptionw

specifies the width of the input field.

Default 4

Range 1–8

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–10

S370FIB Informat 337

Page 344: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsThe S370FIBw.d informat reads integer binary (fixed-point) values that are stored in IBM mainframe format, including negative values that are represented in two's complement notation. S370FIBw.d reads integer binary values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

Use S370FIBw.d for integer binary data that are created in IBM mainframe format for reading in other operating environments.

Note: Different operating environments store integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 237 .

Comparisons• If you use SAS on an IBM mainframe, S370FIBw.d and IBw.d are identical.

• S370FPIBw.d, S370FIBUw.d, and S370FIBw.d are used to read big endian integers in any operating environment.

To view a table that shows the type of informat to use with big endian and little endian integers, see “Reading Data Generated on Big Endian or Little Endian Platforms” on page 238.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9..

ExampleYou can use the INPUT statement and specify the S370FIB informat. However, this example uses the informat with the INPUT function, where the binary input value is described by using a hexadecimal literal.

x=input('0080'x,s370fib2.);

SAS Statement Result

put x=; 128

See Also

Informats

• “S370FIBU Informat” on page 338

• “S370FPIB Informat” on page 342

S370FIBU InformatReads unsigned integer binary (fixed-point) values in IBM mainframe format.

Category: Numeric

338 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 345: ) Formats and Informats: Reference - go.documentation.sas.com

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FIBUw.d

Syntax Descriptionw

specifies the width of the input field.

Default 4

Range 1–8

dspecifies the power of 10 by which to divide the value. SAS uses the d value even if the data contain decimal points. This argument is optional.

Range 0–10

DetailsThe S370FIBUw.d informat reads unsigned integer binary (fixed-point) values that are stored in IBM mainframe format, including negative values that are represented in two's complement notation. Unsigned integer binary values are the same as integer binary values, except that all values are treated as positive. S370FIBUw.d reads integer binary values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

Use S370FIBUw.d for unsigned integer binary data that are created in IBM mainframe format for reading in other operating environments.

Note: Different operating environments store integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 237 .

Comparisons• The S370FIBUw.d informat is equivalent to the COBOL notation PIC 9(n) BINARY,

where n is the number of digits.

• The S370FIBUw.d and S370FPIBw.d informats are identical.

• S370FPIBw.d, S370FIBUw.d, and S370FIBw.d are used to read big endian integers in any operating environment.

To view a table that shows the type of informat to use with big endian and little endian integers, see “Reading Data Generated on Big Endian or Little Endian Platforms” on page 238.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9..

S370FIBU Informat 339

Page 346: ) Formats and Informats: Reference - go.documentation.sas.com

ExampleYou can use the INPUT statement and specify the S370FIBU informat. However, these examples use the informat with the INPUT function, where binary input values are described by using a hexadecimal literal.

x=input('7F'x,s370fibu1.);y=input('F6'x,s370fibu1.);

SAS Statement Result

put x=;put y=;

127246

See Also

Informats:

• “S370FIB Informat” on page 337

• “S370FPIB Informat” on page 342

S370FPD InformatReads packed data in IBM mainframe format.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FPDw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

Range 1–16

dspecifies the power of 10 by which to divide the value. This argument is optional.

Default 0

Range 0–31

340 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 347: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsPacked decimal data contain two digits per byte, but only one digit in the input field represents the sign. The last half of the last byte indicates the sign: a C or an F for positive numbers and a D for negative numbers.

Use S370FPDw.d to read packed decimal data from IBM mainframe files on other operating environments.

Comparisons• If you use SAS on an IBM mainframe, the S370FPDw.d and the PDw.d informats are

identical.

• The following table compares the equivalent packed decimal notation by programming language:

Language Packed Decimal Notation

SAS S370FPD4.

PL/I FIXED DEC(7,0)

COBOL COMP-3 PIC 9(7)

assembler PL4

S370FPDU InformatReads unsigned packed decimal data in IBM mainframe format.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FPDUw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

Range 1–16

dspecifies the power of 10 by which to divide the value. This argument is optional.

S370FPDU Informat 341

Page 348: ) Formats and Informats: Reference - go.documentation.sas.com

Default 0

Range 0–31

DetailsPacked decimal data contain two digits per byte. The last half of the last byte, which indicates the sign for signed packed data, is always F for unsigned packed data.

Use S370FPDUw.d on other operating environments to read unsigned packed decimal data from IBM mainframe files.

Comparisons• The S370FPDUw.d informat is similar to the S370FPDw.d informat except that the

S370FPDUw.d informat rejects all sign digits except F.

• The S370FPDUw.d informat is equivalent to the COBOL notation PIC 9(n) PACKED-DECIMAL, where the n value is the number of digits.

Exampleinput @1 x s370fpdu3.;

Data Line * Result

----+----1

12345F 12345

* The data line is a hexadecimal representation of a binary number that is stored in packed decimal form. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the input field.

S370FPIB InformatReads positive integer binary (fixed-point) values in IBM mainframe format.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FPIBw.d

Syntax Descriptionw

specifies the width of the input field.

342 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 349: ) Formats and Informats: Reference - go.documentation.sas.com

Default 4

Range 1–8

dspecifies the power of 10 by which to divide the value. This argument is optional.

Default 0

Range 0–10

DetailsPositive integer binary values are the same as integer binary values, except that all values are treated as positive. S370FPIBw.d reads integer binary values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

Use S370FPIBw.d for positive integer binary data that are created in IBM mainframe format for reading in other operating environments.

Note: Different operating environments store integer binary values in different ways. This concept is called byte ordering. For a detailed discussion about byte ordering, see “Byte Ordering for Integer Binary Data on Big Endian and Little Endian Platforms” on page 237 .

Comparisons• If you use SAS on an IBM mainframe, S370FPIBw.d and PIBw.d are identical.

• S370FPIBw.d, S370FIBUw.d, and S370FIBw.d are used to read big endian integers in any operating environment.

To view a table that shows the type of informat to use with big endian and little endian integers, see “Reading Data Generated on Big Endian or Little Endian Platforms” on page 238.

To view a table that compares integer binary notation in several programming languages, see “Integer Binary Notation and Different Programming Languages” on page 9.

ExampleYou can use the INPUT statement and specify the S370FPIB informat. However, this example uses the informat with the INPUT function, where the binary input value is described using a hexadecimal literal.

x=input('0100'x,s370fpib2.);

SAS Statement Result

put x=4; 256

See Also

Informats:

S370FPIB Informat 343

Page 350: ) Formats and Informats: Reference - go.documentation.sas.com

• “S370FIB Informat” on page 337

• “S370FIBU Informat” on page 338

S370FRB InformatReads real binary (floating-point) data in IBM mainframe format.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FRBw.d

Syntax Descriptionw

specifies the width of the input field.

Default 6

Range 2–8

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–10

DetailsReal binary values are represented in two parts: a mantissa that gives the value, and an exponent that gives the value's magnitude.

Use S370FRBw.d to read real binary data from IBM mainframe files on other operating environments.

Comparisons• If you use SAS on an IBM mainframe, S370FRBw.d and RBw.d are identical.

• The following table shows the equivalent real binary notation for several programming languages:

Real Binary Notation

Language 4 Bytes 8 Bytes

SAS S370FRB4. S370FRB8.

PL/I FLOAT BIN(21) FLOAT BIN(53)

344 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 351: ) Formats and Informats: Reference - go.documentation.sas.com

Real Binary Notation

Language 4 Bytes 8 Bytes

Fortran REAL*4 REAL*8

COBOL COMP-1 COMP-2

assembler E D

C float double

See Also

Informats:

• “RB Informat” on page 332

S370FZD InformatReads zoned decimal data in IBM mainframe format.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FZDw.d

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 1–32

dspecifies the power of 10 by which to divide the value. If the data contain decimal points, the d value is ignored. This argument is optional.

Default 0

Range 0–31

S370FZD Informat 345

Page 352: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsZoned decimal data are similar to standard decimal data in that every digit requires one byte. However, the value's sign is stored in the last byte, along with the last digit.

Use S370FZDw.d on other operating environments to read zoned decimal data from IBM mainframe files.

Comparisons• If you use SAS on an IBM mainframe, S370FZDw.d and ZDw.d are identical.

• The following table shows the equivalent zoned decimal notation for several programming languages:

Language Zoned Decimal Notation

SAS S370FZD3.

PL/I PICTURE'99T'

COBOL PIC S9(3) DISPLAY

assembler ZL3

Exampleinput @1 x s370fzd3.;

Data Line * Result

----+----1

F1F2C3 123

F1F2D3 -123

* The data line contains a hexadecimal representation of a binary number stored in zoned decimal format on an IBM mainframe operating environment. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the input field.

See Also

Informats:

• “ZD Informat” on page 367

S370FZDB InformatReads zoned decimal data in which zeros have been left blank.

Category: Numeric

346 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 353: ) Formats and Informats: Reference - go.documentation.sas.com

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FZBDw.d

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 1–32

dspecifies the power of 10 by which to divide the value. This argument is optional.

Default 0

Range 0–31

DetailsUse the S370FZDBw.d informat on other operating environments to read zoned decimal data from IBM mainframe files.

Exampleinput @1 x s370fzdb8.;

Data Line * Result

----+----1

40404040F14040C0 1000

4040404040F1F2D3 –123

* The data lines contain a hexadecimal representation of a binary number that is stored in zoned decimal format on an IBM mainframe operating environment. Two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the input field.

S370FZDL InformatReads zoned decimal leading-sign data in IBM mainframe format.

Category: Numeric

S370FZDL Informat 347

Page 354: ) Formats and Informats: Reference - go.documentation.sas.com

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FZDLw.d

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 1–32

dspecifies the power of 10 by which to divide the value. This argument is optional.

Default 0

Range 0–31

DetailsUse S370FZDLw.d on other operating environments to read zoned decimal data from IBM mainframe files.

Comparisons• Zoned decimal leading-sign data is similar to standard zoned decimal data except

that the sign of the value is stored in the first byte of zoned decimal leading-sign data, along with the first digit.

• The S370FZDLw.d informat is equivalent to the COBOL notation PIC S9(n) DISPLAY SIGN LEADING, where the n value is the number of digits.

Exampleinput @1 x s370fzdl3.;

Data Line * Result

----+----1

C1F2F3 123

D1F2F3 -123

* The data lines contain a hexadecimal representation of a binary number stored in zoned decimal format on an IBM mainframe operating environment. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the input field.

348 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 355: ) Formats and Informats: Reference - go.documentation.sas.com

S370FZDS InformatReads zoned decimal separate leading-sign data in IBM mainframe format.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FZDSw.d

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 2–32

dspecifies the power of 10 by which to divide the value. This argument is optional.

Default 0

Range 0–31

DetailsUse S370FZDSw.d on other operating environments to read zoned decimal data from IBM mainframe files.

Comparisons• Zoned decimal separate leading-sign data is similar to standard zoned decimal data

except that the sign of the value is stored in the first byte of zoned decimal leading sign data, and the first digit of the value is stored in the second byte.

• The S370FZDSw.d informat is equivalent to the COBOL notation PIC S9(n) DISPLAY SIGN LEADING SEPARATE, where the n value is the number of digits.

Exampleinput @1 x s370fzds4.;

Data Line * Result

----+----1

4EF1F2F3 123

S370FZDS Informat 349

Page 356: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line * Result

60F1F2F3 -123

* The data line contains a hexadecimal representation of a binary number that is stored in zoned decimal format on an IBM mainframe operating environment. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the input field.

S370FZDT InformatReads zoned decimal separate trailing-sign data in IBM mainframe format.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FZDTw.d

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 2–32

dspecifies the power of 10 by which to divide the value. This argument is optional.

Default 0

Range 0–31

DetailsUse S370FZDTw.d on other operating environments to read zoned decimal data from IBM mainframe files.

Comparisons• Zoned decimal separate trailing-sign data are similar to zoned decimal separate

leading-sign data except that the sign of the value is stored in the last byte of zoned decimal separate trailing-sign data.

• The S370FZDTw.d informat is equivalent to the COBOL notation PIC S9(n) DISPLAY SIGN TRAILING SEPARATE, where the n value is the number of digits.

350 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 357: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleinput @1 x s370fzdt4.;

Data Line * Result

----+----1

F1F2F34E 123

F1F2F360 -123

* The data line contains a hexadecimal representation of a binary number that is stored in zoned decimal format on an IBM mainframe operating environment. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the input field.

S370FZDU InformatReads unsigned zoned decimal data in IBM mainframe format.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxS370FZDUw.d

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 1–32

dspecifies the power of 10 by which to divide the value. This argument is optional.

Default 0

Range 0–31

DetailsUse S370FZDUw.d on other operating environments to read unsigned zoned decimal data from IBM mainframe files.

S370FZDU Informat 351

Page 358: ) Formats and Informats: Reference - go.documentation.sas.com

Comparisons• The S370FZDUw.d informat is similar to the S370FZDw.d informat except that the

S370FZDUw.d informat rejects all sign digits except F.

• The S370FZDUw.d informat is equivalent to the COBOL notation PIC 9(n) DISPLAY, where the n value is the number of digits.

Exampleinput @1 x s370fzdu3.;

Data Line * Result

----+----1

F1F2F3 123

* The data line contains a hexadecimal representation of a binary number that is stored in zoned decimal format on an IBM mainframe operating environment. Each two hexadecimal characters correspond to one byte of binary data, and each byte corresponds to one column of the input field.

SHRSTAMP InformatReads date and time values of SHR records.

Category: Date and Time

SyntaxSHRSTAMPw.

Syntax Descriptionw

specifies the width of the input field.

Requirement w must be 8 because packed decimal date and time values in SHR records contain eight bytes of information: four bytes of date data that are followed by four bytes of time data.

DetailsThe SHRSTAMPw. informat reads packed decimal date and time values of SHR records that are produced by IBM mainframe environments and converts the date and time values to SAS datetime values.

The general form of the date and time information in an SHR record in hexadecimal notation is ccyydddFhhmmssth, where

ccyyis the two-byte representation of the year. The cc portion is the one-byte representation of a two-digit integer that represents the century. The yy portion is the one-byte representation of two digits that correspond to the year.

352 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 359: ) Formats and Informats: Reference - go.documentation.sas.com

The cc portion is the century indicator where 00 indicates 19yy, 01 indicates 20yy, 02 indicates 21yy, and so on. A hexadecimal year value of 0115 is equal to the year 2015.

dddis the one-and-a-half bytes that contain three digits that correspond to the day of the year.

Fis the half-byte that contains all binary 1s.

hhis the one-byte representation of two digits that correspond to the hour of the day.

mmis the one-byte representation of two digits that correspond to minutes.

ssis the one-byte representation of two digits that correspond to seconds.

this the one-byte representation of two digits that correspond to a 100th of a second.

The SHRSTAMPw. informat enables you to read, on any operation environment, packed decimal date and time values from files that are created on an IBM mainframe.

Exampleinput begin: $hex16.;y=input(begin, shrstamp8.);

Data Line * Result

----+----1----+----2

0110239F12403576 1598532035.8

* The data line is a hexadecimal representation of a packed decimal date and time value that is stored as it would appear in an SHR record. Each byte occupies one column of the input field. The result is a SAS datetime value that corresponds to August. 27, 2010 12:40:36.

SMFSTAMP InformatReads time and date values of SMF records.

Category: Date and Time

SyntaxSMFSTAMPw.

Syntax Descriptionw

specifies the width of the input field.

SMFSTAMP Informat 353

Page 360: ) Formats and Informats: Reference - go.documentation.sas.com

Requirement w must be 8 because time and date values in SMF records contain eight bytes of information: four bytes of time data that are followed by four bytes of date data.

Tip The time portion of an SMF record is a four-byte integer binary number that represents time as the number of hundredths of a second past midnight.

DetailsThe SMFSTAMPw. informat reads integer binary time values and packed decimal date values of SMF records that are produced by IBM mainframe systems and converts the time and date values to SAS datetime values.

The date portion of an SMF record in hexadecimal notation is ccyydddF:

ccis the one-byte representation of two digits that correspond to the century.

yyis the one-byte representation of two digits that correspond to the year.

dddis the one-and-a-half bytes that contain three digits that correspond to the day of the year.

Fis the half byte that contains all binary 1s.

The SMFSTAMPw. informat enables you to read, on any operating environment, integer binary time values and packed decimal date values from files that are created on an IBM mainframe.

Exampleinput begin: $hex16.;y=input(begin, smfstamp8.);

Data Line * Result

----+----1----+----2

0058DC0C0108200F 1532016635

* The data line is a hexadecimal representation of a binary time and date value that is stored as it would appear in an SMF record. Each byte occupies one column of the input field. The result is a SAS datetime value that corresponds to July 18, 2008, 4:10:35 PM.

TIME InformatReads hours, minutes, and seconds in the form hh:mm:ss.ss, where special characters such as the colon (:) or the period (.) are used to separate the hours, minutes, and seconds.

Category: Date and Time

354 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 361: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxTIMEw.

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 5–32

DetailsThe TIMEw. informat reads SAS time values in the form: hh:mm:ss<.ss> <AM | PM>:

hhis an integer that represents the number of hours.

:represents a special character that separates hours, minutes, and seconds.

mmis an integer between 00 and 59 that represents minutes.

ss<.ss>is an integer that represents the number of seconds, and if needed, tenths of a second. Seconds and tenths of a second must always be separated by a period.

AM | PMAM indicates time between 12:00 midnight and 11:59 in the morning. PM indicates time between 12:00 noon and 11:59 at night.

Separate hh, mm, and ss with a special character. When the period is used as the special character, the time is interpreted in the order hours, minutes, and seconds. For example, 23.22 is 23 hours and 22 minutes, not 23 minutes and 22 seconds, or 23 seconds and 22 tenths of a second.

If you do not enter a value for seconds, SAS assumes a value of 0.

The stored value is the total number of seconds in the time value.

Exampleinput begin time10.;

Data Line Result Formatted with TIMEw.

----+----1

12.56 46560 12:56:00

120:120 439200 122:00:00

1:13 pm 47580 13:13:00

TIME Informat 355

Page 362: ) Formats and Informats: Reference - go.documentation.sas.com

See Also

Formats:

• “HHMM Format” on page 75

• “HOUR Format” on page 77

• “MMSS Format” on page 86

• “TIME Format” on page 98

Functions:

• “HOUR Function” in SAS Viya Functions and CALL Routines: Reference

• “MINUTE Function” in SAS Viya Functions and CALL Routines: Reference

• “SECOND Function” in SAS Viya Functions and CALL Routines: Reference

• “TIME Function” in SAS Viya Functions and CALL Routines: Reference

TODSTAMP InformatReads an eight-byte time-of-day stamp.

Category: Date and Time

SyntaxTODSTAMPw.

Syntax Descriptionw

specifies the width of the input field.

Requirement w must be 8 because the OS TIME macro or the STCK instruction on IBM mainframes each return an eight-byte value.

DetailsThe TODSTAMPw. informat reads time-of-day clock values that are produced by IBM mainframe operating systems and converts the clock values to SAS datetime values.

If the time-of-day value is all 0s, TODSTAMPw. results in a missing value.

Use TODSTAMPw. on other operating environments to read time-of-day values that are produced by an IBM mainframe.

Exampleinput btime: $hex16.;y=input(btime, todstamp8.);

356 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 363: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line * Result

----+----1----+----2

B591183D5FB80000 1300786905

* The data line is a hexadecimal representation of a binary, 8-byte time-of-day clock value. Each byte occupies one column of the input field. The result is a SAS datetime value that corresponds to March 21, 2001, 09:41:45.

TRAILSGN InformatReads a trailing plus (+) or minus (–) sign.

Category: Numeric

SyntaxTRAILSGNw.

Syntax Descriptionw

specifies the width of the input field.

Default 6

Range 1–32

DetailsIf the data contains a decimal point, the TRAILSGN informat honors the number of decimal places that are in the input data. If the data contains a comma, the TRAILSGN informat reads the value, ignoring the comma.

Exampleinput x trailsgn8.;

Data Line Result

----+----1

1 1

1,000 1000

1+ 1

1- -1

TRAILSGN Informat 357

Page 364: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Result

1.2 1.2

1.2+ 1.2

1.2- -1.2

TU InformatReads timer units.

Category: Date and Time

SyntaxTUw.

Syntax Descriptionw

specifies the width of the input field.

Requirement w must be 4 because the OS TIME macro returns a four-byte value.

DetailsThe TUw. informat reads timer unit values that are produced by IBM mainframe operating environments and converts the timer unit values to SAS time values.

There are exactly 38,400 software timer units per second. The low-order bit in a timer unit value represents approximately 26.041667 microseconds.

Use the TUw. informat to read timer unit values that are produced by an IBM mainframe on other operating environments.

Exampleinput btime tu4.;

Data Line * Result

----+----1

8FC7A9BC 62818.411563

* The data line is a hexadecimal representation of a binary, four-byte timer unit value. Each byte occupies one column of the input field. The result is a SAS time value that corresponds to 5:26:58.41 p.m.

358 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 365: ) Formats and Informats: Reference - go.documentation.sas.com

VAXRB InformatReads real binary (floating-point) data in VMS format.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxVAXRBw.d

Syntax Descriptionw

specifies the width of the input field.

Default 4

Range 2–8

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–10

DetailsUse the VAXRBw.d informat to read floating-point data from VMS files on other operating environments.

ComparisonsIf you use SAS that is running under VMS, the VAXRBw.d and the RBw.d informats are identical.

See Also

Informats:

• “RB Informat” on page 332

VMSZN InformatReads VMS and MicroFocus COBOL zoned numeric data.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

VMSZN Informat 359

Page 366: ) Formats and Informats: Reference - go.documentation.sas.com

SyntaxVMSZNw.d

Syntax Descriptionw

specifies the width of the output field.

Default 1

Range 1–32

dspecifies the number of digits to the right of the decimal point in the numeric value. This argument is optional.

DetailsThe VMSZNw.d informat is similar to the ZDw.d informat. Both read a string of ASCII digits, and the last digit is a special character denoting the magnitude of the last digit and the sign of the entire number. The difference between the VMSZNw.d informat and the ZDw.d informat is in the special character used for the last digit. The following table shows the special characters used by the VMSZNw.d informat.

Desired

Digit

Special

Character

Desired

Digit

Special

Character

0 0 -0 p

1 1 -1 q

2 2 -2 r

3 3 -3 s

4 4 -4 t

5 5 -5 u

6 6 -6 v

7 7 -7 w

8 8 -8 x

9 9 -9 y

Exampleinput @1 vmszn4.;

360 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 367: ) Formats and Informats: Reference - go.documentation.sas.com

Data line Result

----+----1

1234 1234

123t -1234

See Also

Formats:

• “VMSZN Format” on page 220

Informats:

• “ZD Informat” on page 367

w InformatReads standard numeric data.

Category: Numeric

Alias: BESTw.d, Dw.d, Ew.d, Fw.d

Syntaxw.d

Syntax Descriptionw

specifies the width of the input field.

Range 1–32

dspecifies the power of 10 by which to divide the value. If the data contain decimal points, the d value is ignored. This argument is optional.

Range 0–31

DetailsThe w.d informat reads numeric values that are located anywhere in the field. Blanks can precede or follow a numeric value with no effect. A minus sign with no separating blank should immediately precede a negative value. The w.d informat reads values with decimal points and values in scientific E notation, and it interprets a single period as a missing value.

w Informat 361

Page 368: ) Formats and Informats: Reference - go.documentation.sas.com

Comparisons• The w.d informat is identical to the BZw.d informat, except that the w.d informat

ignores trailing blanks in the numeric values. To read trailing blanks as 0s, use the BZw.d informat.

• The w.d informat can read values in scientific E notation exactly as the Ew.d informat does.

Exampleinput @1 x 6. @10 y 6.2;put x @7 y;

Data Line Result

----+----1----+ ----+----1----+

23 2300 23 23

23 2300 23 0

23 -2300 23 -23

23.0 23. 23 23

2.3E1 2.3 23 2.3

-23 0 -23 .

YYMMDD InformatReads date values in the form yymmdd or yyyymmdd.

Category: Date and Time

SyntaxYYMMDDw.

Syntax Descriptionw

specifies the width of the input field.

Default 6

Range 6–32

362 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 369: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsSAS read date values in one of the following forms:

• yymmdd

• yyyymmdd

yy or yyyy is a two-digit or four-digit integer that represents the year.

mmis an integer between 01 and 12 that represents the month of the year.

ddis an integer between 01 and 31 that represents the day of the month.

You can separate the year, month, and day values by blanks or by special characters. However, if delimiters are used, place them between all the values. You can also place blanks before and after the date. Make sure the width of the input field allows space for blanks and special characters.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

Exampleinput calendar_date yymmdd10.;

Data Line Result

----+----1

120316 19068

12/03/16 19068

12 03 16 19068

2012-03-16 19068

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYY Format” on page 58

• “MMDDYY Format” on page 82

• “YYMMDD Format” on page 117

Functions:

• “DAY Function” in SAS Viya Functions and CALL Routines: Reference

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

• “MONTH Function” in SAS Viya Functions and CALL Routines: Reference

YYMMDD Informat 363

Page 370: ) Formats and Informats: Reference - go.documentation.sas.com

• “YEAR Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “DATE Informat” on page 293

• “DDMMYY Informat” on page 296

• “MMDDYY Informat” on page 318

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

YYMMN InformatReads date values in the form yyyymm or yymm.

Category: Date and Time

SyntaxYYMMNw.

Syntax Descriptionw

specifies the width of the input field.

Default 4

Range 4–6

DetailsSAS reads date values in one of the following forms:

• yyyymm

• yymm

yy or yyyy is a two-digit or four-digit integer that represents the year.

mmis a two-digit integer that represents the month.

The N in the informat name must be used and indicates that you cannot separate the year and month values by blanks or by special characters. SAS automatically adds a day value of 01 to the value to make a valid SAS date variable.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

Exampleinput date1 yymmn6.;

364 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 371: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Result

----+----1

201208 19206

See Also

Formats:

• “DATE Format” on page 141

• “DDMMYY Format” on page 58

• “YYMMDD Format” on page 117

• “YYMM Format” on page 116

• “YYMON Format” on page 121

Functions:

• “DAY Function” in SAS Viya Functions and CALL Routines: Reference

• “MONTH Function” in SAS Viya Functions and CALL Routines: Reference

• “MDY Function” in SAS Viya Functions and CALL Routines: Reference

• “YEAR Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “DATE Informat” on page 293

• “DDMMYY Informat” on page 296

• “MMDDYY Informat” on page 318

• “YYMMDD Informat” on page 362

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

YYQ InformatReads quarters of the year in the form yyQq or yyyyQq.

Category: Date and Time

SyntaxYYQw.

YYQ Informat 365

Page 372: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the input field.

Default 6 (For SAS version 6, the default is 4.)

Range 4–32 (For SAS version 6, the range is 4–6.)

DetailsSAS reads data in one of the following forms:

• yyQq

• yyyyQq

yy or yyyyis an integer that represents the two-digit or four-digit year.

qis an integer (1, 2, 3, or 4) that represents the quarter of the year. You can also represent the quarter as 01, 02, 03, or 04.

The letter Q must separate the year value and the quarter value. The year value, the letter Q, and the quarter value cannot be separated by blanks. A value that is read with YYQw. produces a SAS date value that corresponds to the first day of the specified quarter.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

Exampleinput quarter yyq9.;

Data Line Result

----+----1----+

12Q2 19084

12Q02 19084

2012Q02 19084

See Also

Functions:

• “QTR Function” in SAS Viya Functions and CALL Routines: Reference

• “YEAR Function” in SAS Viya Functions and CALL Routines: Reference

• “YYQ Function” in SAS Viya Functions and CALL Routines: Reference

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

366 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 373: ) Formats and Informats: Reference - go.documentation.sas.com

ZD InformatReads zoned decimal data.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxZDw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

Range 1–32

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 1–31

DetailsThe ZDw.d informat reads zoned decimal data in which every digit requires one byte and in which the last byte contains the value's sign along with the last digit.

Note: Different operating environments store zoned decimal values in different ways. However, ZDw.d reads zoned decimal values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

You can enter positive values in zoned decimal format from a personal computer. Some keying devices enable you to enter negative values by overstriking the last digit with a minus sign.

Comparisons• Like the w.d informat, the ZDw.d informat reads data in which every digit requires

one byte. Use ZDVw.d or ZDw.d to read zoned decimal data in which the last byte contains the last digit and the sign.

• The ZDw.d informat functions like the ZDVw.d informat with one exception: ZDVw.d validates the input string and disallows invalid data.

• The following table compares the zoned decimal informat with notation in several programming languages:

ZD Informat 367

Page 374: ) Formats and Informats: Reference - go.documentation.sas.com

Language Zoned Decimal Notation

SAS ZD3.

PL/I PICTURE'99T'

COBOL DISPLAY PIC S 999

IBM assembler ZL3

Exampleinput @1 x zd4.;

Data Line * Result

----+----1

F0F1F2C8 128

* The data line contains a hexadecimal representation of a binary number that is stored in zoned decimal format on an IBM mainframe computer system. Each byte occupies one column of the input field.

See Also

Informats

• “w Informat” on page 361

• “ZDV Informat” on page 369

ZDB InformatReads zoned decimal data in which zeros have been left blank.

Category: Numeric

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxZDBw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

368 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 375: ) Formats and Informats: Reference - go.documentation.sas.com

Range 1–32

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 0–31

DetailsThe ZDBw.d informat reads zoned decimal data that are produced in IBM 1410, 1401, and 1620 form, where 0s are left blank rather than being punched.

Exampleinput @1 x zdb3.;

Data Line * Result

----+----1

F140C2 102

* The data line contains a hexadecimal representation of a binary number that is stored in zoned decimal form, including the codes for spaces, on an IBM mainframe operating environment. Each byte occupies one column of the input field.

ZDV InformatReads and validates zoned decimal data.

Category: Numeric

Restriction: This option does not perform validation on z/OS.

Interaction: List input is incompatible with binary input when this informat is specified in an INFORMAT= statement or an ATTRIB= statement using the INFORMAT= argument. SAS issues a warning and uses formatted input to read the data.

SyntaxZDVw.d

Syntax Descriptionw

specifies the width of the input field.

Default 1

Range 1–32

dspecifies the power of 10 by which to divide the value. This argument is optional.

ZDV Informat 369

Page 376: ) Formats and Informats: Reference - go.documentation.sas.com

Range 1–31

DetailsThe ZDVw.d informat reads data in which every digit requires one byte and in which the last byte contains the value's sign along with the last digit. It also validates the input string and disallows invalid data.

ZDVw.d is dependent on the operating environment. For example, on IBM mainframes, the ZDVw.d informat requires an F for all high-order nibbles except the last. (In contrast, the ZDw.d informat ignores the high-order nibbles for all bytes except for the nibbles that are associated with the sign.) The last high-order nibble accepts values ranging from A-F, where A, C, E, and F are positive values and B and D are negative values. The low-order nibble on IBM mainframes must be a numeric digit that ranges from 0-9, as with ZD.

Note: Different operating environments store zoned decimal values in different ways. However, the ZDVw.d informat reads zoned decimal values with consistent results if the values are created in the same type of operating environment that you use to run SAS.

ComparisonsThe ZDVw.d informat functions like the ZDw.d informat with one exception: ZDVw.d validates the input string and disallows invalid data.

Exampleinput @1 test zdv4.;

Data Line * Result

----+----1

F0F1F2C8 128

* The data line contains a hexadecimal representation of a binary number stored in zoned decimal form. The example was run on an IBM mainframe. The results might vary depending on your operating environment.

See Also

Informats:

• “w Informat” on page 361

• “ZD Informat” on page 367

370 Chapter 7 • Dictionary of Informats for SAS and the CAS Server

Page 377: ) Formats and Informats: Reference - go.documentation.sas.com

Chapter 8

Dictionary of Informats for SAS Only

Informats by Category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374B8601CI Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374B8601DA Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375B8601DJ Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376B8601DN Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378B8601DT Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379B8601DX Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380B8601DZ Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381B8601LX Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382B8601TM Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383B8601TX Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384B8601TZ Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384E8601LX Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386E8601LZ Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386E8601TX Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388OCTAL Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388PDJULG Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389PDJULI Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390ROW Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392STIMER Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393WEEKU Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394WEEKV Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396WEEKW Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398YMDDTTM Informat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

Informats by CategoryThere are five categories of informats in this list:

Category Description

Character instructs SAS to read character data values into character variables.

Column Binary instructs SAS to read data stored in column-binary or multipunched form into character or numeric variables.

371

Page 378: ) Formats and Informats: Reference - go.documentation.sas.com

Category Description

Date and Time instructs SAS to read date values into variables that represent dates, times, and datetimes.

ISO 8601 instructs SAS to read date, time, and datetime values that are written in the ISO 8601 standard into either numeric or character variables.

Numeric instructs SAS to read numeric data values into numeric variables.

The following table provides brief descriptions of the SAS informats. For more detailed descriptions, see the dictionary entry for each informat.

Category Language Elements Description

Column Binary ROW Informat (p. 392) Reads a column-binary field down a card column.

Date and Time B8601CI Informat (p. 374) Reads an IBM date and time value that includes a century marker, in the form cyymmddhhmmss<fff>.

B8601DA Informat (p. 375) Reads date values that are specified using the ISO 8601 base notation yyyymmdd.

B8601DJ Informat (p. 376) Reads a Java date and time value that is in the form yyyymmddhhmmss<ffffff>.

B8601DN Informat (p. 378) Reads date values that are specified using the ISO 8601 basic notation yyyymmdd and returns SAS datetime values where the time portion of the value is 000000.

B8601DT Informat (p. 379) Reads datetime values that are specified using the ISO 8601 basic notation yyyymmddThhmmss<ffffff>.

B8601DZ Informat (p. 381) Reads Coordinated Universal Time (UTC) datetime values that are specified using the ISO 8601 datetime basic notation yyyymmddThhmmss+|–hhmm or yyyymmddThhmmss<ffffff>Z.

B8601TM Informat (p. 383) Reads time values that are specified using the ISO 8601 basic notation hhmmss<ffffff>.

B8601TZ Informat (p. 384) Reads time values that are specified using the ISO 8601 basic time notation hhmmss<ffff>+|–hhmm or hhmmss<ffffff>Z.

E8601LZ Informat (p. 386) Reads Coordinated Universal Time (UTC) values that are specified using the ISO 8601 extended notation hh:mm:ss+|–hh:mm.<fffff> or hh:mm:ss.<fffff>Z and converts the values to the local time.

PDJULG Informat (p. 389) Reads packed Julian date values in the hexadecimal form yyyydddF for IBM.

PDJULI Informat (p. 390) Reads packed Julian dates in the hexadecimal format ccyydddF for IBM.

372 Chapter 8 • Dictionary of Informats for SAS Only

Page 379: ) Formats and Informats: Reference - go.documentation.sas.com

Category Language Elements Description

STIMER Informat (p. 393) Reads time values and determines whether the values are hours, minutes, or seconds; reads the output of the STIMER system option.

WEEKU Informat (p. 394) Reads a value in the form of a week-number within the year and returns a SAS date value by using the U algorithm.

WEEKV Informat (p. 396) Reads a value in the form a week-number within a year and returns a SAS date value using the V algorithm.

WEEKW Informat (p. 398) Reads a value in the form of a week-number within the year and returns a SAS date value using the W algorithm.

YMDDTTM Informat (p. 400) Reads datetime values in the form <yy>yy-mm-dd hh:mm:ss.ss, where special characters such as a hyphen (-), period (.), slash (/), or colon (:) are used to separate the year, month, day, hour, minute, and seconds; the year can be either 2 or 4 digits.

ISO 8601 B8601CI Informat (p. 374) Reads an IBM date and time value that includes a century marker, in the form cyymmddhhmmss<fff>.

B8601DA Informat (p. 375) Reads date values that are specified using the ISO 8601 base notation yyyymmdd.

B8601DJ Informat (p. 376) Reads a Java date and time value that is in the form yyyymmddhhmmss<ffffff>.

B8601DN Informat (p. 378) Reads date values that are specified using the ISO 8601 basic notation yyyymmdd and returns SAS datetime values where the time portion of the value is 000000.

B8601DT Informat (p. 379) Reads datetime values that are specified using the ISO 8601 basic notation yyyymmddThhmmss<ffffff>.

B8601DZ Informat (p. 381) Reads Coordinated Universal Time (UTC) datetime values that are specified using the ISO 8601 datetime basic notation yyyymmddThhmmss+|–hhmm or yyyymmddThhmmss<ffffff>Z.

B8601TM Informat (p. 383) Reads time values that are specified using the ISO 8601 basic notation hhmmss<ffffff>.

B8601TZ Informat (p. 384) Reads time values that are specified using the ISO 8601 basic time notation hhmmss<ffff>+|–hhmm or hhmmss<ffffff>Z.

E8601LZ Informat (p. 386) Reads Coordinated Universal Time (UTC) values that are specified using the ISO 8601 extended notation hh:mm:ss+|–hh:mm.<fffff> or hh:mm:ss.<fffff>Z and converts the values to the local time.

Numeric OCTAL Informat (p. 388) Converts positive octal values to integers.

Informats by Category 373

Page 380: ) Formats and Informats: Reference - go.documentation.sas.com

Dictionary

B8601CI InformatReads an IBM date and time value that includes a century marker, in the form cyymmddhhmmss<fff>.

Categories: Date and TimeISO 8601

Alignment: Left

SyntaxB8601CIw.d

Syntax Descriptionw

specifies the width of the input field.

Default 16

Range 10–26

dspecifies the number of digits to the right of the decimal point in the seconds value.

Default 0

Range 0–6

DetailsThe B8601CI informat reads time values that are specified in the IBM time notation cyymmddhhmmss<fff>:

cis a single digit that represents a century:

0 indicates the years 1900–1999.

1 indicates the years 2000–2099.

2 indicates the years 2100–2199.

n indicates the years 00–99 in a century that is determined by performing a calculation on a year greater than 2199. To determine the century marker, subtract 1900 from the year and divide the result by 100. Discard the remainder. The remaining integer is the century marker. For example, to determine the century marker for the year 2382, perform this calculation: (2382–1900)/100=4.82. Discard .82. The century marker is 4.

yyis a two-digit year between 00 and 99.

374 Chapter 8 • Dictionary of Informats for SAS Only

Page 381: ) Formats and Informats: Reference - go.documentation.sas.com

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

fffare optional fractional seconds, with a precision of up to three digits, where each digit is between 0 and 9.

Exampleinput @1 bci b8601ci.;

Date and Time Data Line Result

----+----1----+

January 1, 1900 12:00:00 0000101120000 -1893326400

October 1, 2011 12:15:30.25

111100112153025 1633090530.3

B8601DA InformatReads date values that are specified using the ISO 8601 base notation yyyymmdd.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: ND8601DAw

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.2.1.1, complete representation

SyntaxB8601DAw.

Syntax Descriptionw

specifies the width of the input field.

B8601DA Informat 375

Page 382: ) Formats and Informats: Reference - go.documentation.sas.com

Default 10

Requirement The width of the output field must be 10.

DetailsThe B8601DA informat reads date values that are specified using the ISO 8601 basic date notation yyyymmdd:

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

If the month or day values are omitted, SAS uses a value of 1 for the month or day. If the hour, minute, or second values are omitted, SAS uses a value of 0 for the hour, minute, or second.

Exampleinput @1 bda b8601da.;

Data Line ResultFormatted Using B8601DA Format

----+----1

20120915 19251 20120915

2012 18993 20120101

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

B8601DJ InformatReads a Java date and time value that is in the form yyyymmddhhmmss<ffffff>.

Categories: Date and TimeISO 8601

Alignment: Left

SyntaxB8601DJw.d

376 Chapter 8 • Dictionary of Informats for SAS Only

Page 383: ) Formats and Informats: Reference - go.documentation.sas.com

Syntax Descriptionw

specifies the width of the input field.

Default 16

Range 10–26

dspecifies the number of digits to the right of the decimal point in the seconds value.

Default 0

Range 0–6

DetailsThe B8601DJ informat reads a date and time value that is specified using the Java date and time notation yyyymmddhhmmss<ffffff>:

yyyyis a four-digit year between 0000 and 9999.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

ComparisonsThe B8601DJ informat reads a date and time value that does not include a T to separate the date from the time.

Java date and time values do not include a T. For example, the date January 1, 2011 at 4:30:25 a.m. is written as 20110101043025.

ISO 8601 date and time values include a T. For example, the date January 1, 2011 at 4:30:25 a.m. is written as 20110101T043025.

Exampleinput @1 bdj b8601dj.;

B8601DJ Informat 377

Page 384: ) Formats and Informats: Reference - go.documentation.sas.com

Date and Time Data Line Result

----+----1----+-----

July 31, 2011 2:33:35 p.m. 20110731142335 1627741415

September 1, 2012 7:30:00.33 a.m.

2012090107300033 1662103800.3

B8601DN InformatReads date values that are specified using the ISO 8601 basic notation yyyymmdd and returns SAS datetime values where the time portion of the value is 000000.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: ND8601DNw

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.2.1.1, complete representation

SyntaxB8601DNw.

Syntax Descriptionw

specifies the width of the input field.

Default 10

Requirement The width of the input field must be 10.

DetailsThe B8601DN informat reads date values that are specified using the ISO 8601 basic date notation yyyymmdd and returns the date in a SAS datetime value:

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

378 Chapter 8 • Dictionary of Informats for SAS Only

Page 385: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleinput @1 bdn b8601dn.;

Data Line Result

----+----1

20120915 1663286400

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

B8601DT InformatReads datetime values that are specified using the ISO 8601 basic notation yyyymmddThhmmss<ffffff>.

Categories: Date and TimeISO 8601

Alignment: Left

Aliases: B8601LXw.dND8601DTw.d

Restriction: UTC time zone offset values are not supported.

SyntaxB8601DTw.d

Syntax Descriptionw

specifies the width of the input field.

Default 19

Range 19–26

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Default 0

Range 0–6

DetailsThe B8601DT informat reads datetime values that are specified in the ISO 8601 basic datetime notation yyyymmddThhmmss<ffffff>:

B8601DT Informat 379

Page 386: ) Formats and Informats: Reference - go.documentation.sas.com

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

If the month or day values are omitted, SAS uses a value of 1 for the month or day. If the hour, minute, or second values are omitted, SAS uses a value of 0 for the hour, minute, or second.

Exampleinput @1 bdt b8601dt.;

Data Line ResultFormatted Using B8601DT Format

----+----1

20120915T155300 1663343580 20120915T155300

2012 1640995200 20120101T000000

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

B8601DX InformatAdjusts a Coordinated Universal Time (UTC) datetime value to the user local date and time. Then, reads the local date and time by using the ISO 8601 datetime and time zone basic notation yyyymmddThhmmss+|-hhmm

See: The B8601DXw. informat uses the B8601DZw.d informat to read data. See “B8601DZ Informat” on page 381.

SyntaxB8601DXw.

380 Chapter 8 • Dictionary of Informats for SAS Only

Page 387: ) Formats and Informats: Reference - go.documentation.sas.com

B8601DZ InformatReads Coordinated Universal Time (UTC) datetime values that are specified using the ISO 8601 datetime basic notation yyyymmddThhmmss+|–hhmm or yyyymmddThhmmss<ffffff>Z.

Categories: Date and TimeISO 8601

Alignment: Left

Aliases: B8601DXw.dND8601DZw.d

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.4.1, complete representation

SyntaxB8601DZw.d

Syntax Descriptionw

specifies the width of the input field.

Default 26

Range 20–35

dspecifies the number of digits to the right of the seconds value, which represents a fraction of a second. This argument is optional.

Default 0

Range 0–6

DetailsUTC values specify a time and a time zone based on the zero meridian in Greenwich, England. The B8601DZ informat reads datetime values that are specified in one of the following ISO 8601 basic datetime notations:

• yyyymmddThhmmss+|–hhmm

• yyyymmddThhmmss<ffffff>Z

yyyyis a four-digit year.

mmis a two-digit month (zero padded) between 01 and 12.

ddis a two-digit day of the month (zero padded) between 01 and 31.

B8601DZ Informat 381

Page 388: ) Formats and Informats: Reference - go.documentation.sas.com

hhis a two-digit hour (zero padded) between 00 and 24.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

+|–hhmmis an hour and minute signed offset from zero meridian time. Note that the offset must be +|–hhmm (that is, + or – and four characters).

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +0200 indicates a two-hour time difference to the east of the zero meridian, and –0600 indicates a six–hour time difference to the west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

Zindicates that the time is for zero meridian (Greenwich, England) or +0000 UTC time.

Exampleinput @1 bdz b8601dz.;

Data Line Result

----+----1

20120915T155300+0500 1663325580

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

B8601LX InformatReads datetime values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 basic notation yyyymmddThhmmss+|–hhmm.

See: The B8601LXw.d informat uses the B8601DTw.d informat to read data. See “B8601DT Informat” on page 379.

SyntaxB8601LXw.d

382 Chapter 8 • Dictionary of Informats for SAS Only

Page 389: ) Formats and Informats: Reference - go.documentation.sas.com

B8601TM InformatReads time values that are specified using the ISO 8601 basic notation hhmmss<ffffff>.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: ND8601TMw.d

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Elements 5.3.1.1 and 5.3.1.3, complete representation and representation of decimal fractions

SyntaxB8601TMw.d

Syntax Descriptionw

specifies the width of the input field.

Default 8

Range 6–15

dspecifies the number of digits to the right of the decimal point in the seconds value. This argument is optional.

Default 0

Range 0–6

DetailsThe B8601TM informat reads time values that are specified using the ISO 8601 basic time notation hhmmss<ffffff>:

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

Example

B8601TM Informat 383

Page 390: ) Formats and Informats: Reference - go.documentation.sas.com

input @1 btm b8601tm;

Data Line Result

----+----1

155300 57180

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

B8601TX InformatAdjusts a Coordinated Universal Time (UTC) value to the user local time. Then, reads the local time by using the ISO 8601 basic time notation hhmmss+|–hhmm.

See: The B8601TXw. informat uses the B8601TZw.d informat to read data. See “B8601TZ Informat” on page 384.

SyntaxB8601TXw.

B8601TZ InformatReads time values that are specified using the ISO 8601 basic time notation hhmmss<ffff>+|–hhmm or hhmmss<ffffff>Z.

Categories: Date and TimeISO 8601

Alignment: Left

Aliases: B8601TXw.dND8601TZw.d

Restriction: UTC time zone offset values are not supported.

Supports: ISO 8601 Element 5.3.1.1, complete representation

SyntaxB8601TZw.d

Syntax Descriptionw

specifies the width of the input field.

384 Chapter 8 • Dictionary of Informats for SAS Only

Page 391: ) Formats and Informats: Reference - go.documentation.sas.com

Default 14

Range 9–20

d(optional) specifies the number of digits to the right of the decimal point in the seconds value.

Default 0

Range 0–6

DetailsUTC time values specify a time and a time zone based on the zero meridian in Greenwich, England. The B8601TZ informat reads time values that are specified in the following ISO 8601 basic time notations:

• hhmmss<ffffff>+|–hhmm

• hhmmss<ffffff>Z

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

+|–hh:mmis an hour and minute signed offset from zero meridian time. Note that the offset must be +|–hhmm (that is, + or – and four characters).

Use + for time zones east of the zero meridian, and use – for time zones west of the zero meridian. For example, +0200 indicates a two-hour time difference to the east of the zero meridian, and –0600 indicates a six-hour time difference to the west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

Zindicates that the time is for zero meridian (Greenwich, England) or +0000 UTC time.

When SAS reads a UTC time by using the B8601TZ informat and the adjusted time is greater than 240000 or less than 000000, SAS adjusts the time value so that the time is between 000000 and 240000. For example, if SAS reads the UTC time 234344–0500 using the B8601TZ informat, SAS adds five hours to the time so that the value is 284344, and then makes the time adjustment. The value stored represents the time 044344+0000.

Exampleinput @1 btz b8601tz.;

B8601TZ Informat 385

Page 392: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Result

----+----1

202401-0500 5041

202401Z 73441

202401+0000 73441

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

E8601LX InformatReads datetime values as local time by appending a time zone offset difference between the local time and UTC, using the ISO 8601 extended notation yyyy-mm-ddThh:mm:ss+|-hh:mm.

See: The E8601LXw. informat uses the E8601DTw.d informat to read data. See “E8601DT Informat” on page 300.

SyntaxE8601LXw.

E8601LZ InformatReads Coordinated Universal Time (UTC) values that are specified using the ISO 8601 extended notation hh:mm:ss+|–hh:mm.<fffff> or hh:mm:ss.<fffff>Z and converts the values to the local time.

Categories: Date and TimeISO 8601

Alignment: Left

Alias: IS8601LZw.d

Supports: ISO 8601 Element 5.3.1.1, complete representation

SyntaxE8601LZw.d

Syntax Descriptionw

specifies the width of the input field.

Default 14

386 Chapter 8 • Dictionary of Informats for SAS Only

Page 393: ) Formats and Informats: Reference - go.documentation.sas.com

Range 9–20

Requirement To read a time with the Z time zone indicator, the width of the input field must be 9 if data follows on the same line of data.

dspecifies the number of digits to the right of the decimal point in the value for the lowest-order component. This argument is optional.

Default 0

Range 0–6

DetailsUTC values specify a time and a time zone based on the zero meridian in Greenwich, England. The E8601LZ informat reads UTC time values that are specified in one of the following ISO 8601 extended time notations and returns a SAS time value for the local time:

• hh:mm:ss.<ffffff>+|–hh:mm

• hh:mm:ss.<ffffff>Z

hhis a two-digit hour (zero padded) between 00 and 23.

mmis a two-digit minute (zero padded) between 00 and 59.

ssis a two-digit second (zero padded) between 00 and 59.

ffffffare optional fractional seconds, with a precision of up to six digits, where each digit is between 0 and 9.

+|–hh:mmis an hour and minute signed offset from zero meridian. Note that the offset must be +|–hh:mm (that is, + or – and five characters).

Use the + for time zones east of the zero meridian, and use the – for time zones west of the zero meridian.

Restriction: The shorter form +|–hh is not supported.

Zindicates zero meridian or +00:00 UTC time.

When SAS reads a UTC time by using the E8601LZ informat and the adjusted time is greater than 24:00:00 or less than 00:00:00, SAS adjusts the value so that the time is between 00:00:00 and 24:00:00. For example, if SAS reads the UTC time 23:43:44-05:00 by using the E8601LZ informat, SAS adds five hours to the time so that the value is 28:43:44, and then makes the time adjustment. The value stored represents the time 04:43:44+00:00.

Exampleinput elz e8601lz.;

E8601LZ Informat 387

Page 394: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line Result

----+----1----+

09:13:21+02:00 26001

23:43:44Z 85424

See Also“Reading Dates and Times By Using the ISO 860 Basic and Extended Notations” on page 243

E8601TX InformatAdjusts a Coordinated Universal Time (UTC) value to the user local time. Then, reads the local time by using the ISO 8601 extended time notation hh:mm:ss+|-hh:mm.

See: The E8601TXw. informat uses the E8601TZw.d informat to read data. See “E8601DZ Informat” on page 302.

SyntaxE8601TXw.

OCTAL InformatConverts positive octal values to integers.

Category: Numeric

SyntaxOCTALw.d

Syntax Descriptionw

specifies the width of the input field.

Default 3

Range 1–24

dspecifies the power of 10 by which to divide the value. This argument is optional.

Range 1–31

Restriction must be greater than or equal to the w value.

388 Chapter 8 • Dictionary of Informats for SAS Only

Page 395: ) Formats and Informats: Reference - go.documentation.sas.com

DetailsUse only the digits 0 through 7 in the input, with no embedded blanks. The OCTALw.d informat ignores leading and trailing blanks.

OCTALw.d cannot read negative values. It treats all input values as positive (unsigned).

Exampleinput @1 value octal3.1;

Data Line Result

----+----1

177 12.7

PDJULG InformatReads packed Julian date values in the hexadecimal form yyyydddF for IBM.

Category: Date and Time

SyntaxPDJULGw.

Syntax Descriptionw

specifies the width of the input field.

Default 4

Range 4

DetailsThe PDJULGw. informat reads IBM packed Julian date values in the form of yyyydddF:

yyyyis the two-byte representation of the four-digit Gregorian year.

dddis the one-and-a-half byte representation of the three-digit integer that corresponds to the Julian day of the year, 1–365 (or 1–366 for leap years).

Fis the half byte that contains all binary 1s, which assigns the value as positive.

Note: SAS interprets a two-digit year as belonging to the 100-year span that is defined by the YEARCUTOFF= system option.

PDJULG Informat 389

Page 396: ) Formats and Informats: Reference - go.documentation.sas.com

Exampleinput date pdjulg4.;

Data Line Result *

----+----1

2012003F 18995

* SAS date value 18995 represents January 3, 2012.

See Also

Formats:

• “JULDAY Format” on page 188

• “JULIAN Format” on page 80

• “PDJULG Format” on page 191

• “PDJULI Format” on page 193

Functions:

• “DATEJUL Function” in SAS Viya Functions and CALL Routines: Reference

• “JULDATE Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “JULIAN Informat” on page 315

• “PDJULI Informat” on page 390

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

PDJULI InformatReads packed Julian dates in the hexadecimal format ccyydddF for IBM.

Category: Date and Time

SyntaxPDJULIw.

Syntax Descriptionw

specifies the width of the input field.

Default 4

390 Chapter 8 • Dictionary of Informats for SAS Only

Page 397: ) Formats and Informats: Reference - go.documentation.sas.com

Range 4

DetailsThe PDJULIw. informat reads IBM packed Julian date values in the form ccyydddF:

cc is the one-byte representation of a two-digit integer that represents the century.

yy is the one-byte representation of a two-digit integer that represents the year. The PDJULIw informat makes an adjustment to the one-byte century representation by adding 1900 to the two-byte ccyy value in order to produce the correct four–digit Gregorian year. This adjustment causes ccyy values of 0098 to become 1998, 0101 to become 2001, and 0218 to become 2118.

ddd is the one-and-a-half bytes representation of the three-digit integer that corresponds to the Julian day of the year, 1–365 (or 1–366 for leap years).

Fis the half byte that contains all binary 1s, which assigns the value as positive.

Exampleinput date pdjuli4.;

Data Line Result *

----+----1

0099001F 14245

0112015F 19007

* SAS date value 14245 is January 1, 1999. SAS date value 19007 is January 15, 2012.

See Also

Formats:

• “JULDAY Format” on page 188

• “JULIAN Format” on page 80

• “PDJULG Format” on page 191

• “PDJULI Format” on page 193

Functions:

• “DATEJUL Function” in SAS Viya Functions and CALL Routines: Reference

• “JULDATE Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “JULIAN Informat” on page 315

PDJULI Informat 391

Page 398: ) Formats and Informats: Reference - go.documentation.sas.com

• “PDJULG Informat” on page 389

System Options:

• “YEARCUTOFF= System Option” in SAS Viya System Options: Reference

ROW InformatReads a column-binary field down a card column.

Category: Column Binary

SyntaxROWw.d

Syntax Descriptionw

specifies the row where the field begins.

Range 0–12

dspecifies the length in rows of the field.

Default 1

Range 1–25

DetailsColumn-binary data storage compresses data so that more than 80 items of data can be stored on a single “virtual” punch card.

The ROWw.d informat assigns the relative position of the punch in the field to a numeric variable.

If the field that you specify has more than one punch, then ROWw.d assigns the variable a missing value and sets the automatic variable _ERROR_ to 1. If the field has no punches, then ROWw.d assigns the variable a missing value.

ROWw.d can read fields across columns, continuing with row 12 of the new column and going down through the rest of the rows. After ROWw.d reads a field, the pointer moves to the next row.

Exampleinput x row5.3 input x row7.1 input x row5.2 input x row3.5

392 Chapter 8 • Dictionary of Informats for SAS Only

Page 399: ) Formats and Informats: Reference - go.documentation.sas.com

Data Line * Result

----+----1

00

04 3

1

.

5

* The data line is a hexadecimal representation of the column binary. The “virtual” punch card column for the example data has row 7 punched. The binary representation is 0000 0000 0000 0100.

See Also

Informats:

• “$CB Informat” on page 263

• “CB Informat” on page 290

• “PUNCH Informat” on page 331

STIMER InformatReads time values and determines whether the values are hours, minutes, or seconds; reads the output of the STIMER system option.

Category: Date and Time

SyntaxSTIMERw.

Syntax Descriptionw

specifies the width of the input field.

DetailsThe STIMER informat reads performance statistics that the STIMER system option writes to the SAS log.

The informat reads time values and determines whether the values are hours, minutes, or seconds based on the presence of decimal points and colons:

• If no colon is present, the value is the number of seconds.

• If a single colon is present, the value before the colon is the number of minutes. The value after the colon is the number of seconds.

STIMER Informat 393

Page 400: ) Formats and Informats: Reference - go.documentation.sas.com

• If two colons are present, the sequence of time is hours, minutes, and then seconds.

In all cases, the result is a SAS time value.

The input values for STIMER must be in one of the following forms:

• ss

• ss.ss

• mm:ss

• mm:ss.ss

• hh:mm:ss

• hh:mm:ss.ss

ssis an integer that represents the number of seconds.

mmis an integer that represents the number of minutes.

hhis an integer that represents the number of hours.

WEEKU InformatReads a value in the form of a week-number within the year and returns a SAS date value by using the U algorithm.

Category: Date and Time

SyntaxWEEKUw.

Syntax Descriptionw

specifies the width of the input field.

Default 11

Range 3–200

DetailsThe WEEKUw. informat reads the week-number value within the year, and then returns a SAS date value by using the U algorithm. If the input does not contain a year expression, then WEEKUw. uses the current year as the year expression, which is the default. If the input does not contain a day expression, then WEEKUw. uses the first day of the week as the day expression, which is the default.

The U Algorithm calculates the SAS date value using the number-of-week value within the year (Sunday is considered the first day of the week). The number-of-week value is represented as a decimal number in the range 0–53, with a leading zero and maximum value of 53. For example, the fifth week of the year would be represented as 05.

394 Chapter 8 • Dictionary of Informats for SAS Only

Page 401: ) Formats and Informats: Reference - go.documentation.sas.com

The inputs to the WEEKUw. informat are the same date for the following example. The current year is 2012.

Widths Formats Examples

3-4 Www w01

5-6 yyWww 12W01

7-8 yyWwwdd 12W0101

9-10 yyyyWwwdd 2012W0101

11-200 yyyy-Www-dd 2012-W01-01

ComparisonsThe WEEKUw. informat reads the week-number value as a decimal number in the range 0–53, with Sunday as the first day of the week.

The WEEKVw. informat reads the number-of-week value as a decimal number in the range 01–53, with Monday as the first day of the week. Week one of the year is the week that includes both January fourth and the first Thursday of the year. If the first Monday of January is the second, third, or fourth, the preceding days are part of the last week of the preceding year.

The WEEKWw. informat reads the week-number value as a decimal number in the range 00–53, with Monday as the first day of week.

ExampleThe current year is 2012 in the following examples.

Statements Result

----+----1

v=input('W01',weeku3.);w=input('03W01',weeku5.);x=input('03W0101',weeku7.);y=input('2003W0101',weeku9.);z=input('2003-W01-01',weeku11.);put v;put w;put x;put y;put z;

1899318993189931899318993

See Also

Formats:

• “WEEKU Format” on page 110

WEEKU Informat 395

Page 402: ) Formats and Informats: Reference - go.documentation.sas.com

• “WEEKV Format” on page 111

• “WEEKW Format” on page 113

Functions:

• “WEEK Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “WEEKV Informat” on page 396

• “WEEKW Informat” on page 398

WEEKV InformatReads a value in the form a week-number within a year and returns a SAS date value using the V algorithm.

Category: Date and Time

SyntaxWEEKVw.

Syntax Descriptionw

specifies the width of the input field.

Default 11

Range 3–200

DetailsThe WEEKVw. informat reads the week-number value within a year. If the input does not contain a year expression, WEEKVw. uses the current year as the year expression, which is the default. If the input does not contain a day expression, WEEKVw. uses the first day of the week as the day expression, which is the default.

The V algorithm calculates the SAS date value. The number-of-week value is represented as a decimal number in the range 01–53, with a leading zero and a maximum value of 53. Weeks begin on a Monday, and week 1 of the year is the week that includes January 4 and the first Thursday of the year. If the first Monday of January is 2, 3, or 4, the preceding days are part of the last week of the preceding year. For example, the fifth week of the year would be represented as 06.

The inputs to the WEEKVw. informat are the same date for the following example. The current year is 2012.

Width Format Example

3-4 Www w01

396 Chapter 8 • Dictionary of Informats for SAS Only

Page 403: ) Formats and Informats: Reference - go.documentation.sas.com

Width Format Example

5-6 yyWww 12W01

7-8 yyWwwdd 12W0101

9-10 yyyyWwwdd 2012W0101

11-200 yyyy-Www-dd 2012-W01-01

ComparisonsThe WEEKVw. informat reads the week-number value as a decimal number in the range 01–53, with Monday as the first day of the week. Week 1 of the year is the week that includes January 4 and the first Thursday of the year. If the first Monday of January is 2, 3, or 4, the preceding days are part of the last week of the preceding year.

The WEEKUw. informat reads the week-number value as a decimal number in the range 0–53, with Sunday as the first day of the week.

The WEEKWw. informat reads the week-number-of-year value as a decimal number in the range 00–53, with Monday as the first day of week.

ExampleThe current year is 2012 in the following examples.

Statement Result

----+----1

v=input('W01',weekv3.);w=input('03W01',weekv5.);x=input('03W0101',weekv7.);y=input('2003W0101',weekv9.);z=input('2003-W01-01',weekv11.);put v;put w;put x;put y;put z;

1899418994189941899418994

See Also

Formats:

• “WEEKU Format” on page 110

• “WEEKV Format” on page 111

• “WEEKW Format” on page 113

Functions:

WEEKV Informat 397

Page 404: ) Formats and Informats: Reference - go.documentation.sas.com

• “WEEK Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “WEEKU Informat” on page 394

• “WEEKW Informat” on page 398

WEEKW InformatReads a value in the form of a week-number within the year and returns a SAS date value using the W algorithm.

Category: Date and Time

SyntaxWEEKWw.

Syntax Descriptionw

specifies the width of the input field.

Default 11

Range 3–200

DetailsThe WEEKWw. informat reads the week-number value within the year. If the input does not contain a year expression, the WEEKWw. informat uses the current year as the year expression, which is the default. If the input does not contain a day expression, the WEEKWw. informat uses the first day of the week as the day expression, which is the default. Algorithm W calculates the SAS date value using the number of the week within the year (Monday is considered the first day of the week). The number-of-week value is represented as a decimal number in the range 0–53, with a leading zero and maximum value of 53. For example, the fifth week of the year would be represented as 05.

The inputs to the WEEKWw. informat are the same date for the following example. The current year is 2012.

Widths Formats Examples

3-4 Www w01

5-6 yyWww 12W01

7-8 yyWwwdd 12W0101

9-10 yyyyWwwdd 2012W0101

11-200 yyyy-Www-dd 2012-W01-01

398 Chapter 8 • Dictionary of Informats for SAS Only

Page 405: ) Formats and Informats: Reference - go.documentation.sas.com

ComparisonsThe WEEKWw. informat reads the week-number value as a decimal number in the range 00–53, with Monday as the first day of week.

The WEEKUw. informat reads the week-number value as a decimal number in the range 00–53, with Sunday as the first day of the week.

The WEEKVw. informat reads the week-number value as a decimal number in the range 01–53, with Monday as the first day of the week. Week one of the year is the week that includes both January fourth and the first Thursday of the year. If the first Monday of January is the second, third, or fourth, the preceding days are part of the last week of the preceding year.

ExampleThe current year is 2012 in the following examples.

Statements Result

----+----1

v=input('W01',weekw3.);w=input('03W01',weekw5.);x=input('03W0101',weekw7.);y=input('2003W0101',weekw9.);z=input('2003-W01-01',weekw11.);put v;put w;put x;put y;put z;

1899418994189941899418994

See Also

Formats:

• “WEEKU Format” on page 110

• “WEEKV Format” on page 111

• “WEEKW Format” on page 113

Function:

• “WEEK Function” in SAS Viya Functions and CALL Routines: Reference

Informats:

• “WEEKU Informat” on page 394

• “WEEKV Informat” on page 396

WEEKW Informat 399

Page 406: ) Formats and Informats: Reference - go.documentation.sas.com

YMDDTTM InformatReads datetime values in the form <yy>yy-mm-dd hh:mm:ss.ss, where special characters such as a hyphen (-), period (.), slash (/), or colon (:) are used to separate the year, month, day, hour, minute, and seconds; the year can be either 2 or 4 digits.

Category: Date and Time

Alignment: Right

SyntaxYMDDTTMw.d

Syntax Descriptionw

specifies the width of the output field.

Default 19

Range 13−40

dspecifies the number of digits to the right of the decimal point in the seconds value. The digits to the right of the decimal point specify a fraction of a second. This argument is optional.

Default 0

Range 0−39

DetailsThe YMDDTTMw.d format reads SAS datetime values in the form <yy>yy-mm-dd hh:mm:<ss<.ss>>:

yy or yyyyspecifies a two- or four-digit integer that represents the year.

mmis an integer between 01 and 12 that represents the month.

ddis an integer between 01 and 31 that represents the day of the month.

hhis an integer between 00 and 23 that represents hours.

mmis an integer between 00 and 59 that represents minutes.

ss.ssis the number of seconds ranging from 00–59 with the fraction of a second following the decimal point.

400 Chapter 8 • Dictionary of Informats for SAS Only

Page 407: ) Formats and Informats: Reference - go.documentation.sas.com

requirement If a fraction of a second is specified, the decimal point can be represented only by a period and is required.

- or :represents one of several special characters, such as the slash (/), hyphen (-), colon (:), or a blank character that can be used to separate date and time components. Special characters can be used as separators between any date or time component and between the date and the time.

ComparisonsThe YMDDTTMw.d informat reads datetime values with required separators in the form <yy>yy-mm-dd/hh:mm:ss.ss.

The MDYAMPMw.d in format reads datetime values with optional separators in the form mm-dd-yy<yy> hh:mm:ss.ss AM | PM, and requires a space between the date and the time.

The DATETIMEw.d informat reads datetime values with optional separators in the form dd-mmm-yy<yy> hh:mm:ss.ss AM|PM, and the date and time can be separated by a special character.

Exampleinput @1 dt ymddttm24.;

Data Line Result

2012-03-16 11:23:07.4 1647516187.4

2012 03 16 11 23 07.4 1647516187.4

12.3.16/11:23 1647516180

See Also

Informats:

• “DATETIME Informat” on page 295

• “MDYAMPM Informat” on page 316

YMDDTTM Informat 401

Page 408: ) Formats and Informats: Reference - go.documentation.sas.com

402 Chapter 8 • Dictionary of Informats for SAS Only

Page 409: ) Formats and Informats: Reference - go.documentation.sas.com

Recommended Reading

Here is the recommended reading list for this title:

• An Array of Challenges--Test Your SAS Skills

• Base SAS Glossary

• SAS Viya Utility Procedures Guide

• Batch and Line Mode Processing in SAS Viya

• The Little SAS Book, A Primer, Fifth Edition

• SAS Viya National Language Support (NLS): Reference Guide

• The SAS Workbook

For a complete list of SAS publications, go to sas.com/store/books. If you have questions about which titles you need, please contact a SAS Representative:

SAS BooksSAS Campus DriveCary, NC 27513-2414Phone: 1-800-727-0025Fax: 1-919-677-4444Email: [email protected] address: sas.com/store/books

403

Page 410: ) Formats and Informats: Reference - go.documentation.sas.com

404 Recommended Reading

Page 411: ) Formats and Informats: Reference - go.documentation.sas.com

Index

Special Characters$ASCIIw. format 139$ASCIIw. informat 260$BASE64Xw. format 37$BASE64Xw. informat 261$BINARYw. format 38$BINARYw. informat 262$CBw. informat 263$CHARw. format 39$CHARw. informat 264

compared to $ASCII informat 260compared to $CHARZBw. informat

266compared to $EBCDICw. informat 267compared to $w. informat 278

$CHARZBw. informat 265$EBCDICw. format 143$EBCDICw. informat 266

compared to S370FFw.d informat 337$Fw. format 46$Fw. informat 278$HEXw. format 40$HEXw. informat 267

compared to $BINARYw. informat 262$MSGCASEw. format 144$N8601BAw.d format 146$N8601Bw.d format 145$N8601Bw.d informat 268$N8601EAw.d format 149$N8601EHw.d format 150$N8601Ew.d format 147$N8601Ew.d informat 270$N8601EXw.d format 151$N8601Hw.d format 153$N8601Xw.d format 154$OCTALw. format 41$OCTALw. informat 272$PHEXw. informat 273$QUOTEw. format 42$QUOTEw. informat 274$REVERJw. format 43$REVERSw. format 44$UPCASEw. format 45$UPCASEw. informat 275

$VARYINGw. format 155$VARYINGw. informat 276$w. format 46$w. informat 278

compared to $CHARw. informat 264%SYSFUNC function

specifying formats with 5

AAM or PM

datetime values with 54, 316time values with 100

ANYDTDTEw. informat 279ANYDTDTMw. informat 281ANYDTTMEw. informat 285ASCII

converting character data to 139ASCII data

converting character data to, Base 64 encoding 37, 261

converting to native format 260ATTRIB statement

specifying formats with 6specifying informats with 236

BB8601CI informat 374B8601DAw. format 157B8601DAw. informat 375B8601DJ informat 376B8601DNw. format 158B8601DNw. informat 378B8601DTw.d format 159B8601DTw.d informat 379B8601DXw. format 161B8601DXw. informat

See B8601DZw.d informatB8601DXw.d informat 381B8601DZw. format 162B8601DZw.d informat 381B8601LXw. format 164B8601LXw. informat

405

Page 412: ) Formats and Informats: Reference - go.documentation.sas.com

See B8601DTw.d informatB8601LXw.d informat 379B8601LZw. format 165B8601TMw.d format 166B8601TMw.d informat 383B8601TXw. format 168B8601TXw. informat

See B8601TZw.d informatB8601TXw.d informat 384B8601TZw.d format 169B8601TZw.d informat 384Base 64 encoding

converting character data to ASCII text37, 261

BASE64X 261BESTDOTXw. format 50BESTDw.p format 48BESTw. format 46BESTw.d informat 361big endian platforms

byte ordering 8big endian platforms, byte ordering on

237binary

converting character data to 38converting numeric values to 51

binary data, converting tocharacter 262integers 287

binary zeros, converting to blanks 265BINARYw. format 51BINARYw.d informat 287bits, extracting 288BITSw.d informat 288blanks

converting binary zeros to 265converting to zeros 289

byte ordering 8, 237BZw.d informat 289

compared to w.d informat 362

CCBw.d informat 290character data

converting to ASCII 139converting to ASCII text, Base 64

encoding 37, 261converting to binary 38converting to EBCDIC 143converting to hexadecimal 40converting to octal 41reverse order, left alignment 44reverse order, preserving blanks 43uppercase conversion 45varying length 155

writing 39, 46writing in uppercase 144

character data, readingfrom column-binary files 263standard format 278varying length fields 276with blanks 263

column-binary data, readingdown a column 392punch-card code 331

column-binary files, reading 263column-binary, reading

with blanks 264commas

in numeric values 52, 53replacing decimal points with 189

COMMAw.d format 52COMMAw.d informat 291

compared to COMMAXw.d informat293

COMMAXw.d format 53COMMAXw.d informat 292

compared to COMMAw.d informat 292

Ddata conversion

formats and 9data values, reading 233date and time informats

B8601DN informat, ISO 8601 basic date notation, returns the date in a datetime value 378

B8601DT informat, ISO 8601 basic datetime notation, no time zone 379

reading IBM dates and times 374reading Java dates and times 376

date and time valuesSHR records 352

date valuesas day of month 58B8601DA format, ISO 8601 basic

notation 157B8601DA informat, ISO 8601 basic

notation 375DATEw. format 141day-of-week name 64DDMMYYw. format 58DDMMYYxw. format 60DTDATEw. format 65E8601DA format, ISO 8601 extended

notation 171E8601DA informat, extended notation

298

406 Index

Page 413: ) Formats and Informats: Reference - go.documentation.sas.com

E8601DN informat, ISO 8601 extended notation, returns date in datetime value 299

extracting from informat values 279Julian dates 80Julian day of the year 188MMDDYYw. format 82MMDDYYxw. format 84MMYYw. format 88MMYYxw. format 89month name 91month of the year 92MONYYw. format 92quarter of the year 96quarter of the year in Roman numerals

97WEEKDATEw. format 106WEEKDATXw. format 107WEEKDAYw. format 109WORDDATEw. format 221WORDDATXw. format 223YEARw. format 115YYMMDDw. format 117YYMMDDxw. format 119YYMMw. format 116YYMMxw. format 226YYMONw. format 121YYQRw. format 125YYQRxw. format 126YYQw. format 122YYQxw. format 123

date/time values, readingdate values, dddmmmyy 293date values, dddmmmyy hh:mm:ss.ss

295date values, dddmmmyyyy 293date values, dddmmmyyyy hh:mm:ss.ss

295date values, ddmmyy 296date values, ddmmyyyy 296date, yymm 364date, yymmn 364dates, mmddyy 318dates, mmddyyyy 318dates, yymmmdd 362dates, yyyymmmdd 362IBM mainframes 325IBM mainframes, RMF records 334IBM mainframes, SMF records 353Julian dates 315month and year values 319RMF records 325SMF records 325TIME MIC values 321time values, IBM mainframe 321time-of-day stamp 356

time, hh:mm:ss.ss 354timer units 358year quarter 365

DATEAMPMw.d format 54datetime values

$N8601EA format, ISO 8601 extended notation 149

datetime formatsISO 8601 extended datetime with no

time zone 173ISO 8601 extended datetime, with time

zone 176datetime informats

B8601DZ informat, ISO 8601 basic notation with time zone 381

datetime values$N8601 informat, ISO 8601 basic and

extended notation 268$N8601B format, basic notation 145$N8601BA format, ISO 8601 basic

notation 146$N8601E format, extended notation

147$N8601E informat, extended notation

270$N8601EH format, ISO 8601 extended

notation, hyphen for omitted components 150

$N8601EX format, extended notation, x for omitted components 151

$N8601H format, basic notation, hyphen for omitted componentents153

$N8601X format, x for omitted components 154

B8601DN format, ISO 8601 basic datetime notation, formats the date158

B8601DT format, ISO 8601 basic notation, no time zone 159, 161, 164

B8601DZ format, ISO 8601 basic notation with time zone 162

B8601TX format, ISO 8601 basic notation, time zone offset 168

DATEAMPMw.d format 54DATETIMEw.d format 56DTDATEw. format 65DTMONYYw. format 66DTWKDATXw. format 68DTYEARw. format 69DTYYQCw. format 70E8601DN format, ISO 8601 extended,

formats the date 172E8601DT format, ISO 8601 basic

notation, no time zone 174, 177

Index 407

Page 414: ) Formats and Informats: Reference - go.documentation.sas.com

E8601DT informat, ISO 8601 extended, notation, no time zone 300

E8601DZ informat, ISO 8601 extended notation with time zone 302

E8601LZ informat, ISO 8601 extended local notation with time zone 386

E8601TX format, ISO 8601 basic notation, time zone offset 182

extracting from informat values 281with AM or PM 54

datetime vlauesYMDDTTMw.d informat 400

DATETIMEw. informat 295DATETIMEw.d format 56DATEw. format 141DATEw. informat 293DAYw. format 58DDMMYYw. format 58DDMMYYw. informat 296DDMMYYxw. format 60DEC format

integer binary (fixed-point) values in186

positive integer binary (fixed-point) values in 198

reading integer binary values in 312reading positive integer binary values in

328decimal places

aligned 48, 140decimal points

replacing with commas 189decimal points, reading as commas 322DOLLARw.d format 62DOLLARw.d informat 291DOLLARXw.d format 63DOLLARXw.d informat 292double quotation marks

data values in 42DOWNAMEw. format 64DTDATEw. format 65DTMONYYw. format 66DTWKDATXw. format 68DTYEARw. format 69DTYYQCw. format 70duation values

$N8601 informat, ISO 8601 basic and extended notation 268

duration values$N8601B format, basic notation 145$N8601BA format, ISO 8601 basic

notation 146$N8601E format, extended notation

147$N8601E informat, extended notation

270

$N8601EA format, ISO 8601 extended notation 149

$N8601EH format, ISO 8601 extended notation, hyphen for omitted components 150

$N8601EX formats, extended notation, x for omitted components 151

$N8601H format, basic notation, hyphen for omitted componentents153

$N8601X format, x for omitted components 154

Dw.d informat 361Dw.p format 140

EE8601DAw. format 171E8601DAw. informat 298E8601DNw. format 172E8601DNw. informat 299E8601DTw.d format 173E8601DTw.d informat 300E8601DXw. format 174E8601DXw. informat

See E8601DZw.d informatE8601DXw.d informat 302E8601DZw. format 176E8601DZw.d informat 302E8601LXw. format 177E8601LXw. informat

See E8601DTw.d informatE8601LXw.d informat 300E8601LZw. format 179E8601LZw.d informat 386E8601TMw.d format 180E8601TMw.d informat 304E8601TXw. format 182E8601TXw. informat

See E8601TZw.d informatE8601TXw.d informat 305E8601TZw.d format 183E8601TZw.d informat 305EBCDIC

converting character data to 143numeric data in 204

EBCDIC dataconvert to native format 266reading 336

embedded characters, removing 291, 292encoding

formats and 9Ew. format 71Ew.d informat 361

408 Index

Page 415: ) Formats and Informats: Reference - go.documentation.sas.com

Ffixed-point values

DEC format 186, 198Intel format 186, 198reading in Intel and DEC formats 312,

328writing 185, 197

floating-point data (IEEE), reading 313floating-point data, reading 307floating-point values 72

IEEE 78FLOATw.d format 72FLOATw.d informat 307FORMAT statement

specifying formats with 6formats 4

byte ordering and 8data conversions 9encodings 9integer binary notation 9packed decimal data 10permanent 6specifying with %SYSFUNC function

5specifying with ATTRIB statement 6specifying with FORMAT statement 6specifying with PUT function 5specifying with PUT statement 5syntax 4temporary 6user-defined 7zoned decimal data 10

formatting symbolsISO 8601 14, 243

fractions 73, 224FRACTw. format 73Fw.d format 105Fw.d informat 361

HHEX 40hexadecimal

converting character data to 40converting real binary (floating-point)

values to 74packed Julian dates in 191packed Julian dates in, for IBM 193

hexadecimal binary values, converting to integers 308

hexadecimal binary values, converting to real binary 308

hexadecimal data, converting to character267

hexadecimal values

reading packed Julian date values in, for IBM 389

reading packed Julian dates in, for IBM390

HEXw. format 74HEXw. informat 308

compared to $HEXw. informat 268HHMMSSw. informat 309HHMMw.d format 75HOURw.d format 77

IIBM

packed Julian dates in hexadecimal for193

IBM dates and times, reading 374, 376IBM mainframe format

integer binary (fixed-point) values in205

numeric data in 204packed decimal data in 208positive integer binary (fixed-point)

values in 210real binary (floating-point) data in 212unsigned integer binary (fixed-point)

values in 206unsigned packed decimal data in 209unsigned zoned decimal data in 218zoned decimal data 213zoned decimal leading-sign data in 214zoned decimal separate leading-sign

data in 215zoned decimal separate trailing-sign

data in 216IBM packed decimal data, reading 323IBRw.d format 186IBRw.d informat 312IBw.d format 185IBw.d informat 311

compared to S370FIBw.d informat 338IEEE floating-point values 78

reading 313IEEEw.d format 78IEEEw.d informat 313INFORMAT statement

specifying informats with 235informats 233

byte ordering 237integer binary notation 238packed decimal data and 12permanent 236specifying, with ATTRIB statement 236specifying, with INFORMAT statement

235specifying, with INPUT function 235

Index 409

Page 416: ) Formats and Informats: Reference - go.documentation.sas.com

specifying, with INPUT statement 235syntax 234temporary 236user-defined 236zoned decimal data and 12

INPUT functionspecifying informats with 235

INPUT statementspecifying informats with 235

integer binary (fixed-point) valuesIBM mainframe format 205

integer binary databyte ordering 8notation and programming languages 9

integer binary data, readingIBM mainframe format 337, 342

integer binary notation 238integer binary values

DEC format 186Intel format 186reading in Intel and DEC formats 312writing 185

integer binary values, reading 311, 326integers

printing without decimals 48Intel format

integer binary (fixed-point) values in186

positive integer binary (fixed-point) values in 198

reading integer binary values in 312reading positive integer binary values in

328interval values

$N8601BA format, ISO 8601 basic notation 146

$N8601EA format, ISO 8601 extended notation 149

$N8601EX formats, extended notation, x for omitted components 151

$N8601H format, basic notation, hyphen for omitted componentents153

interval values$N8601 informat, ISO 8601 basic and

extended notation 268$N8601B format, basic notation 145$N8601E format, extended notation

147$N8601E informat, extended notation

270$N8601EH format, ISO 8601 extended

notation, hyphen for omitted components 150

$N8601X format, x for omitted components 154

IS8601DAw. format 171IS8601DAw. informat 298IS8601DNw. informat 299IS8601DTw.d format 173IS8601DTw.d informat 300IS8601DZw. format 176IS8601DZw.d informat 302IS8601LZw. format 179IS8601LZw.d informat 386IS8601TMw.d format 180IS8601TMw.d informat 304IS8601TZw.d format 183IS8601TZw.d informat 305ISO 8601 date and time formats

B8601DA format, basic date notation157

B8601DN format, basic datetime notation, formats the date 158

B8601DT format, basic datetime notation, no time zone 159

B8601DX format, basic datetime notation, time zone offset 161

B8601DZ format, basic datetime notation with time zone 162

B8601LX format, basic datetime notation, time zone offset 164

B8601LZ format, basic local time with time zone 165

B8601TM format, basic time notation, no time zone 166

B8601TX format, basic time notation, time zone offset 168

B8601TZ format, basic time notation with time zone 169

E8601DA format, extended date notation 171

E8601DN format, extended datetime notation, formats the date 172

E8601DX format, basic datetime notation, time zone offset 174

E8601LX format, basic datetime notation, time zone offset 177

E8601TM format, extended time notation, no time zone 180

E8601TX format, basic time notation, time zone offset 182

E8601TZ format, extended time notation with time zone 183

extended datetime, with time zone 176extended local time with UTC offset

179ISO 8601 date and time informats

$N8601 informat, basic and extended notation for durations, datetimes, and intervals 268

410 Index

Page 417: ) Formats and Informats: Reference - go.documentation.sas.com

$N8601E informat, extended notation for duration, datetime, and interval270

B8601DA informat, basic date notation375

B8601DN informat, basic datetime notation, returns the date in a datetime value 378

B8601DZ informat, basic datetime notation with time zone 381

B8601TM informat, basic time notation, no time zone 383

B8601TZ informat, basic time notation with time zone 384

E8601DA informat, extended date notation 298

E8601DN informat, extended notation, returns date in datetime value 299

E8601DT informat, basic datetime notation, no time zone 379

E8601DT informat, extended datetime notation, no time zone 300

E8601DZ informat, extended datetime notation with time zone 302

E8601LZ informat, extended local datetime notation with time zone386

E8601TM informat, extended time notation, no time zone 304

E8601TZ informat, extended time notation with time zone 305

ISO 8601 datetime formatsextended datetime with no time zone

173ISO 8601 duration and datetime formats

$N8601B format, basic notation 145$N8601BA format, basic notation 146$N8601E format, extended notation

147$N8601EA format, extended notation

149$N8601EH format, extended notation,

hyphen for omitted components 150$N8601H format, hyphen for omitted

componentents 153$N8601X format, x for omitted

components 154ISO 8601 formatting symbols 14, 243ISO 8602 duration and datetime formats

$N8601EX formats, extended notation, x for omitted components 151

JJava dates and times, reading 376JULDAYw. format 188

Julian date values, packedreading in hexadecimal form, for IBM

389Julian dates 80, 240

day of the year 188packed 11packed values in hexadecimal 191packed values in hexadecimal for IBM

193Julian dates, packed

reading in hexadecimal format, for IBM390

JULIANw. format 80JULIANw. informat 315

Lleading zeros 128little endian platforms

byte ordering 8little endian platforms, byte ordering on

237

MMDYAMPMw.d format 81MDYAMPMw.d informat 316MicroFocus COBOL

zoned numeric data 359MicroFocus Cobol zoned numeric data

220minus sign

trailing 357MMDDYYw. format 82MMDDYYw. informat 318MMDDYYxw. format 84MMSSw.d format 86MMYYw. format 88MMYYxw. format 89MONNAMEw. format 91MONTHw. format 92MONYYw. format 92MONYYw. informat 319MSECw. informat 321

NN8601B 145N8601E 147N8601EH 150ND8601DAw. informat 375ND8601DNw. informat 378ND8601DTw.d informat 379ND8601DZw.d informat 381ND8601TMw.d informat 383ND8601TZw.d informat 384

Index 411

Page 418: ) Formats and Informats: Reference - go.documentation.sas.com

negative numeric valueswriting in parentheses 94

NEGPARENw.d format 94nibble 239

definition 10numeric data

commas replacing decimal points 189EBCIDC format 204IBM mainframe format 204leading zeros with 128one digit per byte 105scientific notation 71zoned decimal format 227

numeric data, readingcommas for decimal points 322from column-binary files 290standard format 361

numeric valuesaligning decimal places 48, 140best notation 46commas in 52, 53converting to binary 51converting to fractions 73converting to octal 95DOLLARw.d format 62DOLLARXw.d format 63Roman numerals 97words with numeric fractions 224writing as percentages 194writing as words 225writing negative values in parentheses

94NUMXw.d format 189NUMXw.d informat 322

Ooctal

converting character data to 41converting numeric values to 95

octal dataconverting to character 272converting to integers 388

OCTALw. format 95OCTALw. informat

compared to $OCTALw. informat 273OCTALw.d informat 388

Pp-values

writing 201packed data, reading in IBM mainframe

format 340packed decimal data 10, 240

defined 239

definition 10formats and 10formats and informats for 242IBM mainframe format 208languages supporting 12, 241platforms supporting 11, 241summary of formats and informats 12unsigned format 200

packed decimal formatwriting data in 190

packed hexadecimal data, converting to character 273

packed Julian date valuesreading in hexadecimal form, for IBM

389writing in hexadecimal 191writing in hexadecimal for IBM 193

packed Julian dates 11, 240reading in hexadecimal format, for IBM

390parentheses

writing negative numeric values in 94PDJULGw. format 191PDJULGw. informat 389PDJULIw. format 193PDJULIw. informat 390PDTIMEw. informat 325

compared to RMFSTAMPw. informat335

PDw.d format 190PDw.d informat 323

compared to $PHEXw. informat 274compared to PKw.d informat 330compared to S370FPDw.d informat 341

percentagesconverting to numeric values 326numeric values as 194with minus sign for negative values 195

PERCENTNw.d format 195PERCENTw.d format 194PERCENTw.d informat 326permanent formats 6PIBRw.d format 198PIBRw.d informat 328PIBw.d format 197PIBw.d informat 326

compared to S370FPIBw.d informat343

PKw.d format 200PKw.d informat 330plus sign

trailing 357PM or AM

datetime values with 54time values with 100

412 Index

Page 419: ) Formats and Informats: Reference - go.documentation.sas.com

positive integer binary (fixed-point) values

IBM mainframe format 210positive integer binary values

DEC format 198Intel format 198reading in Intel and DEC formats 328writing 197

programming languagesinteger binary notation and 9packed decimal data support 12zoned decimal data support 12

PUNCH.d informat 331PUT function

specifying formats with 5PUT statement

specifying formats with 5PVALUEw.d format 201

QQTRRw. format 97QTRw. format 96quotation marks

removing 274

RRBw.d format 202RBw.d informat 332

compared to S370FRBw.d informat 344compared toVAXRBw.d informat 359

reading data values 233real binary (floating-point) data

IBM mainframe format 212VMS format 104

real binary (floating-point) valuesconverting to hexadecimal 74

real binary datareal binary format 202

real binary data, reading 332IBM mainframe format 344VMS format 359

real binary formatreal binary data (floating-point) in 202

reverse order character data 43, 44RMF records, reading duration intervals

333RMFDURw. informat 333RMFSTAMPw. informat 334

compared to RMFDURw. informat 334roman numerals 125, 126Roman numerals 97ROMANw. format 97ROWw.d informat 392

SS370FFw.d format 204S370FFw.d informat 336S370FIBUw.d format 206S370FIBUw.d informat 338S370FIBw.d format 205S370FIBw.d informat 337S370FPDUw.d format 209S370FPDUw.d informat 341S370FPDw.d format 208S370FPDw.d informat 340

compared to S370FPDUw.d informat342

S370FPIBw.d format 210S370FPIBw.d informat 342

compared to S370FIBUw.d informat339

S370FRBw.d format 212S370FRBw.d informat 344S370FZDB 346S370FZDBw.d informat 346S370FZDLw.d format 214S370FZDLw.d informat 347S370FZDSw.d format 215S370FZDSw.d informat 349S370FZDTw.d format 216S370FZDTw.d informat 350S370FZDUw.d format 218S370FZDUw.d informat 351S370FZDw.d format 213S370FZDw.d informat 345

compared to S370FZDUw.d informat352

SAS informats 233scientific notation 71SHR records

reading data and time values of 352SHRSTAMPw. informat 352SMFSTAMPw. informat 353Social Security numbers 219SSNw. format 219STIMERw. informat 393

Ttemporary formats 6time values

B8601LZ format, ISO 8601 basic local time with time zone 165

B8601TM format, ISO 8601 basic time notation, no time zone 166

B8601TM informat, ISO 8601 basic time notation, no time zone 383

B8601TZ format, ISO 8601 basic time notation with time zone 169

Index 413

Page 420: ) Formats and Informats: Reference - go.documentation.sas.com

B8601TZ informat, ISO 8601 basic time notation with time zone 384

E8601TM format, ISO 8601 extended notation, no time zone 180

E8601TM informat, ISO 8601 extended time notation, no time zone 304

E8601TZ format, ISO 8601 extended notation with time zone 183

E8601TZ informat, ISO 8601 extended notation with time zone 305

extracting from informat values 285HHMMw.d format 75HOURw.d format 77ISO 8601 extended local time with UTC

offset 179MMSSw.d format 86TIMEAMPMw.d format 100TIMEw.d format 98TODw.d format 102

TIMEAMPMw.d format 100TIMEw. informat 354TIMEw.d format 98TODSTAMPw. informat 356

compared to MSECw. informat 321TODw.d format 102trailing plus or minus sign 357TRAILSGNw. informat 357transcoding 10TUw. informat 358

Uunsigned integer binary (fixed-point)

valuesIBM mainframe format 206

unsigned integer binary data, readingIBM mainframe format 338

unsigned packed decimal dataIBM mainframe format 209

unsigned packed decimal data, reading 330

IBM mainframe format 341unsigned packed decimal format 200unsigned zoned decimal data

IBM mainframe format 218unsigned zoned decimal data, reading

IBM mainframe format 351uppercase

$UPCASEw. informat 275converting character data to 45reading data as 275writing character data in 144

user-defined formats 7

VVAXRBw.d format 104VAXRBw.d informat 359VMS

zoned numeric data 220, 359VMS format

real binary (floating-point) data in 104VMSZNw.d format 220VMSZNw.d informat 359

Ww.d format 105w.d informat 361, 369

compared to NUMXw.d informat 322compared to ZDw.d informat 367

WEEKDATEw. format 106WEEKDATXw. format 107WEEKDAYw. format 109weeks

number of week, date value, U algorithm 394

week number, date value, V algorithm396

week number, date value, W algorithm398

week number, decimal format, U algorithm 110

week number, decimal format, V algorithm 111

week number, decimal format, W algorithm 113

WEEKU 110WEEKUw. format 110WEEKUw. informat 394WEEKVw. format 111WEEKVw. informat 396WEEKWw. format 113WEEKWw. informat 398WORDDATEw. format 221WORDDATXw. format 223WORDFw. format 224words

writing numeric values as 225WORDSw. format 225writing character data 39, 46

YYEARw. format 115YMDDTTMw.d finformat 400YYMMDDw. format 117YYMMDDw. informat 362YYMMDDxw. format 119YYMMNw. informat 364YYMMw. format 116

414 Index

Page 421: ) Formats and Informats: Reference - go.documentation.sas.com

YYMMxw. format 226YYMONw. format 121YYQRw. format 125YYQRxw. format 126YYQw. format 122YYQw. informat 365YYQxw. format 123

ZZDBw.d informat 368ZDVw.d informat 369

See also w.d informatSee also ZDw.d informatcompared to ZDw.d informat 367

ZDw.d format 227ZDw.d informat 367, 369

compared to ZDVw.d 370zero

numeric data with leading zeros 128zeros, binary

converting to blanks 265zoned decimal data 11, 240

defined 239definition 10formats and 10

formats and informats for 242IBM mainframe format 213languages supporting 12, 241platforms supporting 11, 241summary of formats and informats 12

zoned decimal data, reading 367, 368IMB mainframe format 345

zoned decimal format 227zoned decimal leading-sign data

IBM mainframe format 214zoned decimal leading-sign data, reading

IBM mainframe format 347zoned decimal separate leading-sign data

IBM mainframe format 215zoned decimal separate trailing-sign data

IBM mainframe format 216zoned decimal separate trailing-sign data,

readingIBM mainframe format 350

zoned numeric dataMicroFocus COBOL 220, 359VMS 220, 359

zoned separate leading-sign data, readingIBM mainframe format 349

Zw.d format 128

Index 415

Page 422: ) Formats and Informats: Reference - go.documentation.sas.com

416 Index

Page 423: ) Formats and Informats: Reference - go.documentation.sas.com
Page 424: ) Formats and Informats: Reference - go.documentation.sas.com