For Programmers: Free Programming Magazines  


Home > Archive > Cobol > February 2006 > Create a excell document with powercobol v 7









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Create a excell document with powercobol v 7
Massimo

2006-02-02, 6:55 pm

Hi , I want to Create an Excel document with Fj Powercobol v 7.
Is it possible?
The best regards,
Massimo.

Bob Iles

2006-02-02, 6:55 pm

Massimo wrote:
> */Hi , I want to /**/Create /**/an Excel document with Fj Powercobol v 7.
> Is it possible?
> The best regards,/*
> */Massimo./*
> *//*


In any programming language you can create a <document>.csv that
is comma or tab delimited and Excel and use this file.

Bob.
Frederico Fonseca

2006-02-02, 6:55 pm

On Thu, 02 Feb 2006 15:46:15 GMT, "Massimo" <blue_max_53@hotmail.com>
wrote:

>Hi , I want to Create an Excel document with Fj Powercobol v 7.
>Is it possible?
>The best regards,
>Massimo.


Yes you can, but dont even thing of using the control supplied by
them.

Use COM directly as follows.

Repository
---------
CLASS COM-EXCEPTION AS "*COM-EXCEPTION"
CLASS COM AS "*COM".
---------

snippet 1.
----
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Obj-Variables.
05 XLS-APP-TYPE PIC X(8192) VALUE "Excel.Application".
05 OBJ-APP OBJECT REFERENCE COM.
05 OBJ-WBKS OBJECT REFERENCE COM.
05 OBJ-WKS OBJECT REFERENCE COM.
05 OBJ-WKSS OBJECT REFERENCE COM.
05 OBJ-WBK OBJECT REFERENCE COM.
05 RETURN-ERROR PIC 9(9) COMP-5.
05 WINDEX PIC S9(9) COMP-5 VALUE 1.

01 W-FILENAME PIC X(40) VALUE "C:\cobol.sam\excel_demo\demo4.xls".
01 w-true pic s9(4) COMP-5 VALUE -1.
01 W-VERSION PIC X(80).
PROCEDURE DIVISION.
INVOKE COM "CREATE-OBJECT"
USING XLS-APP-TYPE
RETURNING OBJ-APP.
INVOKE OBJ-APP "GET-VERSION"
RETURNING W-VERSION.
MOVE W-VERSION TO "Caption" OF xlsver
MOVE SPACES TO W-VERSION.
INVOKE OBJ-APP "GET-ProductCode"
RETURNING W-VERSION.
MOVE W-VERSION TO "Caption" OF ProductCode
INVOKE OBJ-APP "GET-WORKBOOKS"
RETURNING OBJ-WBKS.
INVOKE OBJ-WBKS "Add"
RETURNING OBJ-WBK
INVOKE OBJ-WBK "Saveas"
USING W-FILENAME.
INVOKE OBJ-WBK "Close".
INVOKE OBJ-APP "Quit".
---------


Frederico Fonseca
ema il: frederico_fonseca at syssoft-int.com
fim

2006-02-08, 8:52 am

Hi,
I have a little program that I call to write an Execll-fil. Works very
well.
Even if it is in Swedish I think you can find out how it works.

IDENTIFICATION DIVISION.
PROGRAM-ID. EXCELIO.
AUTHOR. FIMATOR AB. FIM W=C4STBERG.
DATE-WRITTEN. 2004-02-13 20:56 J=C4RF=C4LLA

* INPUT/OUTPUT-MODUL F=F6R REGISTER EXCEL-FIL.

* =C4NDRINGS- OCH R=C4TTNINGS-JOURNAL
* Vers Tidpunkt =C4ndringsbeskrivning
* ---- ----------------
--------------------------------------------------
* 2004-02-13 20:56 Ett nytt program ser dagens ljus.
* 2004-11-02 15:08 Posttyp l=E4ggs ut i feltext
* 2004-11-03 12:01 Posttyp DATE tillkommer
* 2005-04-25 18:48 =D6verf=F6ring av FIL-STATUS till anropande
program via POST-kom, om <> 00



ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D=3D
*
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.



INPUT-OUTPUT SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D
*
FILE-CONTROL.
SELECT EXCEL-FIL
ASSIGN TO EXECEL-FIL-FILNAMN
ORGANIZATION IS BINARY SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FIL-STATUS.



DATA DIVISION.
FILE SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
*
FD EXCEL-FIL LABEL RECORD IS STANDARD.
01 EXCELL-POST.
10 FILLER-X PIC X(1).




WORKING-STORAGE SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
*
01 STANDARD-DATA.
COPY "STD.REC".

01 DIVERSE.
10 EXECEL-FIL-FILNAMN PIC X(256).
10 FIL-STATUS PIC X(2).
10 FIL-OPPEN PIC X(1) VALUE SPACE.
10 BYTE-NR PIC 9(5).
10 ANTAL-BYTE-SOM-SKA-SKRIVAS PIC 9(5).
* 10 TAL-COMP-N PIC 9(5) COMP-N.
* 10 REDEFINES TAL-COMP-N.
* 20 BYTE-12-I-COMP-N PIC X(2).
10 TAL-COMP PIC 9(4) COMP.
10 REDEFINES TAL-COMP.
20 FILLER-X PIC X(1).
20 BYTE-2-I-COMP PIC X(1).
10 DEKLARERAD-L=C4NGD-TEXT-EXCEL PIC S9(9).
10 VERKLIG-L=C4NGD-TEXT-EXCEL PIC S9(9).
10 ANTAL-AVSLUTANDE-MELLANSLAG PIC S9(9).

01 POSTAREA.
10 POST-TECKEN OCCURS 512 PIC X(1).

01 POST-EOF REDEFINES POSTAREA.
10 POSTTYP-EXCEL-FIL PIC 9(4) COMP-N.
10 POSTL=C4NGD-EXCEL-FIL PIC 9(4) COMP-N.

01 POST-BOF REDEFINES POSTAREA.
10 FILLER-X PIC X(4).
10 VERSION-BOF PIC 9(4) COMP-N.
10 FILTYP-BOF PIC 9(4) COMP-N.

01 POST-LABEL REDEFINES POSTAREA.
10 FILLER-X PIC X(4).
10 RADNR-LABEL PIC 9(4) COMP-N.
10 KOLNR-LABEL PIC 9(4) COMP-N.
10 CELL-ATTRIBUT-1-LABEL PIC X(1).
10 CELL-ATTRIBUT-2-LABEL PIC X(1).
10 CELL-ATTRIBUT-3-LABEL PIC X(1).
10 TEXT-LANGD-LABEL PIC X(1).
10 TEXT-LABEL PIC X(256).

01 POST-NUMBER REDEFINES POSTAREA.
10 FILLER-X PIC X(4).
10 RADNR-NUMBER PIC 9(4) COMP-N.
10 KOLNR-NUMBER PIC 9(4) COMP-N.
10 CELL-ATTRIBUT-1-NUMBER PIC X(1).
10 CELL-ATTRIBUT-2-NUMBER PIC X(1).
10 CELL-ATTRIBUT-3-NUMBER PIC X(1).
10 TAL-NUMBER DOUBLE.

01 POST-FORMAT REDEFINES POSTAREA.
10 FILLER-X PIC X(4).
10 FORMATSTR=C4NG-L=C4NGD-FORMAT PIC X(1).
10 FORMATSTR=C4NG-FORMAT PIC X(256).

01 POST-FONT REDEFINES POSTAREA.
10 FILLER-X PIC X(4).
10 H=D6JD-FONT PIC 9(4) COMP-N.
10 ATTRIBUT-FONT PIC X(1).
10 FILLER-X PIC X(1).
10 FONTNAMN-L=C4NGD-FONT PIC X(1).
10 FONTNAMN-FONT PIC X(256).

01 POST-COLWIDTH REDEFINES POSTAREA.
10 FILLER-X PIC X(4).
10 FROM-KOLNR-COLWIDTH PIC X(1).
10 TOM-KOLNR-COLWIDTH PIC X(1).
10 BREDD-COLWIDTH PIC 9(4) COMP-N.


LINKAGE SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D
*
01 POST-KOM.
COPY "KOM.REC".

01 POST-LINK.
10 POSTTYP-EXCEL PIC X(25).
10 RADNR-EXCEL PIC 9(9). | 1 - 65356
10 KOLNR-EXCEL PIC 9(9). | 1 - 256
10 FET-STIL-EXCEL PIC X(1). | Blankt eller X
10 TAL-EXCEL DOUBLE.
10 ANTAL-DECIMALER-EXCEL PIC 9(1). | 0 - 4
10 TEXT-EXCEL PIC X(256).
10 H=D6GERJUSTERAD-TEXT-EXCEL PIC X(1). | Blankt eller X
10 DATUMNR-EXCEL. | PIC X(8)
=C5=C5=C5=C5MMDD
20 DATUMNR-EXCEL-NUM PIC 9(8).
10 FILLER-X PIC X(198).


PROCEDURE DIVISION USING POST-KOM POST-LINK.
DECLARATIVES.
FELHANTERING SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D
*
USE AFTER ERROR PROCEDURE ON EXCEL-FIL.

END DECLARATIVES.


STARTSEKVENS SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D
*
START-ATGARDER.
CALL "LAMPA1" USING POST-KOM.
MOVE "X" TO SVAR-KOM.
MOVE "Ok=E4nt fel i EXCELIO" TO FELTEXT-KOM.



FUNKTIONSVAL SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D
*
VALET.
*** STOP 49.
IF POSTTYP-EXCEL =3D "BOF" GO TO BOF-POST-SKRIVNING.
IF POSTTYP-EXCEL =3D "NUMBER" GO TO NUMBER-POST-SKRIVNING.
IF POSTTYP-EXCEL =3D "LABEL" GO TO LABEL-POST-SKRIVNING.
IF POSTTYP-EXCEL =3D "EOF" GO TO EOF-POST-SKRIVNING.
IF POSTTYP-EXCEL =3D "COLWIDTH" GO TO COLWIDTH-POST-SKRIVNING.
IF POSTTYP-EXCEL =3D "DATE" GO TO DATE-POST-SKRIVNING.
STRING "Ok=E4nd posttyp=3D" DELIMITED BY SIZE
POSTTYP-EXCEL DELIMITED BY SPACE
INTO FELTEXT-KOM.
GO TO ATERHOPP.



BOF-POST-SKRIVNING SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D
*
KONTROLLER.
IF TEXT-EXCEL =3D SPACE
MOVE "Filnamn saknas f=F6r BOF" TO FELTEXT-KOM
GO TO ATERHOPP
END-IF.

SKAPA-FILEN.
MOVE TEXT-EXCEL TO EXECEL-FIL-FILNAMN.
OPEN OUTPUT EXCEL-FIL.
IF FIL-STATUS NOT =3D "00"
MOVE "Excel-filen kan inte skapas. Filstatus =3D" TO FELTEXT-KOM
MOVE FIL-STATUS TO FELTEXT-VARDE-KOM
MOVE FIL-STATUS TO FIL-STATUS-KOM
GO TO ATERHOPP
END-IF.

SKAPA-POSTEN.
MOVE LOW-VALUE TO POSTAREA.
MOVE 9 TO POSTTYP-EXCEL-FIL.
*** move 2057 TO POSTTYP-EXCEL-FIL. biff8, ok men decimaler
blir fel
MOVE 4 TO POSTL=C4NGD-EXCEL-FIL.
MOVE 2 TO VERSION-BOF.
*** MOVE 1536 TO VERSION-BOF. D=C5 SP=C5RAR EXCEL UR
MOVE 10 TO FILTYP-BOF.

SKRIV-POSTEN.
PERFORM SKRIV-POST-I-EXCEL-FIL.

SKRIV-FORMAT-POST0.
MOVE LOW-VALUE TO POSTAREA.
MOVE 30 TO POSTTYP-EXCEL-FIL.
MOVE "#.##0" TO FORMATSTR=C4NG-FORMAT
MOVE 5 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO FORMATSTR=C4NG-L=C4NGD-FORMAT.
MOVE 6 TO POSTL=C4NGD-EXCEL-FIL.
PERFORM SKRIV-POST-I-EXCEL-FIL.

SKRIV-FORMAT-POST1.
MOVE LOW-VALUE TO POSTAREA.
MOVE 30 TO POSTTYP-EXCEL-FIL.
MOVE "#.##0,0" TO FORMATSTR=C4NG-FORMAT
MOVE 7 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO FORMATSTR=C4NG-L=C4NGD-FORMAT.
MOVE 8 TO POSTL=C4NGD-EXCEL-FIL.
PERFORM SKRIV-POST-I-EXCEL-FIL.

SKRIV-FORMAT-POST2.
MOVE LOW-VALUE TO POSTAREA.
MOVE 30 TO POSTTYP-EXCEL-FIL.
MOVE "#.##0,00" TO FORMATSTR=C4NG-FORMAT
MOVE 8 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO FORMATSTR=C4NG-L=C4NGD-FORMAT.
MOVE 9 TO POSTL=C4NGD-EXCEL-FIL.
PERFORM SKRIV-POST-I-EXCEL-FIL.

SKRIV-FORMAT-POST3.
MOVE LOW-VALUE TO POSTAREA.
MOVE 30 TO POSTTYP-EXCEL-FIL.
MOVE "#.##0,000" TO FORMATSTR=C4NG-FORMAT
MOVE 9 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO FORMATSTR=C4NG-L=C4NGD-FORMAT.
MOVE 10 TO POSTL=C4NGD-EXCEL-FIL.
PERFORM SKRIV-POST-I-EXCEL-FIL.

SKRIV-FORMAT-POST4.
MOVE LOW-VALUE TO POSTAREA.
MOVE 30 TO POSTTYP-EXCEL-FIL.
MOVE "#.##0,0000" TO FORMATSTR=C4NG-FORMAT
MOVE 10 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO FORMATSTR=C4NG-L=C4NGD-FORMAT.
MOVE 11 TO POSTL=C4NGD-EXCEL-FIL.
PERFORM SKRIV-POST-I-EXCEL-FIL.

SKRIV-FORMAT-POST5.
MOVE LOW-VALUE TO POSTAREA.
MOVE 30 TO POSTTYP-EXCEL-FIL.
MOVE "#.##0,00000" TO FORMATSTR=C4NG-FORMAT
MOVE 11 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO FORMATSTR=C4NG-L=C4NGD-FORMAT.
MOVE 12 TO POSTL=C4NGD-EXCEL-FIL.
PERFORM SKRIV-POST-I-EXCEL-FIL.

SKRIV-FORMAT-POST6.
MOVE LOW-VALUE TO POSTAREA.
MOVE 30 TO POSTTYP-EXCEL-FIL.
MOVE "=C5=C5=C5=C5-MM-DD" TO FORMATSTR=C4NG-FORMAT
MOVE 10 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO FORMATSTR=C4NG-L=C4NGD-FORMAT.
MOVE 11 TO POSTL=C4NGD-EXCEL-FIL.
PERFORM SKRIV-POST-I-EXCEL-FIL.

SKRIV-FONT-POST0.
MOVE LOW-VALUE TO POSTAREA.
MOVE 49 TO POSTTYP-EXCEL-FIL.
MOVE 200 TO H=D6JD-FONT
MOVE "Arial" TO FONTNAMN-FONT
MOVE 5 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO FONTNAMN-L=C4NGD-FONT.
MOVE 10 TO POSTL=C4NGD-EXCEL-FIL.
PERFORM SKRIV-POST-I-EXCEL-FIL.

SKRIV-FONT-POST1.
MOVE LOW-VALUE TO POSTAREA.
MOVE 49 TO POSTTYP-EXCEL-FIL.
MOVE 200 TO H=D6JD-FONT.
MOVE 1 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO ATTRIBUT-FONT.
MOVE "Arial" TO FONTNAMN-FONT
MOVE 5 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO FONTNAMN-L=C4NGD-FONT.
MOVE 10 TO POSTL=C4NGD-EXCEL-FIL.
PERFORM SKRIV-POST-I-EXCEL-FIL.
GO TO OK-ATERHOPP.



NUMBER-POST-SKRIVNING SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
*
KONTROLLER.
IF RADNR-EXCEL < 1 OR > 65536
MOVE "Radnr ska var 1 - 65536" TO FELTEXT-KOM
GO TO ATERHOPP
END-IF.
IF KOLNR-EXCEL < 1 OR > 256
MOVE "Radnr ska var 1 - 256" TO FELTEXT-KOM
GO TO ATERHOPP
END-IF.
IF ANTAL-DECIMALER-EXCEL > 4
MOVE "Antal decimaler ska var 0 - 4" TO FELTEXT-KOM
GO TO ATERHOPP
END-IF.

SKAPA-POSTEN.
MOVE LOW-VALUE TO POSTAREA.
MOVE 3 TO POSTTYP-EXCEL-FIL.
MOVE 15 TO POSTL=C4NGD-EXCEL-FIL.
MOVE TAL-EXCEL TO TAL-NUMBER.
MOVE RADNR-EXCEL TO RADNR-NUMBER.
SUBTRACT 1 FROM RADNR-NUMBER.
MOVE KOLNR-EXCEL TO KOLNR-NUMBER.
SUBTRACT 1 FROM KOLNR-NUMBER.
MOVE ANTAL-DECIMALER-EXCEL TO TAL-COMP.
IF FET-STIL-EXCEL =3D "X"
ADD 64 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO CELL-ATTRIBUT-2-NUMBER.


SKRIV-POSTEN.
PERFORM SKRIV-POST-I-EXCEL-FIL.
GO TO OK-ATERHOPP.



LABEL-POST-SKRIVNING SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
*
KONTROLLER.
IF RADNR-EXCEL < 1 OR > 65536
MOVE "Radnr ska var 1 - 65536" TO FELTEXT-KOM
GO TO ATERHOPP
END-IF.
IF KOLNR-EXCEL < 1 OR > 256
MOVE "Kolnr ska var 1 - 256" TO FELTEXT-KOM
GO TO ATERHOPP
END-IF.

BER=C4KNA-TEXT-L=C4NGD.
SET DEKLARERAD-L=C4NGD-TEXT-EXCEL TO SIZE OF TEXT-EXCEL.
MOVE ZERO TO ANTAL-AVSLUTANDE-MELLANSLAG
INSPECT TEXT-EXCEL TALLYING ANTAL-AVSLUTANDE-MELLANSLAG FOR
TRAILING SPACE.
COMPUTE VERKLIG-L=C4NGD-TEXT-EXCEL =3D DEKLARERAD-L=C4NGD-TEXT-EXCEL -
ANTAL-AVSLUTANDE-MELLANSLAG.

SKAPA-POSTEN.
MOVE LOW-VALUE TO POSTAREA.
MOVE 4 TO POSTTYP-EXCEL-FIL.
COMPUTE POSTL=C4NGD-EXCEL-FIL =3D VERKLIG-L=C4NGD-TEXT-EXCEL + 8
MOVE RADNR-EXCEL TO RADNR-LABEL.
SUBTRACT 1 FROM RADNR-LABEL.
MOVE KOLNR-EXCEL TO KOLNR-LABEL.
SUBTRACT 1 FROM KOLNR-LABEL.
MOVE VERKLIG-L=C4NGD-TEXT-EXCEL TO TAL-COMP.
MOVE BYTE-2-I-COMP TO TEXT-LANGD-LABEL.
MOVE TEXT-EXCEL TO TEXT-LABEL.
IF FET-STIL-EXCEL =3D "X"
MOVE 64 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO CELL-ATTRIBUT-2-NUMBER.

SKRIV-POSTEN.
PERFORM SKRIV-POST-I-EXCEL-FIL.
GO TO OK-ATERHOPP.



COLWIDTH-POST-SKRIVNING SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
*
* KOLNR-EXECEL avser den aktuella kolumnen
* TAL-EXEL avser bredden i antal tecken, nollan =E4r referansbredd

KONTROLLER.
IF KOLNR-EXCEL < 1 OR > 256
MOVE "Kolnr ska var 1 - 256" TO FELTEXT-KOM
GO TO ATERHOPP
END-IF.

SKAPA-POSTEN.
MOVE LOW-VALUE TO POSTAREA.
MOVE 36 TO POSTTYP-EXCEL-FIL.
MOVE 4 TO POSTL=C4NGD-EXCEL-FIL
MOVE KOLNR-EXCEL TO TAL-COMP.
SUBTRACT 1 FROM TAL-COMP.
MOVE BYTE-2-I-COMP TO FROM-KOLNR-COLWIDTH.
MOVE BYTE-2-I-COMP TO TOM-KOLNR-COLWIDTH.
COMPUTE BREDD-COLWIDTH =3D TAL-EXCEL * 256.

SKRIV-POSTEN.
PERFORM SKRIV-POST-I-EXCEL-FIL.
*** DISPLAY "COLWIDTH SKRIVEN" AT 0201 ACCEPT OMITTED.
GO TO OK-ATERHOPP.



DATE-POST-SKRIVNING SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D
*
KONTROLLER.
IF RADNR-EXCEL < 1 OR > 65536
MOVE "Radnr ska var 1 - 65536" TO FELTEXT-KOM
GO TO ATERHOPP
END-IF.
IF KOLNR-EXCEL < 1 OR > 256
MOVE "Kolnr ska var 1 - 256" TO FELTEXT-KOM
GO TO ATERHOPP
END-IF.
IF DATUMNR-EXCEL IS NOT NUMERIC
MOVE "Datum =E4r inte numeriskt" TO FELTEXT-KOM
GO TO ATERHOPP
END-IF.

BER=C4KNING-AV-DAGNUMMER.
* MOVE DATE-EXCEL TO DATE-NUM.
* MOVE FUNCTION INTEGER-OF-DATE (18991231) TO BASE-DATE.
* MOVE FUNCTION INTEGER-OF-DATE (DATUMNR-EXCEL-NUM) TO THIS-DATE.
*
* COMPUTE NUMBER-EXCEL =3D THIS-DATE - BASE-DATE + 1.
COMPUTE TAL-EXCEL =3D FUNCTION INTEGER-OF-DATE (DATUMNR-EXCEL-NUM) -
FUNCTION INTEGER-OF-DATE (18991231) + 1.


SKAPA-POSTEN.
MOVE LOW-VALUE TO POSTAREA.
MOVE 3 TO POSTTYP-EXCEL-FIL.
MOVE 15 TO POSTL=C4NGD-EXCEL-FIL.
MOVE TAL-EXCEL TO TAL-NUMBER.
MOVE RADNR-EXCEL TO RADNR-NUMBER.
SUBTRACT 1 FROM RADNR-NUMBER.
MOVE KOLNR-EXCEL TO KOLNR-NUMBER.
SUBTRACT 1 FROM KOLNR-NUMBER.
MOVE 6 TO TAL-COMP.
IF FET-STIL-EXCEL =3D "X"
ADD 64 TO TAL-COMP.
MOVE BYTE-2-I-COMP TO CELL-ATTRIBUT-2-NUMBER.

SKRIV-POSTEN.
PERFORM SKRIV-POST-I-EXCEL-FIL.
GO TO OK-ATERHOPP.



EOF-POST-SKRIVNING SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
*
SKAPA-POSTEN.
INITIALIZE POST-EOF.
MOVE 10 TO POSTTYP-EXCEL-FIL.
MOVE ZERO TO POSTL=C4NGD-EXCEL-FIL.

SKRIV-POSTEN.
PERFORM SKRIV-POST-I-EXCEL-FIL.

ST=C4NG-FILEN.
CLOSE EXCEL-FIL.
GO TO OK-ATERHOPP.



OK-ATERHOPP SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D
*
ST=C4DA.
MOVE SPACE TO SVAR-KOM.
MOVE SPACE TO FELTEXT-KOM
GO ATERHOPP.



ATERHOPP SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D
*
ATERSTALL.
CALL "LAMPA2" USING POST-KOM.

SLUTET.
EXIT PROGRAM.



****************************************
**************************
* *
* U N D E R P R O C E D U R E R *
* *
****************************************
**************************

SKRIV-POST-I-EXCEL-FIL SECTION.
*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D
*
STARTBERAKNING.
COMPUTE ANTAL-BYTE-SOM-SKA-SKRIVAS =3D POSTL=C4NGD-EXCEL-FIL + 4.

SKRIVNING.
PERFORM VARYING BYTE-NR FROM 1 BY 1 UNTIL BYTE-NR >
ANTAL-BYTE-SOM-SKA-SKRIVAS
WRITE EXCELL-POST FROM POST-TECKEN (BYTE-NR)
END-PERFORM.

* Sista rad

/ Fim W

Frederico Fonseca

2006-02-08, 8:53 am

On 5 Feb 2006 06:28:05 -0800, "fim" <fim@fim.nu> wrote:
Tim,

Your program seems interesting, but as a matter of coherency can you
please include the missing copybooks and check if the called programs
LAMPA1 and LAMPA2 can be ommited or whether they are required for the
result of the main program.

>Hi,
>I have a little program that I

to write an Execll-fil. Works very
>well.
>Even if it is in Swedish I think you can find out how it works.
>
>IDENTIFICATION DIVISION.
>PROGRAM-ID. EXCELIO.
>AUTHOR. FIMATOR AB. FIM WÄSTBERG.
>DATE-WRITTEN. 2004-02-13 20:56 JÄRFÄLLA
>

snit
>*
>01 STANDARD-DATA.
> COPY "STD.REC".

snip
>
>*
>01 POST-KOM.
> COPY "KOM.REC".
>

snip
>*
>START-ATGARDER.
> CALL "LAMPA1" USING POST-KOM.
>*

snip
>ATERSTALL.
> CALL "LAMPA2" USING POST-KOM.





Frederico Fonseca
ema il: frederico_fonseca at syssoft-int.com
fim

2006-02-08, 8:53 am

Hi Fredrico,

STD.REC is not used, remove it
LAMPA1 and LAMPA2, remove it

01 POST-KOM.
COPY "KOM.REC".

Is used for communication with the calling program, giving information
about error. if all works well, SVAR-KOM = SPACE. If something went
wrong, SVAR-KOM = "X" and information about the error in FELTEXT-KOM
and FELTEXT-VARDE-KOM

/Fim

Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com