CICS COBOL Programming Tutorial: The Basics (MVS/ESA, OS/390, z/OS)

preview_player
Показать описание
This is a quick tutorial that covers CICS programming on "modern" (post-MVS/XA) MVS systems. Do note that some of the stuff I do requires sysprog rights, so, your mileage in getting stuff done may vary.

Here's what I ended up covering:
- Datasets for source and load modules to go in
- Editing the CICS startup JCL
- Basic COBOL hello example
- Compiling a CICS COBOL program
- Basics of BMS maps
- Assembling and linking maps
- Defining maps, programs, and transactions to CICS
- Displaying maps from a COBOL program
- Running transactions

Рекомендации по теме
Комментарии
Автор

Thank you! Explaining the cicsa member was the best for real It was already set up for me and I could use CEDA to define the transaction, programs, and maps. But I really needed to know exactly what that CICSA member did in all of its data definitions.

BlueDippy
Автор

It's interesting how your setup involves application programming and system programming all in one I was a consultant 25 years and never did half of the things I just saw you do😂 great video really enjoyed it

TheRealNewBlackMusic
Автор

The following guide was emailled to me by Tim Lank, who composed an outline for this video, please give this a read as an accompaniment to this video!

HS TECH CHANNEL - CICS COBOL Programming Tutorial: The Basics (MVS/ESA, OS/390, z/OS)

VIEWING GUIDE

- ADCD SETUP
- HAVE ONE TERMINAL SESSION LOGGED INTO TSO/ISPF AS IBMUSER (OR ONE HAVING ALL PRIVS) AND A SECOND LOGGED INTO CICS
- NOTE: MY COBOL COMPILER IS VERSION 330 AND CICS VERSION IS 23
- USE MOEBIUS ANSI ART EDITOR TO EDIT MAPS - THEN RUN THROUGH ANSI2BMS (FOUND ON GITHUB - BY MAINFRAMED)


1. ALLOCATE SOURCE CODE, JCL, AND LOAD LIBRARY DATASETS

WEC.SRC.CICS PO FB RECORD LENGTH 80 1 CYL
PRIMARY QUANTITY: 1
SECONDARY QUANTITY: 0
DIRECTORY BLOCKS: 20
RECORD FORMAT: FB
RECORD LENGTH: 80
BLOCK SIZE: 27920
DATA SET NAME TYPE: PDS

WEC.SRC.CICS.LOAD PO U RECORD LENGTH 0 3 CYL
PRIMARY QUANTITY: 3
SECONDARY QUANTITY: 0
DIRECTORY BLOCKS: 20
RECORD FORMAT: U
RECORD LENGTH: 0
BLOCK SIZE: 27920
DATA SET NAME TYPE: PDS


2. FIND THE CICSA FILE
FOR ZOSV1R5 ADCD: ADCD.ZOSV1R5.PROCLIB(CICSA) ON Z5RES1 (YOUR FIRST RESIDENT VOLUME)

3. EDIT CICSA AND FIND //DFHRPL AND ADD WEC.SRC.CICS.LOAD TO THE CONCATENATION
// DD DSN=WEC.SRC.CICS.LOAD, DISP=SHR


