The document discusses different methods for creating macro variables in SAS, including the %LET statement, SYMPUT routine, and INTO clause. It explains that the %LET statement stores values as character strings and does not evaluate mathematical expressions. It also covers how SAS processing works, with statements being sent to the word scanner, tokenizer, compiler, and macro processor. The macro processor is responsible for processing macro language elements like %LET and macro variable references.
This document describes a binary phase-shift keying (BPSK) modulation circuit using a CD4016 analog switch integrated circuit. In BPSK, the phase of a carrier wave is shifted by 180 degrees to represent a 1 and unchanged to represent a 0. The circuit uses a CD4016 to switch the phase of a sine wave based on an input binary signal. An op-amp inverts the sine wave and the CD4016 switches between the normal and inverted sine wave based on the binary input. The output provides the BPSK modulated signal.
GIAB Benchmarks for SVs and Repeats for stanford genetics sv 200511GenomeInABottle
This document provides an overview of the Genome in a Bottle (GIAB) Consortium's efforts to develop human genome reference materials and benchmarks for evaluating genome sequencing and variant calling. It summarizes the characterization of 7 human genomes, including developing variant calls, regions, and reference values. It also describes new efforts using linked and long reads to characterize structural variants and difficult genomic regions. The goal is to provide reference materials and benchmarks to help evaluate sequencing performance and accuracy across different technologies and algorithms.
This chapter discusses data movement instructions in x86 assembly language. It covers common instructions like MOV, PUSH, POP and string instructions. It explains how instructions are represented in machine code, including opcode, operands, addressing modes, registers, and data sizes. Special emphasis is placed on interpreting unknown machine code and correctly representing symbolic instructions in binary. The goal is for readers to understand how to select the proper instruction to accomplish data transfers and translate between assembly mnemonics and machine language.
This document discusses ADaM metadata, which provides information about Analysis Data Model (ADaM) datasets. It presents examples of metadata for time to event analyses, including analysis dataset, variable, parameter value-level, and results metadata. The goal of metadata is to specify how to create ADaM and TFL datasets, define information for sponsors, and promote consistency between sites. Benefits include reduced communication needs, easier estimation and planning, and help for inexperienced users. Challenges include initial time/resource investment and determining who maintains the metadata.
Printed output is one of the major forms of computer output and is the final result of computer processing. It is typically prepared by a printer and contains 132 characters per line, with numerous blank fields left between significant data fields for alignment. A printer spacing chart, also called a print layout sheet, maps out the areas of a form that will be filled with information. Printed reports serving as computer output are referred to as continuous forms, which come in various lengths and can print 6 lines of output per inch, providing up to 72 lines of information per page. Diskettes, also known as floppy disks, were introduced in 1973 to replace punch cards for media entry. They are made of a flexible magnetic disk housed in an
This document discusses various topics related to data compression including compression techniques, audio compression, video compression, and standards like MPEG and JPEG. It covers lossless versus lossy compression, explaining that lossy compression can achieve much higher levels of compression but results in some loss of quality, while lossless compression maintains the original quality. The advantages of data compression include reducing file sizes, saving storage space and bandwidth.
This document provides an introduction to assembly language programming fundamentals. It discusses machine languages and low-level languages. It also covers data representation and numbering systems. Key assembly language concepts like instructions format, directives, procedures, macros and input/output are described. Examples are given to illustrate variables, assignment, conditional jumps, loops and other common programming elements in assembly language.
This document outlines the rules and regulations for research programs leading to M.Phil and Ph.D degrees at Acharya Nagarjuna University. It discusses the composition and functions of the Research Advisory Committee and Department Research Committees. It establishes the criteria for recognizing teachers and scientists as research supervisors and the procedure for obtaining such recognition. It also describes the eligibility criteria for admission to M.Phil and Ph.D programs, the admission procedure, coursework and examination patterns, and validity of registration and re-registration.
This document describes a binary phase-shift keying (BPSK) modulation circuit using a CD4016 analog switch integrated circuit. In BPSK, the phase of a carrier wave is shifted by 180 degrees to represent a 1 and unchanged to represent a 0. The circuit uses a CD4016 to switch the phase of a sine wave based on an input binary signal. An op-amp inverts the sine wave and the CD4016 switches between the normal and inverted sine wave based on the binary input. The output provides the BPSK modulated signal.
GIAB Benchmarks for SVs and Repeats for stanford genetics sv 200511GenomeInABottle
This document provides an overview of the Genome in a Bottle (GIAB) Consortium's efforts to develop human genome reference materials and benchmarks for evaluating genome sequencing and variant calling. It summarizes the characterization of 7 human genomes, including developing variant calls, regions, and reference values. It also describes new efforts using linked and long reads to characterize structural variants and difficult genomic regions. The goal is to provide reference materials and benchmarks to help evaluate sequencing performance and accuracy across different technologies and algorithms.
This chapter discusses data movement instructions in x86 assembly language. It covers common instructions like MOV, PUSH, POP and string instructions. It explains how instructions are represented in machine code, including opcode, operands, addressing modes, registers, and data sizes. Special emphasis is placed on interpreting unknown machine code and correctly representing symbolic instructions in binary. The goal is for readers to understand how to select the proper instruction to accomplish data transfers and translate between assembly mnemonics and machine language.
This document discusses ADaM metadata, which provides information about Analysis Data Model (ADaM) datasets. It presents examples of metadata for time to event analyses, including analysis dataset, variable, parameter value-level, and results metadata. The goal of metadata is to specify how to create ADaM and TFL datasets, define information for sponsors, and promote consistency between sites. Benefits include reduced communication needs, easier estimation and planning, and help for inexperienced users. Challenges include initial time/resource investment and determining who maintains the metadata.
Printed output is one of the major forms of computer output and is the final result of computer processing. It is typically prepared by a printer and contains 132 characters per line, with numerous blank fields left between significant data fields for alignment. A printer spacing chart, also called a print layout sheet, maps out the areas of a form that will be filled with information. Printed reports serving as computer output are referred to as continuous forms, which come in various lengths and can print 6 lines of output per inch, providing up to 72 lines of information per page. Diskettes, also known as floppy disks, were introduced in 1973 to replace punch cards for media entry. They are made of a flexible magnetic disk housed in an
This document discusses various topics related to data compression including compression techniques, audio compression, video compression, and standards like MPEG and JPEG. It covers lossless versus lossy compression, explaining that lossy compression can achieve much higher levels of compression but results in some loss of quality, while lossless compression maintains the original quality. The advantages of data compression include reducing file sizes, saving storage space and bandwidth.
This document provides an introduction to assembly language programming fundamentals. It discusses machine languages and low-level languages. It also covers data representation and numbering systems. Key assembly language concepts like instructions format, directives, procedures, macros and input/output are described. Examples are given to illustrate variables, assignment, conditional jumps, loops and other common programming elements in assembly language.
This document outlines the rules and regulations for research programs leading to M.Phil and Ph.D degrees at Acharya Nagarjuna University. It discusses the composition and functions of the Research Advisory Committee and Department Research Committees. It establishes the criteria for recognizing teachers and scientists as research supervisors and the procedure for obtaining such recognition. It also describes the eligibility criteria for admission to M.Phil and Ph.D programs, the admission procedure, coursework and examination patterns, and validity of registration and re-registration.
This document discusses macro variables in SAS/MACROS. It covers:
1. Global and automatic macro variables that are created when SAS is invoked, as well as user-defined macro variables that can be created using %LET.
2. Referencing macro variables with an ampersand (&) to substitute their values. This works in literals enclosed in double quotes but not single quotes.
3. Automatic macro variables like SYSDATE, SYSTIME, and SYSJOBID that provide system information, and how their values can be displayed and used.
The macro processor detects macro triggers like % and & in the code and handles macro code and variable substitution. It stores macro variables and their values in a symbol table. When it detects a macro variable reference &variable, it looks up the variable name in the symbol table and substitutes the variable value into the code before passing it to the compiler. This allows macros to generate dynamic code with variable data.
Learning
Base SAS,
Advanced SAS,
Proc SQl,
ODS,
SAS in financial industry,
Clinical trials,
SAS Macros,
SAS BI,
SAS on Unix,
SAS on Mainframe,
SAS interview Questions and Answers,
SAS Tips and Techniques,
SAS Resources,
SAS Certification questions...
visit http://sastechies.blogspot.com
Applying SAS Macro to build a model for US Adult Census Income.
The purpose of this project is to practice SAS Macro skill and hit all points of the assignment.
This document discusses different ways to create macro variables from within a DATA step in SAS. It describes using the SYMPUT routine to assign values from DATA step variables or expressions to macro variables. Multiple macro variables can be created in a single DATA step using SYMPUT with expressions for both the macro variable name and value. Indirect referencing of macro variables allows their values to be resolved at a later time.
This document provides tips and best practices for highly effective SAS programmers. It discusses 5 habits: 1) using programming and QC standards, 2) effective communication, organization and documentation, 3) mastering SAS basics and continuous learning, 4) having a passion for excellence and an 'outsourced' mentality, and 5) following best practices. It emphasizes training, documentation, certification, effective macro use, and taking advantage of SAS resources to improve skills and productivity.
- The document is about adding contextual information to market basket analysis results from SAS Enterprise Miner to better understand customer purchasing patterns and profitability.
- It presents a macro that analyzes transaction data to determine if item combinations and market baskets were profitable, and compares purchasing behaviors between profitable and non-profitable transactions.
- The macro loops through each rule from the association analysis to extract item information and crawl the transaction database to calculate relevant statistics, which are appended to the original output.
The document discusses motivating clinical SAS programmers by assigning meaningful tasks, setting up collaborative teams, and providing rewards. It provides an example project of implementing CDISC standards that was divided into subprojects and assigned to a team based on their skills. The conclusion emphasizes that motivation is important and can be maintained by focusing on teamwork and providing a good working environment.
Clinical SAS programming involves managing large datasets with thousands of data points and interdependencies to deliver accurate and reproducible analyses that determine approval of new drug therapies. It requires strong SAS technical skills as well as an understanding of clinical trials, statistics, industry data standards, and soft skills like communication. Learning SAS involves mastering its programming language and data step features like the implied loop and program data vector, as well as tools like macros, PROC procedures, and graphical and statistical procedures.
SAS macro processing vs with out macro processingSAYAN DAS
SAS Processing without Macro Activity:
When you submit a SAS program, the code is copied to a memory location called the input stack. The presence of text in the input stack triggers a component called the word scanner to begin its work.
Once the SAS code is in input stack, SAS
o Reads the text in the input stack (left-to-right, top-to-bottom)
o Routes text to the appropriate compiler upon demand
o Suspends this activity when a step boundary such as RUN statement is reached
o Executes the compiler code if there are no compilation errors
o Repeat this process for any subsequent steps.
The macro facility performs its tasks before SAS programs execute, the information that the macro facility supplies does not depend on values that are accessed or computed during the execution of a SAS program.
word scanner has two major functions:
o it pulls the raw text from the input stack character by character and transforms it into tokens.
o it sends tokens for processing to the compiler and macro processor.
o A program is then separated into components called tokens.
To build a token, the word scanner extracts characters until it reaches a delimiter, or until the next character does not meet the rules of the current token.
A delimiter is any whitespace character such as a space, tab, or end-of-line character.
• There are four types of tokens:
Name: consist of a maximum of 32 characters, must begin with a letter or underscore, and can include only letter, digit, and underscore characters.
Number: a SAS floating-point numeric value. They can consist of a digit, decimal point, leading sign, and exponent indicator (e or E). Date, time, and datetime specifications also become number tokens (for example: '29APR2019'd, '14:05:32.1't, '29APR2019 14:05:32.1'dt).
Special: Special tokens are made up of any character or group of characters that have special meaning in the SAS language. Examples include * / + - ; ( ) . & %
Literal. Literal tokens consist of a string of any characters enclosed in single or double quotation marks. They can contain up to 32,767 characters and are handled as a single unit.
Tokenization:
Between the input stack and the compiler, SAS programs are tokenized into smaller pieces.
Tokens are passed on demand to the compiler.
The compiler requests tokens until it receives a semicolon.
The compiler performs a syntax check on the statement.
The following example illustrates how the input stack, word scanner, and compiler work together.
TITLE "Hight More Then 60";
PROC PRINT DATA=sashelp.class;
VAR NAME SEX AGE HEIGHT WEIGHT;
WHERE HEIGHT > 60;
RUN;
Compiler
Word Scanner
Input Stack
When the code is copied to the input stack, the word scanner retrieves one character at a time until it reaches the first delimiter, a blank. When TITLE is recognized as a name token, the word scanner tags it and passes it to the compiler.
Compiler
Word Scanner
Input Stack
The word scanner tags the double quot
This document summarizes key concepts about macro programs in SAS including:
1) The basic structure of macro programs including defining macros with %MACRO and %MEND statements and compiling macros.
2) How macro compilation and execution works including resolving macro variables and inserting text into the input stack.
3) How to define macros with parameter lists including positional and keyword parameters and calling macros with different parameter values.
4) Tips for writing macro-based programs such as debugging with MPRINT and SYMBOLGEN options.
The document describes using conditional processing in macro programming to conditionally submit code. It discusses using %IF-%THEN statements to check conditions and only execute code within the %THEN block if the condition is true. As an example, a macro is defined to always submit a daily report, and only submit a weekly revenue report on Fridays by checking the %SYSDAY macro variable within an %IF statement.
DBA Fundamentals Group: Continuous SQL with Kafka and FlinkTimothy Spann
DBA Fundamentals Group: Continuous SQL with Kafka and Flink
20-Feb-2024
In this talk, I will walk through how someone can set up and run continuous SQL queries against Kafka topics utilizing Apache Flink. We will walk through creating Kafka topics, schemas, and publishing data.
We will then cover consuming Kafka data, joining Kafka topics, and inserting new events into Kafka topics as they arrive. This basic overview will show hands-on techniques, tips, and examples of how to do this.
Tim Spann
Tim Spann is the Principal Developer Advocate for Data in Motion @ Cloudera where he works with Apache Kafka, Apache Flink, Apache NiFi, Apache Iceberg, TensorFlow, Apache Spark, big data, the IoT, machine learning, and deep learning. Tim has over a decade of experience with the IoT, big data, distributed computing, streaming technologies, and Java programming. Previously, he was a Developer Advocate at StreamNative, Principal Field Engineer at Cloudera, a Senior Solutions Architect at AirisData and a senior field engineer at Pivotal. He blogs for DZone, where he is the Big Data Zone leader, and runs a popular meetup in Princeton on big data, the IoT, deep learning, streaming, NiFi, the blockchain, and Spark. Tim is a frequent speaker at conferences such as IoT Fusion, Strata, ApacheCon, Data Works Summit Berlin, DataWorks Summit Sydney, and Oracle Code NYC. He holds a BS and MS in computer science.
The document summarizes a presentation about securing Java EE web applications. It discusses common web application vulnerabilities like cross-site scripting (XSS), cross-site request forgery (CSRF), and SQL injection. It then demonstrates how to exploit these vulnerabilities on an open-source blogging application called Roller. Finally, it provides recommendations for how to fix the security issues, such as input validation, output encoding, and using parameterized queries.
This document provides an overview of SAS macros, including:
1) The purpose of the SAS macro facility is to allow for dynamic and self-modifying SAS programs through the use of special programs called macros that can generate tailored SAS code.
2) There are two types of macro variables - automatic variables created by SAS and user-defined variables created within the SAS program.
3) Macro variables can be created using %LET, CALL SYMPUT, and the INTO clause and can be either global or local in scope.
.NET library which enables minification, compression, combination, and caching of JavaScript and CSS resources for ASP.NET and ASP.NET MVC web applications. Simply put, it helps your applications rank better with YSlow and PageSpeed.
The document provides an overview of the SAS system and its components. It describes the four main data-driven tasks of data access, data management, data analysis, and data presentation. It also outlines the structure of SAS programs and data sets, and how to run and submit SAS programs. Key concepts covered include DATA and PROC steps, the SAS log and output, browsing descriptor and data portions of SAS data sets, and SAS syntax rules.
The document discusses using JDBC (Java Database Connectivity) for object-relational mapping in Java. It covers connecting to databases, executing SQL statements and queries, working with ResultSets, and best practices for managing database connections. Key points include using the DriverManager class to obtain database connections, preparing statements for parameterized queries, and implementing a DAO (Data Access Object) layer to encapsulate data access logic.
This document discusses modifying the OpenJDK Java compiler to support GOTO statements in Java by walking through the process of implementing GOTO support in the different phases of the Java compiler. It begins by discussing the syntax and semantics of the proposed GOTO statement and then summarizes how GOTO would be handled in each phase of the compiler from parsing and building the AST to type checking, flow analysis, and code generation. It provides examples of how GOTO statements could be parsed, type checked for valid labels, and have circular references detected during flow analysis.
ApacheCon2019 Talk: Improving the Observability of Cassandra, Kafka and Kuber...Paul Brebner
As distributed applications grow more complex, dynamic, and massively scalable, “observability” becomes more critical. Observability is the practice of using metrics, monitoring and distributed tracing to understand how a system works. In this presentation we’ll explore two complementary Open Source technologies: Prometheus for monitoring application metrics; and OpenTracing and Jaeger for distributed tracing. We’ll discover how they improve the observability of a massively scalable Anomaly Detection system - an application which is built around Apache Cassandra and Apache Kafka for the data layers, and dynamically deployed and scaled on Kubernetes, a container orchestration technology. We will give an overview of Prometheus and OpenTracing/Jaeger, explain how the application is instrumented, and describe how Prometheus and OpenTracing are deployed and configured in a production environment running Kubernetes, to dynamically monitor the application at scale. We conclude by exploring the benefits of monitoring and tracing technologies for understanding, debugging and tuning complex dynamic distributed systems built on Kafka, Cassandra and Kubernetes, and introduce a new use case to enable Cassandra Elastic Autoscaling, by combining Prometheus alerts, Instaclustr’s Provisioning API for Dynamic Resizing, and the new Prometheus monitoring API.
Dataservices: Processing (Big) Data the Microservice WayQAware GmbH
Apache Big Data 2017, Miami (Florida/USA): Talk by Josef Adersberger (@adersberger, CTO at QAware)
Abstract:
We see a big data processing pattern emerging using the Microservice approach to build an integrated, flexible, and distributed system of data processing tasks. We call this the Dataservice pattern. In this presentation we'll introduce into Dataservices: their basic concepts, the technology typically in use (like Kubernetes, Kafka, Cassandra and Spring) and some architectures from real-life.
This document discusses macro variables in SAS/MACROS. It covers:
1. Global and automatic macro variables that are created when SAS is invoked, as well as user-defined macro variables that can be created using %LET.
2. Referencing macro variables with an ampersand (&) to substitute their values. This works in literals enclosed in double quotes but not single quotes.
3. Automatic macro variables like SYSDATE, SYSTIME, and SYSJOBID that provide system information, and how their values can be displayed and used.
The macro processor detects macro triggers like % and & in the code and handles macro code and variable substitution. It stores macro variables and their values in a symbol table. When it detects a macro variable reference &variable, it looks up the variable name in the symbol table and substitutes the variable value into the code before passing it to the compiler. This allows macros to generate dynamic code with variable data.
Learning
Base SAS,
Advanced SAS,
Proc SQl,
ODS,
SAS in financial industry,
Clinical trials,
SAS Macros,
SAS BI,
SAS on Unix,
SAS on Mainframe,
SAS interview Questions and Answers,
SAS Tips and Techniques,
SAS Resources,
SAS Certification questions...
visit http://sastechies.blogspot.com
Applying SAS Macro to build a model for US Adult Census Income.
The purpose of this project is to practice SAS Macro skill and hit all points of the assignment.
This document discusses different ways to create macro variables from within a DATA step in SAS. It describes using the SYMPUT routine to assign values from DATA step variables or expressions to macro variables. Multiple macro variables can be created in a single DATA step using SYMPUT with expressions for both the macro variable name and value. Indirect referencing of macro variables allows their values to be resolved at a later time.
This document provides tips and best practices for highly effective SAS programmers. It discusses 5 habits: 1) using programming and QC standards, 2) effective communication, organization and documentation, 3) mastering SAS basics and continuous learning, 4) having a passion for excellence and an 'outsourced' mentality, and 5) following best practices. It emphasizes training, documentation, certification, effective macro use, and taking advantage of SAS resources to improve skills and productivity.
- The document is about adding contextual information to market basket analysis results from SAS Enterprise Miner to better understand customer purchasing patterns and profitability.
- It presents a macro that analyzes transaction data to determine if item combinations and market baskets were profitable, and compares purchasing behaviors between profitable and non-profitable transactions.
- The macro loops through each rule from the association analysis to extract item information and crawl the transaction database to calculate relevant statistics, which are appended to the original output.
The document discusses motivating clinical SAS programmers by assigning meaningful tasks, setting up collaborative teams, and providing rewards. It provides an example project of implementing CDISC standards that was divided into subprojects and assigned to a team based on their skills. The conclusion emphasizes that motivation is important and can be maintained by focusing on teamwork and providing a good working environment.
Clinical SAS programming involves managing large datasets with thousands of data points and interdependencies to deliver accurate and reproducible analyses that determine approval of new drug therapies. It requires strong SAS technical skills as well as an understanding of clinical trials, statistics, industry data standards, and soft skills like communication. Learning SAS involves mastering its programming language and data step features like the implied loop and program data vector, as well as tools like macros, PROC procedures, and graphical and statistical procedures.
SAS macro processing vs with out macro processingSAYAN DAS
SAS Processing without Macro Activity:
When you submit a SAS program, the code is copied to a memory location called the input stack. The presence of text in the input stack triggers a component called the word scanner to begin its work.
Once the SAS code is in input stack, SAS
o Reads the text in the input stack (left-to-right, top-to-bottom)
o Routes text to the appropriate compiler upon demand
o Suspends this activity when a step boundary such as RUN statement is reached
o Executes the compiler code if there are no compilation errors
o Repeat this process for any subsequent steps.
The macro facility performs its tasks before SAS programs execute, the information that the macro facility supplies does not depend on values that are accessed or computed during the execution of a SAS program.
word scanner has two major functions:
o it pulls the raw text from the input stack character by character and transforms it into tokens.
o it sends tokens for processing to the compiler and macro processor.
o A program is then separated into components called tokens.
To build a token, the word scanner extracts characters until it reaches a delimiter, or until the next character does not meet the rules of the current token.
A delimiter is any whitespace character such as a space, tab, or end-of-line character.
• There are four types of tokens:
Name: consist of a maximum of 32 characters, must begin with a letter or underscore, and can include only letter, digit, and underscore characters.
Number: a SAS floating-point numeric value. They can consist of a digit, decimal point, leading sign, and exponent indicator (e or E). Date, time, and datetime specifications also become number tokens (for example: '29APR2019'd, '14:05:32.1't, '29APR2019 14:05:32.1'dt).
Special: Special tokens are made up of any character or group of characters that have special meaning in the SAS language. Examples include * / + - ; ( ) . & %
Literal. Literal tokens consist of a string of any characters enclosed in single or double quotation marks. They can contain up to 32,767 characters and are handled as a single unit.
Tokenization:
Between the input stack and the compiler, SAS programs are tokenized into smaller pieces.
Tokens are passed on demand to the compiler.
The compiler requests tokens until it receives a semicolon.
The compiler performs a syntax check on the statement.
The following example illustrates how the input stack, word scanner, and compiler work together.
TITLE "Hight More Then 60";
PROC PRINT DATA=sashelp.class;
VAR NAME SEX AGE HEIGHT WEIGHT;
WHERE HEIGHT > 60;
RUN;
Compiler
Word Scanner
Input Stack
When the code is copied to the input stack, the word scanner retrieves one character at a time until it reaches the first delimiter, a blank. When TITLE is recognized as a name token, the word scanner tags it and passes it to the compiler.
Compiler
Word Scanner
Input Stack
The word scanner tags the double quot
This document summarizes key concepts about macro programs in SAS including:
1) The basic structure of macro programs including defining macros with %MACRO and %MEND statements and compiling macros.
2) How macro compilation and execution works including resolving macro variables and inserting text into the input stack.
3) How to define macros with parameter lists including positional and keyword parameters and calling macros with different parameter values.
4) Tips for writing macro-based programs such as debugging with MPRINT and SYMBOLGEN options.
The document describes using conditional processing in macro programming to conditionally submit code. It discusses using %IF-%THEN statements to check conditions and only execute code within the %THEN block if the condition is true. As an example, a macro is defined to always submit a daily report, and only submit a weekly revenue report on Fridays by checking the %SYSDAY macro variable within an %IF statement.
DBA Fundamentals Group: Continuous SQL with Kafka and FlinkTimothy Spann
DBA Fundamentals Group: Continuous SQL with Kafka and Flink
20-Feb-2024
In this talk, I will walk through how someone can set up and run continuous SQL queries against Kafka topics utilizing Apache Flink. We will walk through creating Kafka topics, schemas, and publishing data.
We will then cover consuming Kafka data, joining Kafka topics, and inserting new events into Kafka topics as they arrive. This basic overview will show hands-on techniques, tips, and examples of how to do this.
Tim Spann
Tim Spann is the Principal Developer Advocate for Data in Motion @ Cloudera where he works with Apache Kafka, Apache Flink, Apache NiFi, Apache Iceberg, TensorFlow, Apache Spark, big data, the IoT, machine learning, and deep learning. Tim has over a decade of experience with the IoT, big data, distributed computing, streaming technologies, and Java programming. Previously, he was a Developer Advocate at StreamNative, Principal Field Engineer at Cloudera, a Senior Solutions Architect at AirisData and a senior field engineer at Pivotal. He blogs for DZone, where he is the Big Data Zone leader, and runs a popular meetup in Princeton on big data, the IoT, deep learning, streaming, NiFi, the blockchain, and Spark. Tim is a frequent speaker at conferences such as IoT Fusion, Strata, ApacheCon, Data Works Summit Berlin, DataWorks Summit Sydney, and Oracle Code NYC. He holds a BS and MS in computer science.
The document summarizes a presentation about securing Java EE web applications. It discusses common web application vulnerabilities like cross-site scripting (XSS), cross-site request forgery (CSRF), and SQL injection. It then demonstrates how to exploit these vulnerabilities on an open-source blogging application called Roller. Finally, it provides recommendations for how to fix the security issues, such as input validation, output encoding, and using parameterized queries.
This document provides an overview of SAS macros, including:
1) The purpose of the SAS macro facility is to allow for dynamic and self-modifying SAS programs through the use of special programs called macros that can generate tailored SAS code.
2) There are two types of macro variables - automatic variables created by SAS and user-defined variables created within the SAS program.
3) Macro variables can be created using %LET, CALL SYMPUT, and the INTO clause and can be either global or local in scope.
.NET library which enables minification, compression, combination, and caching of JavaScript and CSS resources for ASP.NET and ASP.NET MVC web applications. Simply put, it helps your applications rank better with YSlow and PageSpeed.
The document provides an overview of the SAS system and its components. It describes the four main data-driven tasks of data access, data management, data analysis, and data presentation. It also outlines the structure of SAS programs and data sets, and how to run and submit SAS programs. Key concepts covered include DATA and PROC steps, the SAS log and output, browsing descriptor and data portions of SAS data sets, and SAS syntax rules.
The document discusses using JDBC (Java Database Connectivity) for object-relational mapping in Java. It covers connecting to databases, executing SQL statements and queries, working with ResultSets, and best practices for managing database connections. Key points include using the DriverManager class to obtain database connections, preparing statements for parameterized queries, and implementing a DAO (Data Access Object) layer to encapsulate data access logic.
This document discusses modifying the OpenJDK Java compiler to support GOTO statements in Java by walking through the process of implementing GOTO support in the different phases of the Java compiler. It begins by discussing the syntax and semantics of the proposed GOTO statement and then summarizes how GOTO would be handled in each phase of the compiler from parsing and building the AST to type checking, flow analysis, and code generation. It provides examples of how GOTO statements could be parsed, type checked for valid labels, and have circular references detected during flow analysis.
ApacheCon2019 Talk: Improving the Observability of Cassandra, Kafka and Kuber...Paul Brebner
As distributed applications grow more complex, dynamic, and massively scalable, “observability” becomes more critical. Observability is the practice of using metrics, monitoring and distributed tracing to understand how a system works. In this presentation we’ll explore two complementary Open Source technologies: Prometheus for monitoring application metrics; and OpenTracing and Jaeger for distributed tracing. We’ll discover how they improve the observability of a massively scalable Anomaly Detection system - an application which is built around Apache Cassandra and Apache Kafka for the data layers, and dynamically deployed and scaled on Kubernetes, a container orchestration technology. We will give an overview of Prometheus and OpenTracing/Jaeger, explain how the application is instrumented, and describe how Prometheus and OpenTracing are deployed and configured in a production environment running Kubernetes, to dynamically monitor the application at scale. We conclude by exploring the benefits of monitoring and tracing technologies for understanding, debugging and tuning complex dynamic distributed systems built on Kafka, Cassandra and Kubernetes, and introduce a new use case to enable Cassandra Elastic Autoscaling, by combining Prometheus alerts, Instaclustr’s Provisioning API for Dynamic Resizing, and the new Prometheus monitoring API.
Dataservices: Processing (Big) Data the Microservice WayQAware GmbH
Apache Big Data 2017, Miami (Florida/USA): Talk by Josef Adersberger (@adersberger, CTO at QAware)
Abstract:
We see a big data processing pattern emerging using the Microservice approach to build an integrated, flexible, and distributed system of data processing tasks. We call this the Dataservice pattern. In this presentation we'll introduce into Dataservices: their basic concepts, the technology typically in use (like Kubernetes, Kafka, Cassandra and Spring) and some architectures from real-life.
The document discusses macro processors and their functions. It covers:
- The basic functions of a macro processor including macro directives, prototypes, and expansion.
- One-pass and two-pass macro processing algorithms. One-pass can handle nested macros recursively.
- Data structures for storing macro definitions and arguments during expansion.
- Techniques for handling nested macros, generating unique labels, and conditional and looping expansion.
- Machine-independent features like concatenation, null arguments, and keyword parameters.
How to Improve the Observability of Apache Cassandra and Kafka applications...Paul Brebner
As distributed cloud applications grow more complex, dynamic, and massively scalable, “observability” becomes more critical.
Observability is the practice of using metrics, monitoring and distributed tracing to understand how a system works.
We’ll explore two complementary Open Source technologies:
Prometheus for monitoring application metrics, and
OpenTracing and Jaeger for distributed tracing.
We’ll discover how they improve the observability of
an Anomaly Detection application, deployed on AWS Kubernetes, and using Instaclustr managed Apache Cassandra and Kafka clusters.
This document guides the reader through building a system where a user connects to a server over a secure connection and receives a sequence of JSON-encoded objects. It begins by introducing the ServerCore component and shows how to fill its protocol handler factory hole. It then demonstrates creating a stackedjson protocol handler using a pipeline of components like PeriodicWakeup, Chooser, and MarshallJSON. This protocol securely transmits JSON data chunks to clients like a ConsoleEchoer. It discusses how the client-side mirrors the server components to receive and display the messages.
- The document outlines the goals, outcomes, prerequisites, topics covered, and grading for a compiler design course.
- The major goals are to provide an understanding of compiler phases like scanning, parsing, semantic analysis and code generation, and have students implement parts of a compiler for a small language.
- By the end of the course students will be familiar with compiler phases and be able to define the semantic rules of a programming language.
- Prerequisites include knowledge of programming languages, algorithms, and grammar theories.
- The course covers topics like scanning, parsing, semantic analysis, code generation and optimization.
This document summarizes Metro, JAX-WS, WSIT and REST web services technologies. It provides an overview of Project Metro and its key components JAX-WS and WSIT. JAX-WS allows developing web services from POJOs using annotations and generates WSDL. It can be used with Java SE, Java EE and various app servers. WSIT enables interoperability with Microsoft .NET by supporting reliable messaging, transactions and security. The document also discusses developing and consuming web services clients using JAX-WS APIs and proxies generated from WSDL.
Continuous Application with Structured Streaming 2.0Anyscale
Introduction to Continuous Application with Apache Spark 2.0 Structured Streaming. This presentation is a culmination and curation from talks and meetups presented by Databricks engineers.
The notebooks on Structured Streaming demonstrates aspects of the Structured Streaming APIs
Similar to When best to use the %let statement, the symput routine, or the into clause to create macro variables (20)
Leveraging Generative AI to Drive Nonprofit InnovationTechSoup
In this webinar, participants learned how to utilize Generative AI to streamline operations and elevate member engagement. Amazon Web Service experts provided a customer specific use cases and dived into low/no-code tools that are quick and easy to deploy through Amazon Web Service (AWS.)
LAND USE LAND COVER AND NDVI OF MIRZAPUR DISTRICT, UPRAHUL
This Dissertation explores the particular circumstances of Mirzapur, a region located in the
core of India. Mirzapur, with its varied terrains and abundant biodiversity, offers an optimal
environment for investigating the changes in vegetation cover dynamics. Our study utilizes
advanced technologies such as GIS (Geographic Information Systems) and Remote sensing to
analyze the transformations that have taken place over the course of a decade.
The complex relationship between human activities and the environment has been the focus
of extensive research and worry. As the global community grapples with swift urbanization,
population expansion, and economic progress, the effects on natural ecosystems are becoming
more evident. A crucial element of this impact is the alteration of vegetation cover, which plays a
significant role in maintaining the ecological equilibrium of our planet.Land serves as the foundation for all human activities and provides the necessary materials for
these activities. As the most crucial natural resource, its utilization by humans results in different
'Land uses,' which are determined by both human activities and the physical characteristics of the
land.
The utilization of land is impacted by human needs and environmental factors. In countries
like India, rapid population growth and the emphasis on extensive resource exploitation can lead
to significant land degradation, adversely affecting the region's land cover.
Therefore, human intervention has significantly influenced land use patterns over many
centuries, evolving its structure over time and space. In the present era, these changes have
accelerated due to factors such as agriculture and urbanization. Information regarding land use and
cover is essential for various planning and management tasks related to the Earth's surface,
providing crucial environmental data for scientific, resource management, policy purposes, and
diverse human activities.
Accurate understanding of land use and cover is imperative for the development planning
of any area. Consequently, a wide range of professionals, including earth system scientists, land
and water managers, and urban planners, are interested in obtaining data on land use and cover
changes, conversion trends, and other related patterns. The spatial dimensions of land use and
cover support policymakers and scientists in making well-informed decisions, as alterations in
these patterns indicate shifts in economic and social conditions. Monitoring such changes with the
help of Advanced technologies like Remote Sensing and Geographic Information Systems is
crucial for coordinated efforts across different administrative levels. Advanced technologies like
Remote Sensing and Geographic Information Systems
9
Changes in vegetation cover refer to variations in the distribution, composition, and overall
structure of plant communities across different temporal and spatial scales. These changes can
occur natural.
This document provides an overview of wound healing, its functions, stages, mechanisms, factors affecting it, and complications.
A wound is a break in the integrity of the skin or tissues, which may be associated with disruption of the structure and function.
Healing is the body’s response to injury in an attempt to restore normal structure and functions.
Healing can occur in two ways: Regeneration and Repair
There are 4 phases of wound healing: hemostasis, inflammation, proliferation, and remodeling. This document also describes the mechanism of wound healing. Factors that affect healing include infection, uncontrolled diabetes, poor nutrition, age, anemia, the presence of foreign bodies, etc.
Complications of wound healing like infection, hyperpigmentation of scar, contractures, and keloid formation.
Strategies for Effective Upskilling is a presentation by Chinwendu Peace in a Your Skill Boost Masterclass organisation by the Excellence Foundation for South Sudan on 08th and 09th June 2024 from 1 PM to 3 PM on each day.
How to Add Chatter in the odoo 17 ERP ModuleCeline George
In Odoo, the chatter is like a chat tool that helps you work together on records. You can leave notes and track things, making it easier to talk with your team and partners. Inside chatter, all communication history, activity, and changes will be displayed.
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...Dr. Vinod Kumar Kanvaria
Exploiting Artificial Intelligence for Empowering Researchers and Faculty,
International FDP on Fundamentals of Research in Social Sciences
at Integral University, Lucknow, 06.06.2024
By Dr. Vinod Kumar Kanvaria
Main Java[All of the Base Concepts}.docxadhitya5119
This is part 1 of my Java Learning Journey. This Contains Custom methods, classes, constructors, packages, multithreading , try- catch block, finally block and more.
When best to use the %let statement, the symput routine, or the into clause to create macro variables
1. When Best to Use the %LET Statement, the SYMPUT Routine, or the INTO Clause to Create Macro Variables Arthur Li Department of Information Science City of Hope Comprehensive Cancer Center Duarte, CA
2. INTRODUCTION DATA Step PROC Steps SAS Macro Facility BASE SAS Use to generate SAS codes more… PROC SQL
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14. data UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ex1; set height; tall = height > 63 ; run ;
15. ex1 data UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ; set height; tall = height > 63 ; run ;
16. ; ex1 data UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK set height; tall = height > 63 ; run ;
17. set ; ex1 data UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK height; tall = height > 63 ; run ;
18. height set ; data ex1 UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ; tall = height > 63 ; run ;
19. ; height set data ex1; UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK tall = height > 63 ; run ;
20. tall ; height data ex1; set UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK = height > 63 ; run ;
21. = tall ; data ex1; set height UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK height > 63 ; run ;
22. height = tall data ex1; set height; UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK > 63 ; run ;
23. > height = data ex1; set height; tall UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK 63 ; run ;
24. 63 > height data ex1; set height; tall = UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ; run ;
25. ; 63 > data ex1; set height; tall = height UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK run ;
26. run ; 63 data ex1; set height; tall = height > UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ;
27. ; run ; data ex1; set height; tall = height > 63 UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK
28. ; run data ex1; set height; tall = height > 63 ; UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK
29. ; data ex1; set height; tall = height > 63 ; run UNDERSTANDING SAS PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK
30.
31. UNDERSTANDING SAS PROCESSING Types of Token Contains … Examples Literal Characters enclosed in quotation marks “ John” ‘John’ Numerals including decimals, E-notation, date, time, datetime constants, and hexadecimal constants 555 ‘ 01mar2010’d 30e4 Number Characters that begin with a letter or underscore and that continues with underscores, letters, or numbers. A period can sometimes be part of a name _n_ means dollar9.2 Descending Name Characters other than a letter, number, or underscore that have a special meaning to the SAS system Special character / + % & . ;
32.
33.
34. % MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK let ht =63; data ex1; set height; tall =height >&ht; run ; MACRO PROCESSOR
35.
36. ht let % MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK =63; data ex1; set height; tall =height >&ht; run ; MACRO PROCESSOR
37. = ht let % MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK 63; data ex1; set height; tall =height >&ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables
38. ; 63 = ht MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK data ex1; set height; tall =height >&ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables
39. data ; 63 = MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ex1; set height; tall =height >&ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht
40.
41. ; ex1 data MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK set height; tall =height >&ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
42. set ; ex1 data MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK height; tall =height >&ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
43. height set ; data ex1 MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ; tall =height >&ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
44. ; height set data ex1; MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK tall =height >&ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
45. tall ; height data ex1; set MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK =height >&ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
46. = tall ; data ex1; set height MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK height >&ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
47. height = tall data ex1; set Height; MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK >&ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
48. > height = data ex1; set height; tall MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK &ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
49. & > height data ex1; set height; tall = MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ht; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
50.
51. ht & data ex1; set height; tall = Height > MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
52. ht data ex1; set height; tall = Height > MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
53.
54. ht data ex1; set height; tall = Height > 63 MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
55. data ex1; set height; tall = Height > 63 MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
56. data ex1; set height; tall = Height > MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK 63 ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
57. 63 data ex1; set height; tall = Height > MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
58. ; 63 data ex1; set height; tall = Height > MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
59. run ; 63 data ex1; set height; tall = Height > MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
60. ; run ; data ex1; set height; tall = Height > 63 MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
61. ; run data ex1; set height; tall = Height > 63 ; MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
62. ; data ex1; set height; tall = Height > 63 ; run MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
63. data ex1; set height; tall = Height > 63 ; run; MACRO PROCESSING WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . . User-Defined Macro Variables ht 63
64.
65.
66. PROCESSING MACRO VARIABLES AT EXECUTION TIME Ex1: data _null_ ; set ex1 end=last; if tall then count_tall + 1 ; if last then do ; if count_tall then do ; %let titl = "Some students are taller than 63 inches"; end ; else do ; %let titl = "None of the students are taller than 63 inches"; end ; end ; run ; 64 62 60 65 height 1 f Helen 4 0 f Mary 3 0 m Tom 2 1 m John 1 tall sex name
67. PROCESSING MACRO VARIABLES AT EXECUTION TIME Ex1: proc print data =ex1; title &titl; run ; None of the students are taller than 63 inches Obs name sex height tall 1 John m 65 1 2 Tom m 60 0 3 Mary f 62 0 4 Helen f 64 1 64 62 60 65 height 1 f Helen 4 0 f Mary 3 0 m Tom 2 1 m John 1 tall sex name
68. PROCESSING MACRO VARIABLES AT EXECUTION TIME WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK data _null_ ; set ex1 end=last; if tall then count_tall + 1 ; if last then do ; if count_tall then do ; %let titl ="Some students are taller than 63 inches"; end ; else do ; %let titl = "None of the students are taller than 63 inches"; end ; end ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . User-Defined Macro Variables
69. titl let % data _null_ ; set ex1 end=last; if tall then count_tall + 1 ; if last then do ; if count_tall then do ; PROCESSING MACRO VARIABLES AT EXECUTION TIME WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK ="Some students are taller than 63 inches"; end ; else do ; %let titl = "None of the students are taller than 63 inches"; end ; end ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . User-Defined Macro Variables
70. ; do else data _null_ ; set ex1 end=last; if tall then count_tall + 1 ; if last then do ; if count_tall then do ; end ; PROCESSING MACRO VARIABLES AT EXECUTION TIME WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK %let titl = "None of the students are taller than 63 inches"; end ; end ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . User-Defined Macro Variables Titl Some students are taller than 63 inches
71. % ; do data _null_ ; set ex1 end=last; if tall then count_tall + 1 ; if last then do ; if count_tall then do ; end ; else PROCESSING MACRO VARIABLES AT EXECUTION TIME WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK let titl = "None of the students are taller than 63 inches"; end ; end ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . User-Defined Macro Variables Titl Some students are taller than 63 inches
72. titl let % data _null_ ; set ex1 end=last; if tall then count_tall + 1 ; if last then do ; if count_tall then do ; end ; else do ; PROCESSING MACRO VARIABLES AT EXECUTION TIME WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK = "None of the students are taller than 63 inches"; end ; end ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . User-Defined Macro Variables Titl Some students are taller than 63 inches
73. let % ; data _null_ ; set ex1 end=last; if tall then count_tall + 1 ; if last then do ; if count_tall then do ; end ; else do PROCESSING MACRO VARIABLES AT EXECUTION TIME WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK titl = "None of the students are taller than 63 inches"; end ; end ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . User-Defined Macro Variables Titl Some students are taller than 63 inches
74. ; end data _null_ ; set ex1 end=last; if tall then count_tall + 1 ; if last then do ; if count_tall then do ; end ; else do ; PROCESSING MACRO VARIABLES AT EXECUTION TIME WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK end ; run ; MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . User-Defined Macro Variables Titl None of the students are taller than 63 inches
75. data _null_ ; set ex1 end=last; if tall then count_tall + 1 ; if last then do ; if count_tall then do ; end ; else do ; end ; end ; run ; PROCESSING MACRO VARIABLES AT EXECUTION TIME WORD SCANNER TOKENNIZER DETERMINE DESTINATION COMPILER INPUT STACK MACRO PROCESSOR GLOBAL SYMBOL TABLE SAS Automatic Macro Variables SYSDATE 19JUN06 SYSDAT Monday SYSTIME 10:34 . . User-Defined Macro Variables Titl None of the students are taller than 63 inches
76. PROCESSING MACRO VARIABLES AT EXECUTION TIME Ex1: data _null_ ; set ex1 end=last; if tall then count_tall + 1 ; if last then do ; if count_tall then do ; %let titl = "Some students are taller than 63 inches"; end ; else do ; %let titl = "None of the students are taller than 63 inches"; end ; end ; run ; Here is what the program will look like when it is processed by the compiler 64 62 60 65 height 1 f Helen 4 0 f Mary 3 0 m Tom 2 1 m John 1 tall sex name
77.
78.
79.
80. THE SYMPUT ROUTINE proc print data =ex1; title &titl; run ; Some students are taller than 63 inches Obs name sex height tall 1 John m 65 1 2 Tom m 60 0 3 Mary f 62 0 4 Helen f 64 1
81.
82.
83. THE SYMPUT ROUTINE data _null_ ; set height; if name = 'John' then call symput ( 'John_ht' , height); else if name = 'Tom' then call symput ( 'Tom_ht' , height); else if name = 'Mary' then call symput ( 'Mary_ht' , height); else if name = 'Helen' then call symput ( 'Helen_ht' , height); run ; Height: HEIGHT is not in quotation marks 64 62 60 65 height f Helen 4 f Mary 3 m Tom 2 m John 1 sex name
84. THE SYMPUT ROUTINE %put macro variable John_ht: &John_ht; %put macro variable Tom_ht: &Tom_ht; %put macro variable Mary_ht: &Mary_ht; %put macro variable Helen_ht: &Helen_ht; Height: 359 %put macro variable John_ht: &John_ht; macro variable John_ht: 65 360 %put macro variable Tom_ht: &Tom_ht; macro variable Tom_ht: 60 361 %put macro variable Mary_ht: &Mary_ht; macro variable Mary_ht: 62 362 %put macro variable Helen_ht: &Helen_ht; macro variable Helen_ht: 64 Log: 64 62 60 65 height f Helen 4 f Mary 3 m Tom 2 m John 1 sex name
85.
86.
87. THE SYMPUT ROUTINE Height: data _null_ ; set height; call symput (name, height); run ; NAME is not in quotation marks 64 62 60 65 height f Helen 4 f Mary 3 m Tom 2 m John 1 sex name
88. THE SYMPUT ROUTINE Height: %put macro variable John: &John; %put macro variable Tom: &Tom; %put macro variable Mary: &Mary; %put macro variable Helen: &Helen; 368 %put macro variable John: &John; macro variable John: 65 369 %put macro variable Tom: &Tom; macro variable Tom: 60 370 %put macro variable Mary: &Mary; macro variable Mary: 62 371 %put macro variable Helen: &Helen; macro variable Helen: 64 Log: Notice that “blanks” are part of the macro variables 64 62 60 65 height f Helen 4 f Mary 3 m Tom 2 m John 1 sex name
89.
90.
91. THE SYMPUT ROUTINE Height: data _null_ ; set height; call symput ( "height_" ||name, trim(left(height))); run ; 64 62 60 65 height f Helen 4 f Mary 3 m Tom 2 m John 1 sex name
92. THE SYMPUT ROUTINE Height: %put macro variable height_John: &height_John; %put macro variable height_Tom: &height_Tom; %put macro variable height_Mary: &height_Mary; %put macro variable height_Helen: &height_Helen; 411 %put macro variable height_John: &height_John; macro variable height_John: 65 412 %put macro variable height_Tom: &height_Tom; macro variable height_Tom: 60 413 %put macro variable height_Mary: &height_Mary; macro variable height_Mary: 62 414 %put macro variable height_Helen: &height_Helen; macro variable height_Helen: 64 Log: 64 62 60 65 height f Helen 4 f Mary 3 m Tom 2 m John 1 sex name
106. PROCESSING MACRO VARIABLES DURING THE EXECUTION OF PROC SQL PROC SQL <PRINT|NOPRINT>; SELECT column1 <, column2, …> INTO :macro-variable1_1 - :macro-variable1_n < NOTRIM> <, :macro-variable2_1 - :macro-variable2_n < NOTRIM>, …> FROM table |view <other clauses>; QUIT ; into :name1 - :name4, :height1 - :height4 64 62 60 65 height f Helen 4 f Mary 3 m Tom 2 m John 1 sex name name1 name2 name3 name4 height1 height2 height3 height4