|
-
The use of Microsoft Excel has become spread among both
skilled and non-skilled workers. It is a powerful
tool and data can be easily maintained and read for the ones using the
software. However, it is a difficult task to
make COBOL programs to read and to generate Excel spreadsheets. But now, we
have 50% of the road built.
-
Using the XML Standard, we can generate Excel Xml Files
that, once exported to Windows platform, can be opened using Excel. Using
Windows Explorer, open the folder where the file is located, right click the
file and click "Open With" Microsoft Office Excel.
-
This page shows how to use a kit of three COBOL
copylibs to be invoked by programs with the purpose of generating Excel Files.
-
The copylibs are available under HEPPS's
Sure inventory with the names ahead described:
HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPFDX (For File Section)
HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPWSX (For Working-Storage Section)
HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPPDX (For Procedure Division)
-
Focusing the principle of "WRITING LESS FOR
GETTING MORE", and using simple commands (SET, PERFORM and MOVE), files
can be easily generated minimizing the programmers' efforts for doing the task.
-
An Excel File is composed of rows and columns and the
codification to be used follows that principle. The limits are 256 columns and
65536 rows;
-
We can build a program for generating more than one
file per program. But first, I am going to show how to do
it generating just one EXCEL XML file per program and that is simpler.
Syntax rules for the generation of
just one Excel Xml File per program:
-
In the Environment Division, Input-Output Section,
File-Control the programmer must declare the file following the example
below:
SELECT EXCEL-FILE ASSIGN TO DISK.
-
The use of another internal name implies in the use of
replacing clauses in the copy commands ahead described.
-
External filenames can be set or changed in three ways:
a)
Using WFL Language File Equation's declaration:
FILE EXCEL-FILE = MYEXCELFILE ON DEV;
b)
Using WFL Language File Equation's commands:
EXCEL-FILE(TITLE=MYEXCELFILE
ON DEV);
c)
Inside the COBOL program, before file initialization perform command (To be
described ahead);
CHANGE ATTRIBUTE TITLE OF EXCEL-FILE TO "MYEXCELFILE ON DEV.".
-
In the Data Division, File Section the programmer must
insert the following command:
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPFDX".
-
In the Data Division, Working-Storage Section the
programmer must insert the following one:
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPWSX".
-
In the end of Procedure Division, the programmer must
insert:
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPPDX".
-
At this point the program should compile ok, but
no file will be generated if the object code runs.
-
The Excel Xml File must me initialized and the programmer
must insert the following perform command in the Procedure Division to do it.
Note that the EXCEL File will be opened by this command's execution. If
you want to change the Excel File's name in the COBOL code, the
change COBOL command must be executed before this one:
PERFORM INITIATE-EXCEL-FILE.
-
In the same way, a perform command must be inserted to
terminate the file's generation process:
PERFORM TERMINATE-EXCEL-FILE.
-
The Excel File is composed of rows and cells. For starting
writing a row the following command must be used:
PERFORM OPEN-EXCEL-ROW.
-
For finishing writing a row, use the following command:
PERFORM CLOSE-EXCEL-ROW.
-
For writing cells, the programmers may select a
data type for building them. A cell may contain a string, a number (Integer,
real or double, signed or unsigned), a currency, a date, a time, a datetime or
a boolean. If the programmer does not specify the data type, the string
one will be assumed by default.
-
The programmer must also use the input parameter provided by
the kit for informing the value to be stored in the cell. And, of course,
to perform the routine for writing the file's record.
-
Below is the syntax to specify the data type
is showed. As said, the programmer should choose one of them, otherwise string
will be assumed by default.
SET [EXCEL-DATATYPE-STRING,
EXCEL-DATATYPE-NUMBER,
EXCEL-DATATYPE-INTEGER,
EXCEL-DATATYPE-REAL,
EXCEL-DATATYPE-DOUBLE,
EXCEL-DATATYPE-DATE,
EXCEL-DATATYPE-BOOLEAN,
EXCEL-DATATYPE-DATETIME,
EXCEL-DATATYPE-TIME,
EXCEL-DATATYPE-CURRENCY] TO TRUE.
-
For specifying the value to be stored in the cell, a
value must be moved to the input parameter provided by the kit:
MOVE "MYVALUE"
TO EXCEL-VALUE.
-
Some limitations and defaults for strings apply:
All the values will be trimmed.
String's size
is limited to 180 characters.
High-Values
(@FF@), Low-Values (@00@), quotations,"<" and ">" are forbidden
characters and they will be replaced by spaces (@40@).
If quotations, "<" or ">" are desired to be in
strings, the programmer must respectively use the meta-characters
(") , (<) and (>).
If
the value informed is not a string, it will undergo to validation and if the
validation fails it will be transformed to string.
-
Below the rules for number, integer, real, double and
currency values are presented.The values should be
informed as edited strings with decimal-points (Real and double)
and with left sign (If negative).The
number's size and precision are limited by the limits imposed by UNISYS.
The number of numeric digits must not exceed 21 and the decimal-point floats.
Examples:
...
SET EXCEL-DATATYPE-NUMBER TO TRUE.
MOVE
"656" TO EXCEL-VALUE.
PERFORM WRITE-EXCEL-CELL.
...
SET EXCEL-DATATYPE--REAL TO TRUE.
MOVE
"-656.83248" TO EXCEL-VALUE.
PERFORM
WRITE-EXCEL-CELL.
...
SET EXCEL-DATATYPE-CURRENCY TO TRUE.
MOVE
"+19997656.88" TO EXCEL-VALUE.
PERFORM
WRITE-EXCEL-CELL.
...
-
Here are the rules for informing DATE cell values.
The date value must be informed using the "CCYYMMDD"
where CC=Century, YY=year, MM=Month and DD=day:
Example:
...
SET EXCEL-DATATYPE-DATE TO TRUE.
MOVE "20070828" TO EXCEL-VALUE. *> 08/28/2007
PERFORM WRITE-EXCEL-CELL.
...
-
Here are the rules for informing TIME cell values.
The time value must be informed using the
format "HHMMSSLLL" where HH=Hour, MM= Minutes, SS= Seconds and LLL= Thousands
of seconds.
Example:
...
SET EXCEL-DATATYPE-TIME TO TRUE.
MOVE "105923888" TO EXCEL-VALUE. *> 10:59:23.888
PERFORM WRITE-EXCEL-CELL.
...
-
Here are the rules for informing a DATETIME cell
value. It uses a combination of the two last ones. The
datetime value must be informed using the "CCYYMMDDHHMMSSLLL" where CC=
Century, YY= year, MM=Month, DD=day, HH= Hour, MM= Minutes, SS= Seconds and
LLL=Thousands of seconds.
Example:
...
SET EXCEL-DATATYPE-DATE TO TRUE.
MOVE "20060527224533555" TO EXCEL-VALUE. *> 05/27/2006 22:45:33.555
PERFORM WRITE-EXCEL-CELL.
...
-
Here are the rules for informing BOOLEAN cell values.
The boolean value may be informed using synonyms.
"0","FALSE" and "false" mean FALSE.
"1","TRUE" and "true" mean TRUE.
Example:
...
SET EXCEL-DATATYPE-BOOLEAN TO TRUE.
MOVE "false" TO EXCEL-VALUE. *> FALSE
PERFORM WRITE-EXCEL-CELL.
...
-
Following, there is an example of a COBOL
program that can be cut and pasted in a NX Edit's empty one for testing
purposes.
IDENTIFICATION
DIVISION.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT
EXCEL-FILE ASSIGN TO DISK.
DATA DIVISION.
FILE SECTION.
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPFDX".
/
WORKING-STORAGE SECTION.
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPWSX".
/
PROCEDURE DIVISION.
MAIN SECTION.
ENTRANCE.
CHANGE
ATTRIBUTE FILENAME OF EXCEL-FILE TO "MYEXCELFILENAME.".
PERFORM INITIATE-EXCEL-FILE.
*===> WRITING FIRST ROW
PERFORM OPEN-EXCEL-ROW.
SET EXCEL-DATATYPE-BOOLEAN
TO TRUE.
MOVE "false" TO EXCEL-VALUE.
PERFORM WRITE-EXCEL-CELL.
PERFORM CLOSE-EXCEL-ROW.
*====> WRITING SECOND ROW.
PERFORM OPEN-EXCEL-ROW.
SET EXCEL-DATATYPE-DATE TO TRUE.
MOVE "20060527224533555" TO EXCEL-VALUE.
PERFORM WRITE-EXCEL-CELL.
PERFORM CLOSE-EXCEL-ROW.
PERFORM TERMINATE-EXCEL-FILE.
STOP RUN.
/
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPWSX".
Syntax rules for the
generation of more than one Excel Xml File per program:
-
In the Environment Division, Input-Output Section,
File-Control, the programmer must declare the files following the example
below:
SELECT EXCEL-FILE1 ASSIGN TO DISK.
SELECT EXCEL-FILE2 ASSIGN TO DISK.
SELECT EXCEL-FILE3
ASSIGN TO DISK.
-
External filenames can be set or changed in three ways:
a)
Using either WFL Language File Equation's declarations:
FILE EXCEL-FILE1 = MYEXCELFILE1 ON DEV;
FILE EXCEL-FILE2 = MYEXCELFILE2 ON DEV;
FILE EXCEL-FILE3 = MYEXCELFILE3 ON DEV;
b)
Using either WFL Language File Equation's commands:
EXCEL-FILE1(TITLE=MYEXCELFILE1
ON DEV);
EXCEL-FILE2(TITLE=MYEXCELFILE2
ON DEV);
EXCEL-FILE3(TITLE=MYEXCELFILE3
ON DEV);
c)
Inside the COBOL program, before file initialization perform
commands (To be described ahead);
CHANGE ATTRIBUTE TITLE OF EXCEL-FILE1 TO "MYEXCELFILE1 ON DEV.".
CHANGE ATTRIBUTE TITLE OF EXCEL-FILE2 TO "MYEXCELFILE2 ON DEV.".
CHANGE ATTRIBUTE TITLE OF EXCEL-FILE3 TO "MYEXCELFILE3 ON DEV.".
-
In the Data Division, File Section, the programmer
must insert the following ones:
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPFDX"
REPLACING
==EXCEL-FILE== BY ==EXCEL-FILE1==.
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPFDX"
REPLACING ==EXCEL-FILE== BY ==EXCEL-FILE2==.
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPFDX"
REPLACING ==EXCEL-FILE== BY ==EXCEL-FILE3==.
-
In the Data Division, Working-Storage Section the
programmer must insert:
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPWSX"
REPLACING ==EXCEL-FILE-INFO== BY ==EXCEL-FILE-INFO1==
.
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPWSX"
REPLACING ==EXCEL-FILE-INFO== BY
==EXCEL-FILE-INFO2==.
COPY
"HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPWSX"
REPLACING ==EXCEL-FILE-INFO== BY ==EXCEL-FILE-INFO3==.
-
In the end of Procedure Division, the programmer must
insert:
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPPDX"
REPLACING ==EXCEL-FILE== BY ==EXCEL-FILE1==
==EXCEL-FILE-INFO== BY ==EXCEL-FILE-INFO1==
==EXCEL-FILE-PROCEDURE== BY == EXCEL-FILE-PROCEDURE1==.
COPY
"HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPPDX"
REPLACING ==EXCEL-FILE== BY ==EXCEL-FILE2==
==EXCEL-FILE-INFO== BY ==EXCEL-FILE-INFO2==
==EXCEL-FILE-PROCEDURE== BY == EXCEL-FILE-PROCEDURE2==.
COPY
"HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPPDX"
REPLACING ==EXCEL-FILE== BY ==EXCEL-FILE3==
==EXCEL-FILE-INFO== BY ==EXCEL-FILE-INFO3==
==EXCEL-FILE-PROCEDURE== BY == EXCEL-FILE-PROCEDURE3==.
-
At this point the program should compile ok, but
no file will be generated when the object code runs.
-
The Excel File must me initialized and the program must
insert the following perform commands in the Procedure Division for doing it.
Note that EXCEL Files will be opened by these command's execution.
If you want to programmatically change one the Excel File' names in
the COBOL code, the change COBOL commands must be executed before the
respective file's ones.
PERFORM INITIATE-EXCEL-FILE OF EXCEL-FILE-PROCEDURE1.
...
PERFORM
INITIATE-EXCEL-FILE OF EXCEL-FILE-PROCEDURE2.
...
PERFORM
INITIATE-EXCEL-FILE OF EXCEL-FILE-PROCEDURE3.
-
In the same way, a perform command must be inserted in
the COBOL code to terminate the file's generation process:
PERFORM TERMINATE-EXCEL-FILE OF EXCEL-FILE-PROCEDURE1.
...
PERFORM
TERMINATE-EXCEL-FILE OF EXCEL-FILE-PROCEDURE2.
...
PERFORM
TERMINATE-EXCEL-FILE OF EXCEL-FILE-PROCEDURE3.
-
The Excel Files are composed of rows and cells. For
starting writing a row the following commands must be used:
PERFORM OPEN-EXCEL-ROW OF EXCEL-FILE-PROCEDURE1.
...
PERFORM OPEN-EXCEL-ROW
OF EXCEL-FILE-PROCEDURE2.
...
PERFORM OPEN-EXCEL-ROW
OF EXCEL-FILE-PROCEDURE3.
-
For finishing writing a row, use the following command:
PERFORM CLOSE-EXCEL-ROW OF EXCEL-FILE-PROCEDURE1.
...
PERFORM CLOSE-EXCEL-ROW OF
EXCEL-FILE-PROCEDURE2.
...
PERFORM CLOSE-EXCEL-ROW OF
EXCEL-FILE-PROCEDURE3.
-
For writing cells, the programmers may select a
data type for building them. A cell may contain a string, a number (Integer,
real, double or currency, signed or unsigned), a date, a time, a datetime or a
boolean. If the programmer does not specify the data type, the string one will
be assumed by default.
-
The programmer must also use the input parameter provided by
the kit for informing the content of the cell. And, of course, to perform the
routine for writing the file.
-
Below is the syntax to specify the data type is showed.
As already said, the programmer should choose one of them, otherwise string
will be assumed by default.
SET [EXCEL-DATATYPE-STRING OF EXCEL-FILE-INFO1,
EXCEL-DATATYPE-NUMBER OF EXCEL-FILE-INFO1,
EXCEL-DATATYPE-INTEGER OF EXCEL-FILE-INFO1,
EXCEL-DATATYPE-REAL
OF EXCEL-FILE-INFO1,
EXCEL-DATATYPE-DOUBLE OF EXCEL-FILE-INFO1,
EXCEL-DATATYPE-DATE OF EXCEL-FILE-INFO1,
EXCEL-DATATYPE-BOOLEAN OF EXCEL-FILE-INFO1,
EXCEL-DATATYPE-DATETIME OF EXCEL-FILE-INFO1,
EXCEL-DATATYPE-TIME OF EXCEL-FILE-INFO1,
EXCEL-DATATYPE-CURRENCY OF EXCEL-FILE-INFO1] TO TRUE.
...
SET
[EXCEL-DATATYPE-STRING OF EXCEL-FILE-INFO2,
EXCEL-DATATYPE-NUMBER OF EXCEL-FILE-INFO2,
EXCEL-DATATYPE-INTEGER OF EXCEL-FILE-INFO2,
EXCEL-DATATYPE-REAL
OF EXCEL-FILE-INFO2,
EXCEL-DATATYPE-DOUBLE OF EXCEL-FILE-INFO2,
EXCEL-DATATYPE-DATE OF EXCEL-FILE-INFO2,
EXCEL-DATATYPE-BOOLEAN OF EXCEL-FILE-INFO2,
EXCEL-DATATYPE-DATETIME OF EXCEL-FILE-INFO2,
EXCEL-DATATYPE-TIME OF EXCEL-FILE-INFO2,
EXCEL-DATATYPE-CURRENCY OF EXCEL-FILE-INFO2] TO TRUE.
...
SET
[EXCEL-DATATYPE-STRING OF EXCEL-FILE-INFO3,
EXCEL-DATATYPE-NUMBER OF EXCEL-FILE-INFO3,
EXCEL-DATATYPE-INTEGER OF EXCEL-FILE-INFO3,
EXCEL-DATATYPE-REAL
OF EXCEL-FILE-INFO3,
EXCEL-DATATYPE-DOUBLE OF EXCEL-FILE-INFO3,
EXCEL-DATATYPE-DATE OF EXCEL-FILE-INFO3,
EXCEL-DATATYPE-BOOLEAN OF EXCEL-FILE-INFO3,
EXCEL-DATATYPE-DATETIME OF EXCEL-FILE-INFO3,
EXCEL-DATATYPE-TIME OF EXCEL-FILE-INFO3,
EXCEL-DATATYPE-CURRENCY OF EXCEL-FILE-INFO3] TO TRUE.
-
For specifying the value to be stored in the cells, the
value must be moved to the input parameters provided by the kit:
MOVE "MYVALUE1"
TO EXCEL-VALUE OF EXCEL-FILE-INFO1.
...
MOVE "MYVALUE2" TO EXCEL-VALUE OF EXCEL-FILE-INFO2.
...
MOVE "MYVALUE3" TO EXCEL-VALUE OF EXCEL-FILE-INFO3.
-
Some limitations and defaults for strings apply:
All the values will be trimmed.
String's size is limited to 180 characters.
High-Values (@FF@), Low-Values (@00@), quotations, "<" and ">" are
forbidden characters and they will be replaced by spaces (@40@).
If quotations, "<" or ">" are desired to appear in the
strings, the respective meta-characters (") , (<) and
(>) must be inform instead.
If the value
informed is not a string, it will undergo to validation and if the validation
fails it will be transformed to string.
-
Below the rules for number, integer, real, double and
currency are presented.They be should be informed as
edited strings with decimal-points (Real and double) and with left
sign (Negative).The number's size and
precision are limited by the limits imposed by UNISYS. The number of
numeric digits must not exceed 21 and the decimal-point floats.
Examples:
...
SET EXCEL-DATATYPE-NUMBER OF EXCEL-FILE-INFO1 TO TRUE.
MOVE
"656" TO EXCEL-VALUE OF EXCEL-FILE-INFO1.
PERFORM WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE1.
...
SET EXCEL-DATATYPE--REALOF EXCEL-FILE-INFO2 TO TRUE.
MOVE
"-656.888858" TO EXCEL-VALUEOF EXCEL-FILE-INFO2.
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE2.
...
SET EXCEL-DATATYPE-CURRENCY OF EXCEL-FILE-INFO3 TO TRUE.
MOVE "+19997656.88" TO EXCEL-VALUE OF EXCEL-FILE-INFO3.
PERFORM WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE3.
...
-
Here are the rules for informing DATE cell values.
The date value must be informed using the "CCYYMMDD"
where CC=Century, YY=year, MM=Month and DD=day;
Example:
...
SET EXCEL-DATATYPE-DATE OF EXCEL-FILE-INFO1TO TRUE.
MOVE "20071125" TO EXCEL-VALUE OF EXCEL-FILE-INFO1. *> 11/25/2007
PERFORM WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE1.
...
SET EXCEL-DATATYPE-DATE OF EXCEL-FILE-INFO3TO TRUE.
MOVE "20071228" TO EXCEL-VALUE OF EXCEL-FILE-INFO3. *> 12/28/2007
PERFORM WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE3.
...
SET EXCEL-DATATYPE-DATE OF EXCEL-FILE-INFO2TO TRUE.
MOVE "20060828" TO EXCEL-VALUE OF EXCEL-FILE-INFO2. *> 08/28/2006
PERFORM WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE2.
...
-
Here are the rules for informing TIME cell values.
The time value must be informed using the format
"HHMMSSLLL" where HH=Hour, MM= Minutes, SS= Seconds and LLL= Thousands of
seconds.
Example:
...
SET EXCEL-DATATYPE-TIME OF EXCEL-FILE-INFO1TO TRUE.
MOVE
"105923888" TO EXCEL-VALUE OF EXCEL-FILE-INFO1. *> 10:59:23.888
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE1.
...
SET EXCEL-DATATYPE-TIME OF EXCEL-FILE-INFO1TO TRUE.
MOVE
"105923888" TO EXCEL-VALUE OF EXCEL-FILE-INFO1. *> 10:59:23.888
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE1.
...
SET EXCEL-DATATYPE-TIME OF EXCEL-FILE-INFO1TO TRUE.
MOVE
"105923338" TO EXCEL-VALUE OF EXCEL-FILE-INFO1. *> 10:59:23.888
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE1.
...
-
Here are the rules for informing DATETIME cell
values. It uses a combination of the two last ones. The datetime value must be
informed using the "CCYYMMDDHHMMSSLLL" where CC= Century, YY= year,
MM=Month, DD=day, HH= Hour, MM= Minutes, SS= Seconds and LLL=Thousands of
seconds.
Example:
...
SET EXCEL-DATATYPE-DATE OF EXCEL-FILE-INFO1 TO TRUE.
MOVE "20060527224533553" TO EXCEL-VALUE OF EXCEL-FILE-INFO1. *> 05/27/2006
22:45:33.555
PERFORM WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE1.
...
SET EXCEL-DATATYPE-DATE
OF EXCEL-FILE-INFO1 TO TRUE.
MOVE "20060527224533552" TO EXCEL-VALUE OF EXCEL-FILE-INFO1. *> 05/27/2006
22:45:33.555
PERFORM WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE1.
...
SET EXCEL-DATATYPE-DATE OF EXCEL-FILE-INFO1 TO TRUE.
MOVE "20060527224533551" TO EXCEL-VALUE OF EXCEL-FILE-INFO1. *> 05/27/2006
22:45:33.555
PERFORM WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE1.
...
-
Here are the rules for informing BOOLEAN cell values.
The boolean value may be informed using synonyms: "0","FALSE" and
"false" mean FALSE. "1","TRUE" and "true" mean TRUE.
Example:
...
SET EXCEL-DATATYPE-BOOLEAN OF EXCEL-FILE-INFO1TO TRUE.
MOVE "false"
TO EXCEL-VALUE OF EXCEL-FILE-INFO1. *> FALSE
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE1.
...
SET EXCEL-DATATYPE-BOOLEAN OF EXCEL-FILE-INFO2 TO TRUE.
MOVE
"1" TO EXCEL-VALUE OF EXCEL-FILE-INFO2. *> TRUE
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE2.
...
SET EXCEL-DATATYPE-BOOLEAN
OF EXCEL-FILE-INFO3 TO TRUE.
MOVE
"1" TO EXCEL-VALUE OF EXCEL-FILE-INFO3. *> TRUE
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE3.
...
Following, there is an example of a COBOL program that
can be cut and pasted in NX Edit for testing purposes.
IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT
EXCEL-FILE1 ASSIGN TO DISK.
SELECT
EXCEL-FILE2 ASSIGN TO DISK.
SELECT
EXCEL-FILE3 ASSIGN TO DISK.
DATA
DIVISION.
FILE SECTION.
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPFDX"
REPLACING
==EXCEL-FILE== BY ==EXCEL-FILE1==.
COPY
"HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPFDX"
REPLACING ==EXCEL-FILE== BY ==EXCEL-FILE2==.
COPY
"HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPFDX"
REPLACING ==EXCEL-FILE== BY ==EXCEL-FILE3==.
/
WORKING-STORAGE SECTION.
COPY
"HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPWSX"
REPLACING
==EXCEL-FILE-INFO== BY ==EXCEL-FILE-INFO1==
.
COPY
"HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPWSX"
REPLACING ==EXCEL-FILE-INFO== BY
==EXCEL-FILE-INFO2==.
COPY
"HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPWSX"
REPLACING ==EXCEL-FILE-INFO== BY ==EXCEL-FILE-INFO3==.
/
PROCEDURE DIVISION.
MAIN SECTION.
ENTRANCE.
CHANGE
ATTRIBUTE FILENAME OF EXCEL-FILE1 TO "MYEXCELFILENAME1.".
PERFORM INITIATE-EXCEL-FILE OF EXCEL-FILE-PROCEDURE1.
CHANGE
ATTRIBUTE FILENAME OF EXCEL-FILE2 TO "MYEXCELFILENAME2.".
PERFORM INITIATE-EXCEL-FILE OF EXCEL-FILE-PROCEDURE2.
CHANGE
ATTRIBUTE FILENAME OF EXCEL-FILE3 TO "MYEXCELFILENAME3.".
PERFORM INITIATE-EXCEL-FILE OF EXCEL-FILE-PROCEDURE3.
*===> WRITING FIRST ROW (1)
PERFORM
OPEN-EXCEL-ROW OF EXCEL-FILE-PROCEDURE1.
SET EXCEL-DATATYPE-BOOLEAN
OF EXCEL-FILE-INFO1 TO TRUE.
MOVE "false" TO
EXCEL-VALUE OF EXCEL-FILE-INFO1.
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE1.
PERFORM
CLOSE-EXCEL-ROW OF EXCEL-FILE-PROCEDURE1.
*====> WRITING SECOND ROW. (1)
PERFORM OPEN-EXCEL-ROW OF EXCEL-FILE-PROCEDURE1.
SET EXCEL-DATATYPE-DATE EXCEL-FILE-INFO1 TO
TRUE.
MOVE
"20060527224533555" TO EXCEL-VALUE EXCEL-FILE-INFO1.
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE1.
PERFORM
CLOSE-EXCEL-ROW OF EXCEL-FILE-PROCEDURE1.
*===> WRITING FIRST ROW (2)
PERFORM
OPEN-EXCEL-ROW OF EXCEL-FILE-PROCEDURE2.
SET EXCEL-DATATYPE-BOOLEAN
OF EXCEL-FILE-INFO2 TO TRUE.
MOVE "false" TO
EXCEL-VALUE OF EXCEL-FILE-INFO2.
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE2.
PERFORM
CLOSE-EXCEL-ROW OF EXCEL-FILE-PROCEDURE2.
*====> WRITING SECOND ROW. (2)
PERFORM OPEN-EXCEL-ROW OF EXCEL-FILE-PROCEDURE2.
SET EXCEL-DATATYPE-DATE EXCEL-FILE-INFO2 TO
TRUE.
MOVE
"20060527224533555" TO EXCEL-VALUE EXCEL-FILE-INFO2.
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE2.
PERFORM
CLOSE-EXCEL-ROW OF EXCEL-FILE-PROCEDURE2.
*===> WRITING FIRST ROW (3)
PERFORM
OPEN-EXCEL-ROW OF EXCEL-FILE-PROCEDURE3.
SET EXCEL-DATATYPE-BOOLEAN
OF EXCEL-FILE-INFO3 TO TRUE.
MOVE "false" TO
EXCEL-VALUE OF EXCEL-FILE-INFO3.
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE3.
PERFORM
CLOSE-EXCEL-ROW OF EXCEL-FILE-PROCEDURE3.
*====> WRITING SECOND ROW. (3)
PERFORM OPEN-EXCEL-ROW OF EXCEL-FILE-PROCEDURE3.
SET EXCEL-DATATYPE-DATE EXCEL-FILE-INFO3 TO
TRUE.
MOVE
"20060527224533555" TO EXCEL-VALUE EXCEL-FILE-INFO3.
PERFORM
WRITE-EXCEL-CELL OF EXCEL-FILE-PROCEDURE3.
PERFORM
CLOSE-EXCEL-ROW OF EXCEL-FILE-PROCEDURE3.
PERFORM TERMINATE-EXCEL-FILE OF
EXCEL-FILE-PROCEDURE1.
PERFORM
TERMINATE-EXCEL-FILE OF EXCEL-FILE-PROCEDURE2.
PERFORM
TERMINATE-EXCEL-FILE OF EXCEL-FILE-PROCEDURE3.
STOP RUN.
/
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPPDX"
REPLACING ==EXCEL-FILE== BY ==EXCEL-FILE1==
==EXCEL-FILE-INFO== BY ==EXCEL-FILE-INFO1==
==EXCEL-FILE-PROCEDURE== BY == EXCEL-FILE-PROCEDURE1==.
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPPDX"
REPLACING ==EXCEL-FILE== BY ==EXCEL-FILE2==
==EXCEL-FILE-INFO== BY ==EXCEL-FILE-INFO2==
==EXCEL-FILE-PROCEDURE== BY == EXCEL-FILE-PROCEDURE2==.
COPY "HEPPS/COPYLIB/EXCEL2003/XMLGEN/V00/CPPDX"
REPLACING ==EXCEL-FILE== BY ==EXCEL-FILE3==
==EXCEL-FILE-INFO== BY ==EXCEL-FILE-INFO3==
==EXCEL-FILE-PROCEDURE== BY == EXCEL-FILE-PROCEDURE3==.
|