CoolSpools Spool Converter User Guide V6R1  
Page: 
351
www.ariadnesoftware.co.uk
Specifies the value against which the test occurs. The value of the data item is 
compared to the value specified here. 
Often the special *PRV value will be needed. This denotes the previous value of 
the data item. For example, in the Customer Order Report, a new section starts 
when the region code changes, which is specified as: 
*IF REGION_CODE *NE *PRV 
Included lines 
List the line types which form part of this section. 
Press F4 to select from a list. Multiple selections can be made by inputting 1 against 
each line type to be included in the section. 
Saving the item definition 
When you have finished defining the section press F9 to save your changes.  
You will be returned to the main screen.  
Repeat the above steps until all sections in the report for which you wish to process 
data have been correctly defined to and identified by CoolSpools.  
Press F14 to display the section associated with a line.
Command-line alternative 
You can also add sections to a report definition using the ADDRPTSCT command. 
Report sections can be changed with CHGRPTSCT, removed with RMVRPTSCT, 
copied with CPYRPTSCT, displayed with DSPRPTSCT and renamed with 
RNMRPTSCT.
6. Create a Report-to-XML Map 
Now that you have created a report definition, CoolSpools knows how the 
information in your report is structured, so when it processes your report as the input 
to a conversion, it knows where to find the information the report contains and how 
the various parts of the report relate to one another. Now you can use your report as 
the input to the CVTSPLXML (Convert Spooled File to XML) and CVTSPLXL 
(Convert Spooled File to Excel) commands in order to generate complex XML and 
Excel files, but first you must tell CoolSpools how you want to structure the output 
you create, i.e. the XML documents and Excel spreadsheets you create.  
First, we’ll create a report
-to-XML map to create some XML. A sample Report-to-
XML map for the demo Customer Order Report DM_ORDRPT1 is supplied with 
CoolSpools. A report-to-XML map tells CoolSpools how to map between a report 
and a definition.  
Source code for all commands shown below can be found in demo source file 
DM_CLSRC supplied with CoolSpools. 
Run WRKRPTXML (Work with Report-to-XML Maps) and press F6=Create or use 
the CRTRPTXML (Create Report-to-XML Map) command to create a new map, e.g. 
CRTRPTXML 
MAPNAME(CUSTOMER_ORDERS) 
REPORTNAME(CUSTOMER_ORDERS) 
DFTUSEAUT(*ALLOWED)  
Pdf bookmarks - add, remove, update PDF bookmarks in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your C# Project with Rapid PDF Internal Navigation Via Bookmark and Outline
export excel to pdf with bookmarks; bookmark pdf documents
Pdf bookmarks - VB.NET PDF bookmark library: add, remove, update PDF bookmarks in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your VB.NET Project with Rapid PDF Internal Navigation Via Bookmark and Outline
add bookmarks to pdf online; adding bookmarks to pdf
CoolSpools Spool Converter User Guide V6R1  
Page: 
352
www.ariadnesoftware.co.uk
DFTCHGAUT(*DENIED) 
TEXT('Example Report-to-XML map: Customer  
Order Report')  
ELMSEQOPT(*MAP) 
This creates a new report-to-XML map called CUSTOMER_ORDERS. On the 
REPORTNAME parameter, specify the name of the report definition you created 
earlier. This tells CoolSpools where to look for the definition of data items, sections 
etc that you will reference while specifying the map. 
The XML document we’re going to create will consist of a hierarchy or tree of 
elements something like this: 
customerOrders 
¦ 
region 
¦ 
state 
¦ 
customer 
¦ 
order 
1.  Add elements to a Report-to-XML Map 
Run WRKRPTXML (Work with Report-to-XML Maps), select 8=Elements against the 
report-to-XML map you just created and press F6=Create, or use the ADDRPTXMLE 
(Add Report-to-XML Map Element) command to add a new element to the map. 
First add the root element customerOrders, something like this: 
ADDRPTXMLE  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customerOrders) 
PARENT(*NONE)  
SEQNBR(*NONE) 
ITEMNAME(*NONE) 
TEXT('Root Element for Customer Orders Report')  
NEWELMOPT(*NEVER) 
Note that element names are case-sensitive (like most things XML) and can be up to 
50 characters long. 
This will be the root element of the XML document because it has no parent element 
(PARENT(*NONE) was specified. You must also specify NEWELMOPT(*NEVER) for 
the root element, indicating that a new element is never created: there will be just the 
one node of this type in the entire document and it will be the parent or ancestor of 
all other nodes. 
ITEMNAME(*NONE) is specified because this element will have no text node: it will 
consist entirely of child elements and attributes, which will be defined later. 
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
document file. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while compressing. Also a preview
pdf export bookmarks; adding bookmarks to pdf reader
C# PDF File Split Library: Split, seperate PDF into multiple files
Split PDF file by top level bookmarks. The following C# codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
editing bookmarks in pdf; adding bookmarks to pdf document
CoolSpools Spool Converter User Guide V6R1  
Page: 
353
www.ariadnesoftware.co.uk
Now define a child element of the root called region corresponding to the REGION 
section of the report. A new region element will be started every time a new REGION 
section starts: 
ADDRPTXMLE  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(region) 
PARENT(customerOrders)  
SEQNBR(1) 
ITEMNAME(*NONE)  
Customer Orders Report') 
NEWELMOPT(*SECTION)  
SECTION(REGION) 
Now define a child element of region called state corresponding to the STATE 
section of the report.  
ADDRPTXMLE  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(state) 
PARENT(region)  
SEQNBR(1)  
ITEMNAME(*NONE) 
TEXT('State element for Customer Orders Report')  
NEWELMOPT(*SECTION)  
SECTION(STATE) 
Next define a child element of state called customer corresponding to the 
CUSTOMER section of the report.  
ADDRPTXMLE  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customer) 
PARENT(state)  
SEQNBR(1)  
ITEMNAME(*NONE) 
TEXT('Customer element for Customer Orders Report')  
NEWELMOPT(*SECTION) 
SECTION(CUSTOMER) 
Finally, define a child element of customer called order corresponding to the 
ORDER_LINE line type of the report. A new order node will be created every time a 
new ORDER_LINE line is encountered. 
ADDRPTXMLE  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(order) 
PARENT(customer)  
SEQNBR(1) 
ITEMNAME(*NONE)  
TEXT('Order element for Customer Orders Report')  
NEWELMOPT(*LINE) 
LINENAME(ORDER_LINE) 
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Demo Code in VB.NET. The following VB.NET codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
bookmark page in pdf; how to bookmark a pdf page
C# PDF File Compress Library: Compress reduce PDF size in C#.net
NET framework. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while compressing. C# class demo
split pdf by bookmark; copy pdf bookmarks
CoolSpools Spool Converter User Guide V6R1  
Page: 
354
www.ariadnesoftware.co.uk
7. Add attributes to Report-to-XML Map Elements 
Run WRKRPTXML (Work with Report-to-XML Maps), select 8=Elements against the 
report-to-XML map you created earlier, then select 9=Attributes against the root 
element customerOrders and press F6=Create, or else use the ADDRPTXMLA (Add 
Report-to-XML Map Attribute) command to add a new attribute to the root element 
customerOrders. 
First we’ll add attributes corresponding to the report
-level data items, namely the 
from- and to-dates and the report totals. 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customerOrders) 
ATTRIBUTE(fromDate)  
SEQNBR(1) 
ITEMNAME(FROM_DATE *DATE)  
TEXT('From date') 
Note that attribute and element names are both case-sensitive (as per XML) and can 
be up to 50 characters long. 
ITEMNAME(FROM_DATE) is specified here to tell CoolSpools to derive the value of 
this attribute from the current value of the report data item called FROM_DATE you 
defined earlier. 
Now define the other attributes for the root element:                                                                                  
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customerOrders) 
ATTRIBUTE(toDate)  
SEQNBR(2) 
ITEMNAME(TO_DATE *DATE)  
TEXT('To date') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customerOrders) 
ATTRIBUTE(cost)  
SEQNBR(3) 
ITEMNAME(REPORT_TOTAL_COST *NUMERIC) 
TEXT('Report total cost') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customerOrders) 
ATTRIBUTE(value)  
SEQNBR(4) 
ITEMNAME(REPORT_TOTAL_VALUE *NUMERIC) 
TEXT('Report total value') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customerOrders) 
.NET PDF SDK - Description of All PDF Processing Control Feastures
Fully featured PDF Viewer in HTML5; Outstanding rendering of PDF documents; Full page navigation, zooming & rotation; Outlines, bookmarks, & thumbnail display;
export bookmarks from pdf to excel; add bookmarks to pdf reader
XDoc.Word for .NET, Advanced .NET Word Processing Features
& rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Conversion. Word Create. Create Word from PDF; Create Word
how to create bookmarks in pdf file; how to create bookmark in pdf with
CoolSpools Spool Converter User Guide V6R1  
Page: 
355
www.ariadnesoftware.co.uk
ATTRIBUTE(profit)  
SEQNBR(5) 
ITEMNAME(REPORT_TOTAL_PROFIT *NUMERIC) 
TEXT('Report total profit') 
Now define the attributes for the other elements: 
/* Region element */ 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ATTRIBUTE(code)  
SEQNBR(1) 
ITEMNAME(REGION_CODE *ALPHA)  
TEXT('Region code') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(region) 
ATTRIBUTE(cost)  
SEQNBR(3)  
ITEMNAME(REGION_TOTAL_COST *NUMERIC) 
TEXT('Region total cost') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(region)  
ATTRIBUTE(name)  
SEQNBR(2)  
ITEMNAME(REGION_NAME *ALPHA)  
TEXT('Region name') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(region) 
ATTRIBUTE(profit)  
SEQNBR(5) 
ITEMNAME(REGION_TOTAL_PROFIT *NUMERIC) 
TEXT('Region total profit') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(region) 
ATTRIBUTE(value)  
SEQNBR(4)  
ITEMNAME(REGION_TOTAL_VALUE *NUMERIC) 
TEXT('Region total value') 
/* State element */ 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(state) 
XDoc.Excel for .NET, Comprehensive .NET Excel Imaging Features
zooming & rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Excel Convert. Convert Excel to PDF; Convert Excel
how to add bookmarks to pdf document; how to bookmark a pdf document
XDoc.PowerPoint for .NET, All Mature Features Introductions
& rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. PowerPoint Convert. Convert PowerPoint to PDF; Convert
convert word to pdf with bookmarks; creating bookmarks pdf
CoolSpools Spool Converter User Guide V6R1  
Page: 
356
www.ariadnesoftware.co.uk
ATTRIBUTE(code)  
SEQNBR(1) 
ITEMNAME(STATE_CODE *ALPHA)  
TEXT('State code') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(state) 
ATTRIBUTE(cost)  
SEQNBR(3) 
ITEMNAME(STATE_TOTAL_COST *NUMERIC) 
TEXT('State total cost') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(state) 
ATTRIBUTE(name)  
SEQNBR(2) 
ITEMNAME(STATE_NAME *ALPHA)  
TEXT('State name') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(state) 
ATTRIBUTE(profit)  
SEQNBR(5) 
ITEMNAME(STATE_TOTAL_PROFIT *NUMERIC) 
TEXT('State total profit') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(state) 
ATTRIBUTE(value)  
SEQNBR(4) 
ITEMNAME(STATE_TOTAL_VALUE *NUMERIC) 
TEXT('State total value') 
/* Customer element */ 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customer) 
ATTRIBUTE(cost)  
SEQNBR(3) 
ITEMNAME(CUST_TOTAL_COST *NUMERIC) 
TEXT('Customer total cost') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customer) 
ATTRIBUTE(name)  
SEQNBR(2) 
CoolSpools Spool Converter User Guide V6R1  
Page: 
357
www.ariadnesoftware.co.uk
ITEMNAME(CUSTOMER_NAME *ALPHA) 
TEXT('Customer name') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customer) 
ATTRIBUTE(number)  
SEQNBR(1) 
ITEMNAME(CUSTOMER_NUMBER *NUMERIC) 
TEXT('Customer number') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customer) 
ATTRIBUTE(profit)  
SEQNBR(5)  
ITEMNAME(CUST_TOTAL_PROFIT *NUMERIC)  
TEXT('Customer total profit') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(customer)  
ATTRIBUTE(value)  
SEQNBR(4)  
ITEMNAME(CUST_TOTAL_VALUE *NUMERIC) 
TEXT('Customer total value') 
/* Order element */ 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(order)  
ATTRIBUTE(cost)  
SEQNBR(3)  
ITEMNAME(ORDER_COST *NUMERIC)  
TEXT('Order cost') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(order)  
ATTRIBUTE(date)  
SEQNBR(2)  
ITEMNAME(ORDER_DATE *DATE)  
TEXT('Order date') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(order)  
ATTRIBUTE(number)  
SEQNBR(1)  
ITEMNAME(ORDER_NUMBER *NUMERIC) 
TEXT('Order number') 
CoolSpools Spool Converter User Guide V6R1  
Page: 
358
www.ariadnesoftware.co.uk
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(order)  
ATTRIBUTE(profit)  
SEQNBR(5)  
ITEMNAME(ORDER_PROFIT *NUMERIC)  
TEXT('Order profit') 
ADDRPTXMLA  
MAPNAME(CUSTOMER_ORDERS)  
ELEMENT(order)  
ATTRIBUTE(value)  
SEQNBR(4)  
ITEMNAME(ORDER_VALUE *NUMERIC)  
TEXT('Order value') 
8. Use a Report-to-XML Map to generate an XML document 
Now you have defined your report-to-XML map, you can use it to convert a spooled 
file of the right type to an XML document. Run something like this: 
CVTSPLXML  
MAPNAME(CUSTOMER_ORDERS)  
FROMFILE(DM_ORDRPT1)  
TOSTMF(DM_ORDRPT1.xml)  
SPLNBR(*LAST)  
STMFOPT(*REPLACE)                                                  
and the resultant XML document should look like the sample file supplied with 
CoolSpools and stored in the IFS as 
/ariadne/CoolSpoolsV6R1/samples/dm_ordrpt1.xml   
9. Create a Report-to-Excel Map 
The process of creating a Report-to-Excel map is very similar to that of creating a 
report-to-XML map, except that you will work in terms of row groups rather than 
elements and cells rather than attributes. 
Source code for all commands shown below can be found in demo source file 
DM_CLSRC supplied with CoolSpools. 
A row group is a set of one or more related rows that are output to the Excel 
worksheet as a group.  
A cell is a single cell (row/column intersection) within a row group, with a value which 
is either a text constant or a variable derived from a report data item. 
Run WRKRPTXL (Work with Report-to-Excel Maps) and press F6=Create or use the 
CRTRPTXL (Create Report-to-Excel Map) command to create a new map, e.g. 
CRTRPTXL    
MAPNAME(CUSTOMER_ORDERS) 
REPORTNAME(CUSTOMER_ORDERS) 
DFTUSEAUT(*ALLOWED 
CoolSpools Spool Converter User Guide V6R1  
Page: 
359
www.ariadnesoftware.co.uk
DFTCHGAUT(*DENIED) 
TEXT('Report-to-Excel map for Customer  Order Report') 
GRPSEQOPT(*MAP))                                                                                                                              
This creates a new report-to-Excel map called CUSTOMER_ORDERS. On the 
REPORTNAME parameter, specify the name of the report definition you created 
earlier. This tells CoolSpools where to look for the definition of data items, sections 
etc that you will reference while specifying the map. 
The Excel file 
document we’re going to create will consist of a 
set of different row 
types for the region, state, customer and each customer order. 
10.  Add row groups to a Report-to-Excel Map 
Run WRKRPTXL (Work with Report-to-Excel Maps), select 8=Row groups against 
the report-to-Excel map you just created and press F6=Create, or use the 
ADDRPTXLR (Add Report-to-Excel Row Group) command to add a new row group 
to the map. 
An Excel map does not need a root row group in the same way an XML map 
requires a root element. However, like XML elements, Excel row groups can be 
nested inside one another in a parent-child relationship. It is important to define 
these relationships correctly in order to obtain the right results. The Excel file is built 
by using the Excel map as a template to generate a tree structure from the report 
data and the structure of the map you define is crucial in determining the structure of 
the Excel files you create. Specifically, rows in the Excel file are output in the 
sequence of the corresponding row groups at a particular level in the hierarchy of 
row groups in the Excel map. 
For example, if you were to define an Excel map for the Customer Orders Report 
that had row groups corresponding to the region, state and customer sections at the 
same level, like this: 
Map 
_________________________________ 
¦                ¦                ¦                 
Region 
State  
Customer 
the resultant Excel file would have rows for all of regions first, then rows for all 
states, then rows for all customers, thus: 
Region = NORTHEAST 
Region = SOUTH 
Region = WEST 
... 
State = MASSACHUSETTS 
State = NEW JERSEY 
State = NEW YORK 
... 
CoolSpools Spool Converter User Guide V6R1  
Page: 
360
www.ariadnesoftware.co.uk
Customer = TRULY TASTY TURNIPS 
Customer = PRAIRIE TREE AND SEED 
Customer = EVERGREEN & HARWOOD SEEDS   
... 
whereas defining the correct hierarchy thus: 
Map 
¦ 
Region 
¦ 
State 
¦ 
Customer 
would give properly nested results, thus: 
Region = NORTHEAST 
State = MASSACHUSETTS 
Customer =  TRULY TASTY TURNIPS 
... 
State = NEW JERSEY 
Customer = PRAIRIE TREE AND SEED 
... 
State = NEW YORK 
Customer = EVERGREEN & HARWOOD SEEDS   
... 
Region = SOUTH 
State = FLORIDA 
Customer = SARAH'S SAFARI FRUITS 
Customer =  ABUNDANT FRUIT & FLOWERS     
... 
Note that unlike element names, row group name are not case-sensitive and 
conform to the normal conventions for system i object names, except that they can 
be up to 20 characters long. 
The commands  
Add the following row groups: 
ADDRPTXLR  
MAPNAME(CUSTOMER_ORDERS)  
ROWGRPNAME(CUSTOMER_ORDERS)  
Documents you may be interested
Documents you may be interested