4. IN THE WEC.SRC.CICS PDS (WHAT WE'LL END UP WITH):
CICSHI (CICS HELLO WORLD TEST COBOL PROGRAM)
COBJCL (JOB TO COMPILE CICS HELLO WORLD COBOL PROGRAM)
COBJCL2 (JOB TO COMPILE SHOWMAP)
MAPJCL (JOB TO MAKE BINARY OBJECT FILE OF TSTMAPS MAP BMS (BASIC MAPPING SUPPORT) DEFINITION FILE AND ALSO THE COBOL PROGRAM COPYBOOK)
SHOWMAP (COBOL PROGRAM TO USE/SHOW THE TSTMAP MAPSET)
TSTMAP (COBOL COPYBOOK FOR SHOWMAPS COBOL PROGRAM)
TSTMAPS (CICS BMS MAP DEFINITION FILE)

5. EDIT WEC.SRC.CICS(CICSHI):
IDENTIFICATION DIVISION.
PROGRAM-ID. CICSHI.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-MESSAGE PIC X(40).
01 WS-LENGTH PIC S9(4) COMP.
PROCEDURE DIVISION.
BEGIN.
MOVE 'HELLO MVS CICS!' TO WS-MESSAGE
MOVE 15 TO WS-LENGTH
EXEC CICS SEND TEXT
FROM(WS-MESSAGE)
LENGTH(WS-LENGTH)
END-EXEC
EXEC CICS RETURN
END-EXEC
STOP RUN.

6. FIND THE CICS HIGH-LEVEL QUALIFIER FOR YOUR SYSTEM - TO SEARCH - =3.4 DSNAME LEVEL: **.SDFH*
EX: MINE IS CICSTS23.CICS

7. FIND THE COBOL COMPILER HIGH-LEVEL QUALIFIER FOR YOUR SYSTEM - TO SEARCH - =3.4 DSNAME LEVEL: **.SIGYCOMP
EX: MINE IS IGY330.SIGYCOMP

8. EDIT WEC.SRC.CICS(COBJCL)
//WECCICS1 JOB (1), CLASS=A, MSGCLASS=H, MSGLEVEL=(1, 1)
//IBMLIB JCLLIB ORDER=CICSTS23.CICS.SDFHPROC
//CPLSTP EXEC DFHYITVL, PROGLIB='WEC.SRC.CICS.LOAD',
// INDEX='CICSTS23.CICS',
// DSCTLIB='WEC.SRC.CICS.LOAD',
// AD370HLQ='IGY330',
// LE370HLQ='CEE'
//TRN.SYSLIN DD DSN=WEC.SRC.CICS(CICSHI), DISP=SHR
//COB.SYSLIB DD DSN=WEC.SRC.CICS, DISP=SHR
//LKED.SYSIN DD *
NAME CICSHI(R)
/*
//

9. SUBMIT

10. =M;5;ST (S LEFT OF THE JOB NUMBER TO VIEW OUTPUT)

11. IN CICS SESSION: PRESS CLEAR KEY

12. IN CICS SESSION: CEDA DEFINE PROGRAM(CICSHI) GROUP(CICSTEST)

13. IN CICS SESSION: DEFINE TRANSACTION(HELO) PROGRAM(CICSHI) GROUP(CICSTEST)

14. IN CICS SESSION: INSTALL GROUP(CICSTEST)

15. IN CICS SESSION: PRESS F3 THEN PRESS CLEAR KEY

16. IN CICS SESSION: HELO

17. EDIT WEC.SRC.CICS(TSTMAPS) (DON'T FORGET THE CONTINUATION X'S NEED TO BE IN COLUMN 72)
CICSMAP TITLE 'AUTOGENERATED BMS'
PRINT NOGEN
TSTMAP DFHMSD X
X
X
DSATTS=(COLOR, HILIGHT), MAPATTS=(COLOR, HILIGHT), X

CTRL=FREEKB
TESTMAP DFHMDI


DFHMDF



INITIAL='CICS'
DFHMDF




DFHMDF



INITIAL='THAT'
DFHMDF




DFHMSD TYPE=FINAL
END

18. EDIT WEC.SRC.CICS(MAPJCL)
//WECCICS2 JOB (1), CLASS=A, MSGCLASS=H, MSGLEVEL=(1, 1)
//IBMLIB JCLLIB ORDER=CICSTS23.CICS.SDFHPROC
//CPLSTP EXEC DFHMAPS, MAPLIB='WEC.SRC.CICS.LOAD',
// INDEX='CICSTS23.CICS',
// DSCTLIB='WEC.SRC.CICS',
// MAPNAME='TSTMAP'
//COPY.SYSUT1 DD DSN=WEC.SRC.CICS(TSTMAPS), DISP=SHR

19. SUBMIT

20. =M;5;ST (S LEFT OF THE JOB NUMBER TO VIEW OUTPUT)

21. EDIT WEC.SRC.CICS(SHOWMAP)
IDENTIFICATION DIVISION.
PROGRAM-ID. SHOWMAP.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY TSTMAP.
PROCEDURE DIVISION.
BEGIN.
EXEC CICS
SEND MAP('TESTMAP')
MAPSET('TSTMAP')
ERASE
END-EXEC
EXEC CICS
RETURN
END-EXEC
STOP RUN.

22. EDIT WEC.SRC.CICS(COBJCL2)
//WECCICS3 JOB (1), CLASS=A, MSGCLASS=H, MSGLEVEL=(1, 1)
//IBMLIB JCLLIB ORDER=CICSTS23.CICS.SDFHPROC
//CPLSTP EXEC DFHYITVL, PROGLIB='WEC.SRC.CICS.LOAD',
// INDEX='CICSTS23.CICS',
// DSCTLIB='WEC.SRC.CICS.LOAD',
// AD370HLQ='IGY330',
// LE370HLQ='CEE'
//TRN.SYSIN DD DSN=WEC.SRC.CICS(SHOWMAP), DISP=SHR
//COB.SYSLIB DD DSN=WEC.SRC.CICS, DISP=SHR
//LKED.SYSIN DD *
NAME SHOWMAP(R)
//

22. SUBMIT

23. =M;5;ST (S LEFT OF THE JOB NUMBER TO VIEW OUTPUT)

24. IN CICS SESSION: CEDA DISPLAY GROUP(CICSTEST)

25. IN CICS SESSION: PRESS F3 KEY THEN CLEAR KEY

26. IN CICS SESSION: CEDA DEFINE MAP(TSTMAP) GROUP(CICSTEST)

27. IN CICS SESSION: PRESS F3 KEY THEN CLEAR KEY

28. IN CICS SESSION: CEDA DEFINE PROGRAM(SHOWMAP) GROUP(CICSTEST)

29. IN CICS SESSION: PRESS F3 KEY THEN CLEAR KEY

30. IN CICS SESSION: CEDA DEFINE TRANSACTION(SHMP) PROGRAM(SHOWMAP) GROUP(CICSTEST)

31. IN CICS SESSION: PRESS F3 KEY THEN CLEAR KEY

32. IN CICS SESSION: CEDA INSTALL GROUP(CICSTEST)

33. IN CICS SESSION: PRESS F3 KEY THEN CLEAR KEY

34. IN CICS SESSION: SHMP

END NOTES:
GOOD EXAMPLE - LOOK UP DOGE COIN CICS BANK ON GITHUB (DOGECICS)- MADE BY THE SAME GUY THAT MADE ANSI2BMS (MAINFRAMED - SOLDIER OF FORTRAN)
GOOD BOOK - CICS FOR THE COBOL PROGRAMMER
READ IBM MANUALS

hs-tc
Автор

& The last time I programmed in COBOL was in the late 80s on Siemens BS3000

berndkahlau
Автор

If you don't mind i have one doubt, my cics region serching load files in 'DFH410.CICS.LOADLIB' but in the jcl i gave another pdse library for load modules, please help me to sort out this problem

ec-ganesh
Автор

I last used CICS 29 years ago and it is amazing to see that the "methodology" had hardly changed a bit.

That is - The (very crude and ridiculously pedantic) 'Basic Mapping support' from the 1980's is almost unchanged and the general procedure to create a Cobol CICS transaction and program is hardly improved either. Using the "generic Hello World" example is stupefyingly over simplified (for ANY environment/language, not just the CICS ecosystem).

If I had still been 'in the mix' for 29 more years, we would be so much more advanced, we would have already been in the stratosphere!


Are there people really still using these inefficient procedures today?

therealshakespeare
Автор

It's like you're just talking to yourself, like there's no one else here. Too bad because you obviously know your stuff, and i was hoping to learn something

timeclockapp-imonit
Автор

what are u doing bruh its intresting i wan to do it 🙂

durgasreepadh
Автор

too bad about the background noise, I can't watch

lyntonblair
join shbcf.ru