A
ANSI data types 61–62
ANSI null values, processing 66–71
ANSI SQL quoting standards 47–49
ANSIMODE option 70–71
APPEND procedure 139
ARRAY statement 58–60
assignment operator (:=) 59
ATTRIB statement 58
automatic data type conversion 33–35, 36, 62–64
B
benchmarking 167
BIGINT data type 62, 63
BINARY data type 62, 65
BINDRESULTS method 1360
BY statement 35
C
CALL routines 101
CAS (SAS Cloud Analytic Services) 160
CHAR data type 61, 68–69
Cody, Ron
An Introduction to SAS University Edition 7
ColumnNumber parameter 117
COMMENT statement 60
CONTENTS method 80, 82, 96
CPU bound 146, 160
CPU Time statistic 164
CREATEGETMETHOD method 114
CREATEPARSER method 116
cross-library table updates 137–141
cursor controls (@) 45–46
D
data
loading to and from RAM 146
manipulating in RAM 146–147
overwriting 42–43
data parameter 107
Data Program block 11
data programs
about 18
versus base SAS DATA steps 37–60
executing 30–31
DATA statement 11–12, 35, 42–43
data types
See also specific data types
automatic conversion 62–64
in DS2 61–71
non-coercible 64–66
data wrangling 6
database management system (DBMS) 2–7
DATA_NULL_program 137
datasrc parameter 107
DATE data type 62, 65, 142
DBMS (database management system) 2–7
DECIMAL data type 62, 63, 70–71
declarative statements 38
DECLARE PACKAGE statement 84
DECLARE statement 26, 36, 58
declaring
with an SQLSTMT package 134–136
a matrix 124–125
PCRXFIND package 130
PCRXREPLACE package 130–131
using TZ package 142
variables 43–45
DELETE method 60, 79, 84
Delwiche, Lora
The Little SAS Book: A Primer 7
DIVBYZERO=ERROR|IGNORE option 16
DO loop 38, 74, 140
DO UNTIL loop 118, 136
DO WHILE loop 136
DOUBLE data type 61, 63, 68–69, 71
DROP PACKAGE statement 15
DROP statement 27, 38
DROP THREAD statement 16
DS2
See also specific topics
about 1–2
ANSI mode 70–71
converting SAS DATA step to 31–35
versus DATA step 10
data types 61–62
versus SAS DATA step 2–6
SAS mode 68–69
DS2 procedure 11–17, 43–44, 70–71
DS2COND= option 26
DS2_OPTIONS statement 16–17, 162–163, 167
DS2_OPTIONS TYPEWARN statement 62, 64
DSTODS2 procedure, automatic conversion with 33–35, 36
duplicate parameter 107–108
E
END statement 12, 20, 140
ENDDATA statement 11–12, 18, 35
ENDPACKAGE statement 11–12, 35
END=SET statement 21
ENDTHREAD statement 11–12, 19, 35
ERROR option 44
executable statements 12, 35, 40–41
EXECUTE method 135
EXECUTEMETHOD method 114
F
FCMP package 100–105, 144
FCMP procedure 10, 100–101, 144
FedSQL procedure 49, 57–58, 134
FETCH method 136
FILENAME URL statement 111
FIND method 109
FIRST method 109
FLOAT data type 61
FORMAT statement 58
FORWARD statement 93
FREQ procedure 68, 118–119
FULLSTIMER 163–164, 167
functions
creating custom with FCMP procedure 101–102
INPUT 63
MISSING 69, 70–71
NULL 69
TO_DATE 65–66, 142
TO_DOUBLE 66
TO_TIME 65–66, 142
TO_TIMESTAMP 65–66, 142
fundamentals
about 37, 71
data programs versus base SAS DATA steps 37–60
DS2 data types 61–71
G
general considerations, for programming 9–10
GET method 112
GETNEXTTOKEN method 116–118
GETRESPONSEBPDYASSTRING method 115
global statements 12–17
GOTO statement 38
H
hash objects
looking up values in data sets with 109–111
using as lookup tables 109
HASH package 106–109, 144
hashexp parameter 107
HAVING clause 58
HEAD method 112
HITER package 100, 109–111, 144
HTTP package 100, 111–124, 144
I
IN method 125
INFORMAT statement 58
INIT method 19, 20, 31, 35, 79, 108, 110, 147
IN_OUT parameters 22–25, 35–36, 74–76, 96
INPUT function 63
input/output bound 146
instantiating
with an SQLSTMT package 134–136
a matrix 124–125
PCRXFIND package 130
PCRXREPLACE package 130–131
using TZ package 142
INTEGER data type 62, 63
INTEREST method 82–83
interest methods 75–78
An Introduction to SAS University Edition (Cody) 7
Involuntary Context Switches statistic 164
IS methods 117
J
JSON package 100, 111–124, 144
JSON procedure 111, 116
K
KEEP statement 27, 38
keys parameter 106
keywords, reserved 46–47
Kiva API 111–115, 120–124
L
LABEL statement 58
LAST method 109
learning resources 165–166
LENGTH statement 58
LIBNAME statement 3, 136
LIBS= option 13–15
line feeds (/) 45–46
LineNumber parameter 117
LINK statement 60
The Little SAS Book: A Primer (Delwiche and Slaughter) 7
loading a matrix 124–125
Logger package 100
%LOGPARSE macro 164
lookup tables, using hash objects as 109
M
massively parallel processing (MPP) capabilities 5
Matrix package 100, 124–129
MEANS procedure 67–68
memory location 22
Memory statistic 164
MERGE statement 35, 49–55
METHOD block 36
method code block, executable statements and 40–41
METHOD statement 12, 19
methods
See also specific methods
overloading 78–79
programming 19–21
missing features
about 55, 71
ARRAY statement 58–60
ATTRIB statement 58
COMMENT statement 60
DELETE statement 60
FORMAT statement 58
INFORMAT statement 58
LABEL statement 58
LENGTH statement 58
LINK statement 60
MODIFY statement 58
UPDATE statement 58
WHERE statement 56–58
MISSING function 69, 70–71
missing values, processing 66–71
MISSING_NOTE option 16
MODIFY statement 58
MPP (massively parallel processing) capabilities 5
multidata parameter 108
N
name prefix variable 39
name variable list 38
NCHAR data type 61
NEXT method 109
NOLIBS option 13–15
non-coercible data types 64–66
NONE option 44
NOTE option 44
NULL function 69
numbered range variable list 39
NVARCHAR data type 61
O
object-oriented programming, with DS2 packages 84–96
objects, using as building blocks 93–96
ODS (Output Delivery System) 18
online training 165–166
options
ANSIMODE 70–71
DIVBYZERO=ERROR|IGNORE 16
DS2 procedure 12–17
DS2COND= 26
ERROR 44
LIBS= 13–15
MISSING_NOTE 16
NOLIBS 13–15
NONE 44
NOTE 44
OVERWRITE=YES 42–43
SAS 16
SCOND 26, 43–44
SCOND=ERROR|WARNING|NOTE|NONE 17
THREADS= 148, 151, 153, 165
TRACE 17, 162–163, 167
TYPEWARN 17
WARNING 43–45
ordered parameter 107
ordered view 106
Output Delivery System (ODS) 18
OUTPUT statement 35, 38, 137, 140
OVERWRITE=YES option 42–43
overwriting data 42–43
P
Package Program block 11
package programs 18–19
PACKAGE statement 11–12, 18, 35, 79–81
packages
FCMP 100–105, 144
HASH 106–109, 144
HITER 100, 109–111, 144
HTTP 100, 111–124, 144
JSON 100, 111–124, 144
Logger 100
Matrix 100, 124–129
PCRXFIND 100, 129–134, 144
PCRXREPLACE 100, 129–134, 144
SQLSTMT 100, 134–141, 144
storing user-defined methods in 79–81
TZ 100, 142–143, 144
Page Swaps statistic 164
parallel processing
about 145, 160
SAS Cloud Analytic Services (CAS) 160
SAS In-Database Code Accelerator 152–153
SAS Viya 153–160
Thread programs 147–151
threaded processing 146–147
ParseFlags parameter 117
parsing API response using JSON package 121–122
PCRXFIND package 100, 129–134, 144
PCRXREPLACE package 100, 129–134, 144
PDV (program data vector) 10, 126–127
PDV contamination 30
performance tuning
about 161, 167
analyzing with SAS log 163–165
DS2_OPTIONS statement 162–163
learning resources 165–166
troubleshooting 165–166
POST method 112, 116
predefined packages
about 99–100, 144
executing FCMP functions 100–105
FCMP 100–105, 144
HASH 106–109, 144
HITER 100, 109–111, 144
HTTP 100, 111–124, 144
JSON 100, 111–124, 144
Matrix 100, 124–129
PCRXFIND package 100, 129–134, 144
PCRXREPLACE package 100, 129–134, 144
SQLSTMT 100, 134–141, 144
TZ 100, 142–143, 144
PREV method 109
procedures
APPEND 139
DS2 11–17, 43–44, 70–71
DSTODS2 33–35, 36
FCMP 10, 100–101, 144
FedSQL 49, 57–58, 134
FREQ 68, 118–119
JSON 111, 116
MEANS 67–68
SQL 49, 57–58
processing
ANSI null values 66–71
SAS missing values 66–71
threaded 146–147
program blocks 18–19
program data vector (PDV) 10, 126–127
program flow control statements 38
programming
data program execution 30–31
general considerations 9–10
methods 19–21
program blocks 18–19
structure of 11–12
system methods 19–21
user-defined methods 21–25
variable identifiers and scope 25–30
PUT statement 45–46, 63, 71, 115
Q
quality assurance (QA) testing 91
querying Kiva API using HTML package 120–121
question mark (?) 134
QUIT statement 11
quotation marks 47
R
RAID (redundant array of independent disk) 146
RAM
loading data to and from 146
manipulating data in 146–147
RC parameter 117
REAL data type 61
Real Time statistic 164
redundant array of independent disk (RAID) 146
reserved keywords 46–47
RETAIN statement 38
RETURN statement 38
RUN method 19, 20, 27, 28, 29, 31, 35, 79, 140, 147
RUN statement 16
S
SAS, accessing 7–8
SAS 9.4 FedSQL language Reference 58
SAS Blogs (website) 165
SAS Cloud Analytic Services (CAS) 160
SAS DATA step
about 2–6
converting to DS2 data program 31–35
versus data programs 37–60
versus DS2 10
traditional 31
SAS DS2 Language Reference 164
SAS In-Database Code Accelerator 4–5, 152–153
SAS log, analyzing performance with 163–165
SAS Logging: Configuration and Programming Reference 164
SAS National Language Support (NLS): Reference Guide 142
SAS option 16
SAS Support Communities (website) 166
SAS Technical Support (website) 164, 166–167
SAS University Edition (website) 8
SAS Viya 153–160
SCOND option 26, 43–44
SCOND=ERROR|WARNING|NOTE|NONE option 17
scope, variable identifiers and 25–30
SET FROM statement 19, 147, 148–149, 165
SET statement 26, 38, 43–45, 56, 71, 140
SETPARMS method 147, 148
SETPARSERINPUT method 116
setup 7–8
single quotation marks 47
Slaughter, Susan
The Little SAS Book: A Primer 7
SMALLINT data type 62
solid state disk (SSD) 146
SQL procedure 49, 57–58
SQL query 10
SQLSTMT package 100, 134–141, 144
SSD (solid state disk) 146
statements
BY 35
ARRAY 58–60
ATTRIB 58
COMMENT 60
DATA 11–12, 35, 42–43
declarative 38
DECLARE 26, 36, 58
DECLARE PACKAGE 84
DELETE 60
DROP 27, 38
DROP PACKAGE 15
DROP THREAD 16
DS2_OPTIONS 16–17, 162–163, 167
DS2_OPTIONS TYPEWARN 62, 64
END 12, 20, 140
ENDDATA 11–12, 18, 35
ENDPACKAGE 11–12, 35
END=SET 21
ENDTHREAD 11–12, 19, 35
executable 12, 35, 40–41
FILENAME URL 111
FORMAT 58
FORWARD 93
global 12–17
GOTO 38
INFORMAT 58
KEEP 27, 38
LABEL 58
LENGTH 58
LIBNAME 3, 136
LINK 60
MERGE statement 35, 49–55
METHOD 12, 19
MODIFY 58
OUTPUT 35, 38, 137, 140
PACKAGE 11–12, 18, 35, 79–81
program flow control 38
PUT 45–46, 63, 71, 115
QUIT 11
RETAIN 38
RETURN 38
RUN 16
SET 26, 38, 43–45, 56, 71, 140
SET FROM 19, 147, 148–149, 165
STOP 38
THREAD 11–12, 19, 35
UPDATE 58, 137
VARARRAY 58, 125, 126–127
WHERE 56–58
STOP statement 38
structure, of programming 11–12
suminc parameter 108
support communities 166
System CPU Time statistic 164
system methods 19–21, 96
T
technical support 166–167
TERM method 19, 21, 27, 29, 31, 35, 79, 128, 147
thread, defined 147
Thread Program block 11
Thread programs 19, 147–151
THREAD statement 11–12, 19, 35
threaded processing 146–147
THREADS= option 148, 151, 153, 165
TIME data type 62, 65, 142
Time Zone package
See TZ package
TIMESTAMP data type 62, 65, 142
TINYINT data type 62
TOARRAY method 126–127
TO_DATE function 65–66, 142
TO_DOUBLE function 66
Token parameter 117
TokenType parameter 117
TO_TIME function 65–66, 142
TO_TIMESTAMP function 65–66, 142
TOVARARRAY method 126
TRACE option 17, 162–163, 167
TRANS method 126–127
troubleshooting 64, 165–166
%TSLIT macro 48–49, 71
type variable 39
TYPEWARN option 17
TZ package 100, 142–143, 144
U
UPDATE statement 58, 137
User CPU Time statistic 164
user-defined methods
about 21–25, 73–74, 96
designing 74–79
packages 79–83
V
values
manipulating from a matrix 126–127
retrieving from a matrix 126–127
VARARRAY statement 58, 125, 126–127
VARBINARY data type 62, 65
VARCHAR data type 61, 69, 70–71, 120
variable encapsulation 30
variable identifiers, scope and 25–30
variables, declaring 43–45
W
WARNING option 43–45
WHERE statement 56–58
WRITE methods 116
Y
YouTube channel 165