display pdf in asp.net page : Rotate pages in pdf and save software application dll windows winforms azure web forms 136-301-part184

11 
Figure 8.  Corrected ODS HTML Output Viewed Using Microsoft Excel 
We will now focus on making the final corrections to the XML file that’s generated by ODS.  In a previous section, we 
discussed using style overrides to handle the missing leading zeros problem when the XML file is opened by using 
Excel.  There are still two outstanding issues with the format of the XML file: the green background is mapped to 
gray by Excel, and all cell border lines are missing.  Both of these problems can be solved by creating a new ODS 
style to use with Excel. 
If you examine the XML file that’s generated by ODS and identify the cells that have missing border lines, you’ll see 
StyleID="Header", StyleID="RowHeader", and StyleID="Data" in the Cell tags.  When you further examine the XML 
Hands-on Workshops
SUGI 30
0
Rotate pages in pdf and save - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
rotate pages in pdf; pdf expert rotate page
Rotate pages in pdf and save - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
rotate pdf pages on ipad; rotate single page in pdf
12 
file, you’ll see the following definitions for the Header, RowHeader, and Data styles: 
<Style ss:ID="Header"> 
<ss:Borders> 
<ss:Border ss:Position="Left" /> 
<ss:Border ss:Position="Top" /> 
<ss:Border ss:Position="Right" /> 
<ss:Border ss:Position="Bottom" /> 
</ss:Borders> 
<Interior ss:Color="#C4E4B8" 
ss:Pattern="Solid" /> 
. . .  
</Style> 
<Style ss:ID="RowHeader"> 
<ss:Borders> 
<ss:Border ss:Position="Left" /> 
<ss:Border ss:Position="Top" /> 
<ss:Border ss:Position="Right" /> 
<ss:Border ss:Position="Bottom" /> 
</ss:Borders> 
<Interior ss:Color="#C4E4B8" 
ss:Pattern="Solid" /> 
. . .  
</Style> 
<Style ss:ID="Data"> 
<ss:Borders> 
<ss:Border ss:Position="Left" /> 
<ss:Border ss:Position="Top" /> 
<ss:Border ss:Position="Right" /> 
<ss:Border ss:Position="Bottom" /> 
</ss:Borders> 
<Interior ss:Color="#FFFFCD" 
ss:Pattern="Solid" /> 
. . .  
</Style> 
The Header and RowHeader styles are using the unsupported green color for the background color of the cells.  This 
can be corrected by using the MSOBanker style that you created earlier.  The Border tags of each style have only a 
Position attribute and lack attributes to indicate the thickness or other properties of the border lines.  You could 
modify the MSOBanker style to change the border width, but that would affect the already good-looking border lines 
in the HTML files.  The best solution is to create a new style for use with the ExcelXP tagset by using the following 
code: 
libname myLib 'directory-for-style'; * location to store the style; 
ods path myLib.tmplmst(update) sashelp.tmplmst(read); 
proc template; 
define style styles.XLBanker; 
parent = styles.MSOBanker; 
style Header from Header / 
borderwidth=2; 
style RowHeader from RowHeader / 
borderwidth=2; 
style Data from Data / 
borderwidth=2; 
end; 
run; quit; 
This new style, named XLBanker, will be stored in myLib.tmplmst.  XLBanker has all the attributes of the parent 
MSOBanker style that was created earlier.  The only difference is that border line widths were adjusted for use with 
Excel XML. 
You can use the XLBanker style to create a new XML file by specifying the style name in an ODS statement and 
opening the resulting XML file with Excel.  To continue using the original sample code (page 3) with the style 
overrides discussed in a previous section, change the ODS statement as shown next: 
ods listing close; 
ods tagsets.ExcelXP style=XLBanker file='aedata.xml'; 
*  PROC PRINT code w/ style overrides and PROC TABULATE code here; 
ods tagsets.ExcelXP close; 
Figure 9 shows the results of opening the XML file by using Excel.  All the formatting problems have been corrected 
by using a combination of style overrides and the new XLBanker style.  Complete code for correcting the XML output 
can be found in the Appendix in the section "Corrected Code to Export SAS Output to Excel as XML". 
Hands-on Workshops
SUGI 30
0
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
doc.Save(outPutFilePath). How to VB.NET: Delete Consecutive Pages from PDF. This is a VB .NET example for how to delete a range of pages from a PDF document.
save pdf rotated pages; how to rotate a page in pdf and save it
C# PDF Page Insert Library: insert pages into PDF file in C#.net
how to merge PDF document files by C# code, how to rotate PDF document page doc2.Save(outPutFilePath Add and Insert Multiple PDF Pages to PDF Document Using
pdf page order reverse; rotate pages in pdf expert
13 
Figure 9.  Corrected ODS XML Output Viewed Using Microsoft Excel after Resizing Columns Manually 
MOVING EXCEL DATA TO SAS 
Figure 10 shows the Excel workbook that we want to import into SAS.  The workbook contains four worksheets.  We 
want to import the data from each worksheet into a different SAS table, and use the name of the worksheet for the 
table name.  The sections that follow explain how to save the workbook as an XML file, and then how to load the 
workbook into SAS using a provided SAS macro and SAS XMLMap, both designed specifically for Excel XML data. 
All the necessary SAS code is supplied for you. 
To download the sample data, SAS macro, and SAS XMLMap, go to the SAS Presents Web site at 
http://support.sas.com/saspresents Find the entry "From SAS to Excel via XML". There you’ll find a download 
package that has all the files you need. 
Hands-on Workshops
SUGI 30
0
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
doc.DeletePage(2); // Save the file. doc.Save(outPutFilePath); Demo Code: How to Delete Consecutive Pages from PDF in C#.NET. How
how to rotate all pages in pdf in preview; pdf rotate pages separately
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
Able to extract PDF pages and save changes to original PDF file in C#.NET. C#.NET Sample Code: Extract PDF Pages and Save into a New PDF File in C#.NET.
pdf rotate pages separately; reverse pdf page order online
14 
Figure 10.  Excel Workbook with Data to Import into SAS 
SAVING AN EXCEL WORKBOOK AS XML 
You must save an Excel workbook as an XML file before you can import it into SAS.  To do this, in Excel, select  
File  Save As, and choose "XML Spreadsheet (*.xml)".  Specify a name and a directory for the file.  For the 
purpose of this paper, we saved the XML in a file named mydata.xml. 
To ensure that SAS can access the mydata.xml file, you can save the file on a network-accessible drive.  Then you 
can access the file as if it were native to the operating environment where SAS is installed.  Another solution is to 
save the file to a location that is under the control of a Web server.  SAS will then be able to read the file using the 
URL access method, which is part of Base SAS.  These techniques are useful if SAS and Excel are installed on 
different machines.  If neither of these options is available to you, using FTP or some other method, move the file 
from the Windows machine to the machine that SAS is installed on. 
If you place the files where others can access them, be sure to set file permissions to prevent accidental alteration. 
AUTOMATIC DATA CONVERSION BETWEEN EXCEL AND SAS 
You need to be aware of some of the behaviors to expect when converting Excel data to SAS data.  As mentioned 
earlier, when the worksheets in Figure 10 are imported into SAS tables, the name of the worksheet (for example, 
"Chemicals") is used as the SAS table name.  However, the technique of using the worksheet name for the table 
name doesn’t always work.  For example, a worksheet named "40-107 Senate Voting" can’t be used for the SAS 
table name because it begins with a number and contains invalid characters (the spaces and a dash).  Therefore, 
the provided SAS code that loads the worksheet into SAS must convert the "4" and other invalid characters to an 
underscore ( _ ).  In this case, the resulting SAS table name would be "_0_107_senate_voting".  In the same way, 
importing a worksheet named "Health & Wellness Resources" would result in a table named 
"Health___wellness_resources". 
Attempting to use Excel column labels for SAS table column names can result in a similar problem.  Notice that none 
of the column labels in Figure 10 can be used as SAS column names because they all contain invalid characters 
such as blanks, parentheses, and the forward slash ( / ).  Additionally, the first column does not have a label.  The 
SAS code that loads the worksheet into SAS must create valid column names by converting invalid characters to an 
underscore ( _ ).  SAS column labels are set to the original value of the Excel label.  Table 1 shows examples of how 
some of the Excel column labels in Figure 10 will be converted to SAS column names. 
Hands-on Workshops
SUGI 30
0
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
outPutFilePath As String = Program.RootPath + "\\" Output.pdf" Dim doc1 doc2.InsertPages(pages, pageIndex) ' Output the new document doc2.Save(outPutFilePath
permanently rotate pdf pages; how to rotate page in pdf and save
How to C#: Rotate Image according to Specified angle
pages edit, C#.NET PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB Steps to Rotate image.
rotate individual pages in pdf; how to rotate a single page in a pdf document
15 
SAS Table Name 
SAS Label 
Chemicals 
Chemicals 
Graphics_cards 
Graphics Cards 
Health___wellness_resources 
Health & Wellness Resources 
_0_107_senate_voting 
40-107 Senate Voting 
Table 2.  SAS Tables Created from the Excel Workbook 
rkbook 
Excel Column Label 
SAS Column Name 
SAS Column Label 
(blank) 
A unique 32-character name starting with an 
underscore ( _ ) 
Pixel pipelines 
Pixel_pipelines 
Pixel pipelines 
Peak fill rate (Mpixels/s) 
Peak_fill_rate__Mpixels_s_ 
Peak fill rate (Mpixels/s) 
Table 1.  Conversion of Excel Column Labels to SAS Column Names 
THE SAS XML LIBNAME ENGINE (SXLE) AND XMLMAPS 
The SAS XML LIBNAME Engine can import an XML file into a SAS table or export a SAS table as an XML file.  Thus, 
you can use the SXLE to exchange data between SAS and third-party, XML-aware applications such as Excel. 
Although the SXLE has been available since SAS release 8.1, recent improvements have made it possible to 
precisely control how data is imported.  The new SAS XMLMap enables you to map any XML element or attribute to 
a column or a row in a SAS table.  The SXLE then uses the XMLMap to control how the XML data is imported into a 
SAS table.  You can create the XMLMap by using the new XML Mapper (formerly know as XML Atlas), which 
provides a point-and-click interface. 
READING EXCEL XML INTO SAS 
You can use the SAS LIBNAME Engine and a SAS XMLMap that you created to import an Excel XML file into SAS. 
However, because the Excel XML format and the data conversion issues are quite complex, SAS provides an 
XMLMap and corresponding SAS code specific to Excel that loads the Excel XML into SAS tables.  As mentioned 
earlier, both of these components and a SAS macro to import the XML data are available for download from the SAS 
Presents Web site at http://support.sas.com/saspresents.   
Download the XMLMap and the SAS macro and make the two files available on the platform where SAS is installed.  
This paper assumes that you saved the SAS XMLMap in a file named excelxp.map and the SAS macro for loading 
the XML data was stored in a file named loadxl.sas.  The file loadxl.sas contains a SAS macro named 
XLXP2SAS, which is used to import the Excel XML file into SAS tables. 
The easiest way to explain how to use the macro is with a few examples.  First, let’s look at importing the XML 
workbook shown in Figure 10 when either SAS is installed on the same machine that has the XML file or SAS is 
installed on a different machine or platform, but the XML file is accessible via a network drive.  To import the 
workbook into SAS, submit the following code, making sure to include the appropriate directory paths: 
! %include 'loadxl.sas'; 
" %xlxp2sas(excelfile=mydata.xml,  
mapfile=excelxp.map); 
The first statement (!) makes the XLXP2SAS macro available to SAS.  The second statement (") imports the data 
from all the worksheets into separate SAS tables.  By default, the SAS tables are created in the WORK library.  You 
can control which library is used to store the SAS tables by specifying the LIBRARY argument in the XLXP2SAS 
macro.  For example, to store the tables in the SASUSER library, submit this code: 
%xlxp2sas(excelfile=mydata.xml,  
mapfile=excelxp.map, 
library=sasuser); 
Table 2 lists the SAS tables that 
were created as a result of importing 
the Excel workbook shown in Figure 
10.  Although the SAS table names 
might look a bit odd, the actual 
worksheet names are used in the 
SAS labels. 
Hands-on Workshops
SUGI 30
0
C# Create PDF from Tiff Library to convert tif images to PDF in C#
Similarly, Tiff image with single page or multiple pages is supported. Description: Convert to PDF and save it on the disk. Parameters:
rotate pages in pdf permanently; how to rotate just one page in pdf
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Able to get word count in PDF pages. Change Word hyperlink to PDF hyperlink and bookmark. Description: Convert to PDF/TIFF and save it on the disk.
pdf expert rotate page; rotate pdf pages in reader
16 
Figure 11 shows a portion of the Graphics Cards table.  By comparing Figures 10 and 11, you can see that the 
XLXP2SAS macro successfully imported the "Graphics Cards" worksheet as a SAS table.  For instance, the columns 
"Pixel pipelines" and "Memory bus width (bits)" were both correctly typed as character, because those columns 
contain data such as "2*2" and "128*2", respectively.  
Figure 11.  SAS Graphics Cards Table Created by Importing the Excel Workbook 
Up to this point, the assumption is that the XML file resides on the same machine as SAS or was available via a 
network drive.  However, if the XML file resides on the Web server of a remote machine, you can use the URL 
access method to retrieve the file by submitting the following code: 
filename myxml URL 'http://Web-server/mydata.xml'; 
%xlxp2sas(excelfile=FILEREF:myxml,  
mapfile=excelxp.map); 
The submitted code causes XLXP2SAS to contact the Web server to retrieve the XML file, rather than looking for it 
on a local disk.  The FILEREF modifier can also be used with the MAPFILE argument to retrieve the SAS XMLMap 
from a Web server.  Documentation for the XLXP2SAS macro can be found in the Appendix in the section 
“XLXP2SAS Macro”. 
XLXP2SAS DRAWBACKS AND LIMITATIONS 
Here are a few issues surrounding XLXP2SAS that you should be aware of. 
•  XLXP2SAS creates temporary tables in the WORK library.  These tables can get very large.  However, this 
is generally not a problem, unless your system is very low in disk space, because the temporary files are 
automatically cleaned up after XLXP2SAS runs (unless the argument CLEANUP=N  was specified). 
•  The data in every worksheet that you want to import must be fairly rectangular.  Although the XLXP2SAS 
macro attempts to handle non-rectangular data by adding missing values, the results can be unpredictable 
if the data is too sparse. 
•  By default, XLXP2SAS runs with the argument HASLABELS=Y.  This implies that all worksheets in a 
workbook have column labels in the first row.  If none of your worksheets contain column labels in the first 
row, specify HASLABELS=N when you invoke XLXP2SAS.  The HASLABELS argument applies to all 
worksheets in a workbook. 
• 
If you specify HASLABELS=N, the column names in the SAS table(s) will be in the form "COLUMN1", 
"COLUMN2", "COLUMN3", and so on, and the respective column labels will be "Column 1", "Column 2"
and 
"Column 3".
Hands-on Workshops
SUGI 30
0
17 
SAS SERVER TECHNOLOGY 
If you have licensed SAS/IntrNet software, you can dynamically incorporate SAS output into Excel by using the 
Application Dispatcher.  You can perform similar tasks with the Stored Process Server, which is new for SAS 9.1. 
The Application Dispatcher and the Stored Process Server enable you to execute SAS programs from a Web 
browser or any other client that can open an HTTP connection to either of these SAS servers (which can run on any 
platform where SAS is licensed).  The SAS programs that you execute from the browser can contain any 
combination of DATA step, PROC, MACRO, or SCL code.  Thus, all the code that’s been shown up to this point can 
be executed by using either Application Dispatcher or the Stored Process Server. 
Detailed information about using these products to facilitate data interchange between SAS and Microsoft Office is 
presented in the previously mentioned SUGI Conference Papers (DelGobbo, 2002, 2003, 2004). 
CONCLUSION 
Using ODS to generate HTML and XML output is an effective method of incorporating SAS output in Excel and Word 
documents.  Although, initially, you might encounter formatting problems when using this technique, by using ODS 
style overrides and PROC TEMPLATE, you can correct these problems.  
The SAS 9.1 ExcelXP tagset complies with the Microsoft XML Spreadsheet Specification and provides an easy way 
to export your data to Excel workbooks that contain multiple worksheets.  While it might be a bit cumbersome to use 
the SXLE and XMLMaps to import Excel data to SAS, the use of the XLXP2SAS macro greatly simplifies the task. 
APPENDIX 
CODE FOR CREATING THE MSOBANKER STYLE 
libname myLib 'directory-for-style'; * location to store the style; 
ods path myLib.tmplmst(update) sashelp.tmplmst(read); 
proc template; 
define style styles.MSOBanker; 
parent = styles.Banker; 
replace colors / 
'headerfgemph'   = cx033366 
'headerbgemph'   = cxFFFFCD 
'headerfgstrong' = cx033366 
'headerbgstrong' = cxFFFFCD 
'headerfg'       = cx033366 
'headerbg'       = cxCCFFCC 
'datafgemph'     = cx000000 
'databgemph'     = cxFFFFCD 
'datafgstrong'   = cx000000 
'databgstrong'   = cxFFFFCD 
'datafg'         = cx000000 
'databg'         = cxFFFFCD 
'batchfg'        = cx000000 
'batchbg'        = cxFFFFCD 
'tableborder'    = cx000000 
'tablebg'        = cx000000 
'notefg'         = cx033366 
'notebg'         = cxFFFFCD 
'bylinefg'       = cx033366 
'bylinebg'       = cxFFFFCD 
'captionfg'      = cx033366 
'captionbg'      = cxFFFFCD 
'proctitlefg'    = cx033366 
'proctitlebg'    = cxFFFFCD 
'titlefg'        = cx033366 
Hands-on Workshops
SUGI 30
0
18 
'titlebg'        = cxFFFFCD 
'systitlefg'     = cx033366 
'systitlebg'     = cxFFFFCD 
'Conentryfg'     = cx033366 
'Confolderfg'    = cx033366 
'Contitlefg'     = cx033366 
'link2'          = cx800080 
'link1'          = cx0000FF 
'contentfg'      = cx000000 
'contentbg'      = cxFFFFCD 
'docfg'          = cx033366 
'docbg'          = cxFFFFCD; 
end; 
run; quit; 
Notice that cx000000 is black, cx800080 is purple and cx0000FF is blue.  According to Figure 6, these colors are 
supported by Excel by default, so no remapping is needed for these colors. 
CORRECTED CODE TO EXPORT SAS OUTPUT TO EXCEL OR WORD AS HTML 
ods listing close; 
ods tagsets.MSOffice2K style=MSOBanker file='aedata.htm'; 
title; footnote; 
proc print data=pharma.phcae noobs label; 
by protocol; 
var patient visit; 
var aedate / style={htmlstyle="mso-number-format:ddmmmyyyy"}; 
var aecode / style={htmlstyle="mso-number-format:00000000"}; 
var aetext aesev aesevc frequency; 
run; quit; 
proc tabulate data=pharma.phcae; 
by protocol; 
var aesev; 
class aetext aesevc; 
table aetext*aesevc,aesev*pctn; 
keyword all pctn; 
keylabel pctn='Percent'; 
run; quit; 
ods tagsets.MSOffice2K close; 
CORRECTED CODE TO EXPORT SAS OUTPUT TO EXCEL AS XML 
ods listing close; 
ods tagsets.ExcelXP style=XLBanker file='aedata.xml'; 
title; footnote; 
proc print data=pharma.phcae noobs label; 
by protocol; 
var patient visit aedate; 
var aecode / style={tagattr="\00000000"}; 
var aetext aesev aesevc frequency; 
run; quit; 
proc tabulate data=pharma.phcae; 
by protocol; 
var aesev; 
class aetext aesevc; 
table aetext*aesevc,aesev*pctn; 
keyword all pctn; 
keylabel pctn='Percent'; 
run; quit; 
ods tagsets.ExcelXP close; 
Hands-on Workshops
SUGI 30
0
19 
XLXP2SAS MACRO  
The following table contains a list of the arguments that are supported by the XLXP2SAS macro.  All arguments 
require a value, except where a default value is indicated. 
Argument 
Description 
Default 
Value 
EXCELFILE 
Specifies the name and path for the Excel XML file that you want to import to 
SAS.  Do not use quotation marks in this value.  To specify a SAS FILEREF 
instead of a file, use FILEREF:fref, where fref is the FILEREF. 
MAPFILE 
Specifies the name and path of the SAS XMLMap for reading Excel XML files.  
Do not use quotation marks in this value.  To specify a SAS FILEREF instead of a 
file, use FILEREF:fref, where fref is the FILEREF.  You can download a copy of 
the XMLMap that’s provided by SAS under the entry "From SAS to Excel via 
XML" on the SAS Presents Web site at http://support.sas.com/saspresents.  
LIBRARY 
Specifies the name of the SAS library where imported tables are stored. 
WORK 
HASLABELS 
Specifies whether the worksheets have column labels in the first row of the Excel 
table.  This setting applies to all worksheets in a workbook.  If set to Y, the labels 
are used for the SAS column names and labels.  If your workbook does not have 
column labels in the first row of the Excel table, specify N. 
CLEANUP 
Controls whether temporary SAS files are deleted and whether to de-assign 
FILEREFs that were used when importing the Excel data to SAS.  FILEREFs that 
you explicitly assign with a FILEREF statement will not be de-assigned.  To 
disable this feature, specify N. 
VERBOSE 
Controls the level of debugging information written to the SAS Log.  Specify Y to 
activate this feature. 
REFERENCES 
DelGobbo, V. (2002), "Techniques for SAS® Enabling Microsoft® Office in a Cross-Platform Environment," 
Proceedings of the Twenty-Seventh Annual SAS Users Group International Conference, 27, CD-ROM.  Paper 174.    
Available http://www2.sas.com/proceedings/sugi27/p174-27.pdf 
DelGobbo, V. (2003), "A Beginner’s Guide to Incorporating SAS® Output in Microsoft® Office Applications", 
Proceedings of the Twenty-Eighth Annual SAS Users Group International Conference, 28, CD-ROM.  Paper 52.  
Available http://www2.sas.com/proceedings/sugi28/052-28.pdf 
SAS Institute Inc. (1999), "Chapter 5: The TEMPLATE Procedure", The Complete Guide to the SAS Output Delivery 
System, Version 8, Cary, NC: SAS Institute Inc. 
SAS Institute Inc. (2004), "Chapter 9: TEMPLATE Procedure: Creating a Style Definition", SAS 9.1 Output Delivery 
System, User's Guide, Cary, NC: SAS Institute Inc. 
"XML Spreadsheet Reference", Microsoft Corporation.  Available 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexcl2k2/html/odc_xmlss.asp 
FURTHER READING 
DelGobbo, V. (2004), "From SAS to Excel via XML".  Available http://support.sas.com/saspresents 
"Processing XML Documents with the Version 9 SAS XML LIBNAME Engine (SXLE)", SAS Institute Inc.  Available 
http://support.sas.com/rnd/base/topics/sxle90/#doc 
“XML Atlas”, SAS Institute Inc.  Available http://support.sas.com/rnd/base/topics/sxle90/#atlas 
“XMLMap Syntax Version 1.1”, SAS Institute Inc.  Available http://support.sas.com/rnd/base/topics/sxle90/#xmlmap 
Hands-on Workshops
SUGI 30
0
20 
ACKNOWLEDGMENTS 
The author would like to thank Chris Barrett of SAS Institute Inc. for his valuable contributions to this paper. 
CONTACT INFORMATION 
Your comments and questions are valued and encouraged.  Contact the author at: 
Vincent DelGobbo 
SAS Institute Inc. 
SAS Campus Drive 
Cary, NC 27513 
Phone: (919) 677-8000 
sasvcd@unx.SAS.com 
If your registered in-house or local SAS users group would like to request this presentation as your annual SAS 
presentation (as a seminar, talk, or workshop) at an upcoming meeting, please submit an online User Group 
Request Form (http://support.sas.com/usergroups/namerica/lug-form.html) at least eight weeks in advance. 
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.  
Hands-on Workshops
SUGI 30
0
Documents you may be interested
Documents you may be interested