Escolar Documentos
Profissional Documentos
Cultura Documentos
Got COBOL? Bet you didn't know you could do THIS in COBOL
ibm
COBOL can be C! XML GENERATE Retrieving SYSTEM info using COBOL Displaying HEX data as printable Testing bit settings in COBOL
Got COBOL?
ibm
Got COBOL?
ibm
PIC 9(4) COMP-5. PIC PIC PIC PIC X(9). X(100). S9(8) COMP-5. X(64).
Got COBOL?
ibm
Got COBOL?
ibm
Got COBOL?
ibm
ibm
Got COBOL?
ibm
Got COBOL?
ibm
10
Got COBOL?
ibm
11
Got COBOL?
ibm
12
Got COBOL?
ibm
PROCEDURE DIVISION. INIT. DISPLAY '>>>>>>>>>>> Starting CALLOPN <<<<<<<<<<<<<<<' CALL 'OPENIT' USING DSNAME-80 LRECL-80 CALL 'OPENIT' USING DSNAME-133 LRECL-133 DISPLAY '>>>>>>>>>>> GOBACK . END PROGRAM CALLOPN. Ending CALLOPN <<<<<<<<<<<<<<<'
13
Got COBOL?
ibm
14
Got COBOL?
ibm
COBOL can be C!
15
Got COBOL?
ibm
COBOL can be C
C: ---------------------------/* Invoke a C function written in COBOL { int x; x = C_FUNC(x); } COBOL: ---------------------------PROGRAM-ID. C_FUNC. ************************************************************ * This is a C function to increment a variable that was * * passed with C convention rather than System z convention * ************************************************************ LINKAGE SECTION. 77 X 77 Y PIC S9(9) COMP-5. PIC S9(9) COMP-5.
PROCEDURE DIVISION USING BY VALUE X RETURNING Y. ADD 1 TO X GIVING Y GOBACK . END PROGRAM C_FUNC.
16 Got COBOL? 2007 IBM Corporation
ibm
COBOL:
---------------------------PROGRAM-ID. CALLCPP. ************************************************************ * This is a COBOL program invoking a C function that was * * written in C++. Note: dynamic call uppercases sub name * ************************************************************ LINKAGE SECTION. 77 SUBX PIC X(8) VALUE c_func. 77 X PIC S9(9) COMP-5. PROCEDURE DIVISION. CALL SUBX USING X RETURNING X GOBACK
17
Got COBOL?
ibm
C++ can be C! Or
C++: No need to give entry point name if FETCHABLE
---------------------------extern "C" #pragma linkage(dsub,FETCHABLE) int C_FUNC (A) { cout << "Hello from C++" << endl; return A + 1; }
COBOL:
---------------------------PROCESS PGMNAME(LONGMIXED) PROGRAM-ID. CALLCPP. ************************************************************ * This is a COBOL program invoking a C function that was * * written in C++. Note: dynamic call uppercases sub name * ************************************************************ LINKAGE SECTION. 77 SUBX PIC X(8) VALUE c_func. 77 X PIC S9(9) COMP-5. PROCEDURE DIVISION. CALL SUBX USING BY VALUE X RETURNING X GOBACK
18 Got COBOL? 2007 IBM Corporation
ibm
19
Got COBOL?
ibm
SET to TRUE
***************************************************************** * You can use 88 level condition name values to assign to the * * conditional variable using SET * ***************************************************************** 01 RESULT-CODE PIC S9(9) BINARY. 88 RESUME VALUE +10. 88 PERCOLATE VALUE +20. 01 88 88 EOF-INDICATOR NOT-EOF VALUE 0. EOF VALUE 1. PIC 9.
***************************************************************** * Set to true can be used for false, sort of. . . * ***************************************************************** SET NOT-EOF TO TRUE
20
Got COBOL?
ibm
Base Locators
PROGRAM-ID OPENIT------------------------------------------77 ENV-NAME. . . . . 77 ENV-VALUE . . . . 77 DSNAME-80 . . . . 77 DSNAME-133. . . . 77 LRECL-80. . . . . 77 LRECL-133 . . . . 1 CURRENT-CONDITION 2 FIRST-8-BYTES . 3 C-SEVERITY. . 3 C-MSGNO . . . 3 C-FC-OTHER. . 3 C-FAC-ID. . . 2 C-I-S-INFO. . . 77 DSNAME. . . . . . 77 LRECL . . . . . . 77 ENV-STRING. . . .
Got COBOL?
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
BLW=00000 BLW=00000 BLW=XXXXX BLW=XXXXX BLW=XXXXX BLW=XXXXX BLL=XXXXX BLL=XXXXX BLL=XXXXX BLL=XXXXX BLL=XXXXX BLL=XXXXX BLL=XXXXX BLL=00001 BLL=00002 BLL=00003
2007 IBM Corporation
ibm
OPTIMIZE(FULL) trick
OPT(FULL)
Don't use for programs with flags in WORKING-STORAGE unless you add references to them The OPTIMIZER will delete a dead reference anyway, but OPT(FULL) will not delete the data item if it is referenced 77 BEG-MARKER PIC X(20) VALUE "BEGINNING OF W-S". ... ... IF BEG-MARKER NOT EQUAL BEG-MARKER THEN DISPLAY BEG-MARKER.
22
Got COBOL?
ibm
Text-name Library (Member) (DDNAME) ACTIONS CUSTOMER CUSTOMER HOUSE HOUSE IMOTOR ISOVERFY NSMAP SYSLIB SYSLIB ALTDDXXY SYSLIB ALTDDXXY SYSLIB SYSLIB SYSLIB
File name (Dataset name) USER1.COBOL.COPY USER1.COBOL.LIB2PDSE USER1.COBOL.LIB3 USER1.COBOL.LIB2PDSE USER1.COBOL.LIB2 USER1.COBOL.LIB4X USER1.COBOL.COPY USER1.COBOL.LIB3
Concat Level 0 1 0 1 1 3 0 2
ISPF statistics Changed Created 1992/07/11 2007/06/07 2007/06/01 2007/06/07 2007/06/07 1993/03/16 16:16:17 2007/06/07 11:28:14 2007/06/01 17:35:18 2007/06/07 11:39:02 2007/06/07 11:37:53
23
Got COBOL?
ibm
24
Got COBOL?
ibm
FILE SECTION. FD REPORT-FILE RECORD IS VARYING IN SIZE FROM 1 TO 10000 DEPENDING ON REPORT-SIZE. 01 REPORT-RECORD PIC X(10000). WORKING-STORAGE SECTION. ***************************************************************** * Here is the Error Report Group (ERG) of data from which we * * will generate an XML message * ***************************************************************** 01 ERROR-REPORT-GROUP. 05 PROGRAM-THAT-FAILED PIC X(20). 05 OFFSET-OF-FAILURE PIC X(20). 05 FAIL-TIME PIC X(20). 05 MESSAGE-NUMBER PIC X(10). 05 MESSAGE-TEXT PIC X(200). 77 REPORT-SIZE PIC 9(4) COMP-5.
25
Got COBOL?
ibm
26
Got COBOL?
ibm
27
Got COBOL?
ibm
ibm
PSA CVT
Procedure Division. * First the Prefixed Save Area, with invalid address SET ADDRESS OF cb1 TO NULL * Then the Communication Vector Table SET ADDRESS OF cvt TO ptr1(5) MOVE cvt(341:8) TO sys-name MOVE cvt(857:4) TO four-bytes COMPUTE real-storage-m = (full-word + 1023) / 1024 DISPLAY ' SYSNAME=' sys-name DISPLAY ' STOR=' real-storage-m 'M'
Got COBOL? 2007 IBM Corporation
29
ibm
30
Got COBOL?
ibm
RMCT
31
Got COBOL?
ibm
ECVT
ibm
33
Got COBOL?
ibm
01 01 01 01 01 01 01
LINKAGE SECTION. 01 HEXIN PIC X(4). 01 DECNUM REDEFINES HEXIN PIC S9(8) COMP.
34 Got COBOL? 2007 IBM Corporation
ibm
ibm
36
Got COBOL?
ibm
ibm
ibm
39
Got COBOL?
ibm
40
Got COBOL?
ibm
41
Got COBOL?
ibm
42
Got COBOL?
ibm
If half-word > 7 subtract 8 from half-word move '1' to byte-switch (5) end-if If half-word > 3 subtract 4 from half-word move '1' to byte-switch (6) end-if If half-word > 1 subtract 2 from half-word move '1' to byte-switch (7) end-if If half-word = 1 move '1' to byte-switch (8) end-if
43 Got COBOL? 2007 IBM Corporation
ibm
ibm
45
Got COBOL?
ibm
46
Got COBOL?