The essence of COBOL programming | |
Introduction to COBOL programming | |
COBOL platforms, standards, and compilers | p. 4 |
COBOL platforms | p. 4 |
COBOL standards and mainframe compilers | p. 6 |
An interactive COBOL program | p. 8 |
An interactive session | p. 8 |
The COBOL code | p. 10 |
Basic coding rules | p. 12 |
How to code the Identification Division | p. 14 |
How to code the Environment Division | p. 14 |
How to code the Working-Storage Section | p. 16 |
How to create data names | p. 16 |
How to code Picture clauses | p. 18 |
How to code Value clauses | p. 20 |
How to code group items | p. 22 |
How to code the Procedure Division | p. 24 |
How to create procedure names | p. 24 |
How to code Accept statements | p. 26 |
How to code Display statements | p. 28 |
How to code Move statements | p. 30 |
How to code Compute statements | p. 32 |
How to code arithmetic expressions | p. 34 |
How to code Add statements | p. 36 |
How to code If statements | p. 38 |
How to code Perform statements | p. 40 |
How to code Perform Until statements | p. 40 |
How to code the Stop Run statement | p. 40 |
Another interactive COBOL program | p. 42 |
An interactive session | p. 42 |
The COBOL code | p. 44 |
How to compile, test, and debug a COBOL program | |
Introduction to compiling and testing | p. 48 |
How a COBOL program is compiled, link-edited, and executed | p. 48 |
A basic procedure for developing COBOL programs | p. 50 |
The basic skills for compiling and testing a program | p. 52 |
How to enter and edit a source program | p. 52 |
How to compile and run a program | p. 54 |
How to review the diagnostic messages for compile-time errors | p. 56 |
How to correct compile-time errors | p. 58 |
How to review the message for a run-time error | p. 60 |
How to correct a run-time error | p. 62 |
How debugging tools can make debugging easier | p. 64 |
How to use COBOL statements to get debugging information | p. 66 |
How to write a program that prepares a report | |
A simple report-preparation program | p. 70 |
The file specifications | p. 70 |
The report specifications | p. 72 |
The COBOL code | p. 74 |
How to code Select statements and FD statements | p. 82 |
How to code Select statements on a mainframe | p. 82 |
How to code FD statements and record descriptions for disk files | p. 84 |
How to code FD statements and record descriptions for print files | p. 84 |
How to code the Procedure Division | p. 86 |
How to code Open and Close statements | p. 86 |
How to code Read statements for sequential disk files | p. 88 |
How to code Write statements for print files | p. 88 |
How to use the Current-Date function to get the current date and time | p. 90 |
How to use Accept statements to get the current date and time | p. 92 |
An enhanced version of the report-preparation program | p. 94 |
The enhanced report specifications | p. 94 |
The changes to the Data Division code | p. 96 |
The changes to the Procedure Division code | p. 98 |
How to test a report-preparation program | p. 100 |
How to prepare a test plan and test data | p. 100 |
Common run-time errors | p. 102 |
How to design, code, and test a structured program | |
How to develop a structured program | p. 106 |
A complete procedure for developing a structured program | p. 106 |
The specifications for a summary report-preparation program | p. 108 |
How to design a structured program | p. 110 |
The terms for working with a structure chart | p. 110 |
How to name the modules in a chart | p. 110 |
How to design the first two levels of a chart | p. 112 |
How to design the legs of a chart | p. 114 |
How to add the Read and Write modules to a chart | p. 116 |
How to number the modules in a chart | p. 118 |
How to draw charts that won't fit on one page | p. 118 |
Alternatives to the structure chart | p. 120 |
When and how to use pseudocode | p. 122 |
The basics of using pseudocode | p. 122 |
How to use pseudocode for the critical modules of a program | p. 124 |
How to code each module so it is independent | p. 126 |
How to code and test a program from the top down | p. 128 |
How to plan the coding and testing sequence | p. 128 |
How to code the new modules for each phase of testing | p. 130 |
How to code program stubs | p. 132 |
The code for the summary report-preparation program | p. 134 |
The Data Division code | p. 134 |
The Procedure Division code | p. 136 |
How COBOL programming compares to object-oriented programming | p. 142 |
How to use the COBOL features for structured coding | |
Introduction to structured programming | p. 146 |
The three valid structures | p. 146 |
The principles of substitution and combination | p. 148 |
From theory to practice | p. 148 |
Shop standards for structured coding | p. 150 |
How to code conditions | p. 152 |
How to code relation, sign, and class tests | p. 152 |
How to code compound conditions | p. 154 |
How to code and use condition names | p. 156 |
How to code selection and iteration structures | p. 158 |
How to code If statements | p. 158 |
How to code nested If statements | p. 160 |
How to code Perform Until statements with tests before and after | p. 162 |
When and how to code inline Perform statements | p. 164 |
How to code Perform statements with Varying and Times clauses | p. 166 |
How to use Evaluate statements | p. 168 |
How to use an Evaluate statement instead of nested If statements | p. 168 |
How to use Evaluate statements to implement case structures | p. 170 |
The complete syntax of the Evaluate statement | p. 172 |
Other features for improved coding | p. 174 |
How to use Set to True statements | p. 174 |
When and how to use structured delimiters | p. 176 |
When and how to use Not clauses | p. 178 |
A program that prepares a two-level summary report | p. 180 |
The program specifications | p. 180 |
The structure chart | p. 182 |
The COBOL code for the primary control module | p. 184 |
Three paragraphs written with a modern coding style | p. 186 |
Other ways to define, move, and initialize fields | |
How to define fields in the Data Division | p. 190 |
When to omit the word Filler | p. 190 |
How to code literals and figurative constants | p. 192 |
How to code Picture, Value, and Blank When Zero clauses | p. 194 |
How to code Usage clauses | p. 196 |
How to code Redefines clauses | p. 198 |
How to use Move and Initalize statements | p. 200 |
How to code Move statements | p. 200 |
How to code Pictures for alphanumeric and numeric editing | p. 202 |
How to code Initialize statements | p. 204 |
Usages and data formats on an IBM mainframe | p. 206 |
IBM mainframe extensions to the standard usages | p. 206 |
Binary, hex, and EBCDIC notation | p. 208 |
The primary formats for numeric data | p. 210 |
An enhanced report-preparation program | p. 212 |
The changes to the one-level summary report | p. 212 |
The changes to the Working-Storage code | p. 212 |
The changes to the Procedure Division code | p. 214 |
Other COBOL essentials | |
How to use arithmetic statements and intrinsic functions | |
How to code arithmetic statements | p. 220 |
How to code Compute statements | p. 220 |
How to code arithmetic expressions | p. 222 |
How to code Add and Subtract statements | p. 224 |
How to code Multiply and Divide statements | p. 226 |
How to use intrinsic functions | p. 228 |
A summary of the six types of functions | p. 228 |
How to code any function | p. 230 |
How to use the mathematical functions | p. 232 |
How to use the statistical functions | p. 234 |
How to use the financial functions | p. 236 |
How to work with dates | |
How to use Accept statements and the date functions | p. 240 |
How to use Accept Date and Accept Time statements | p. 240 |
How to use Accept Day and Accept Day-Of-Week statements | p. 242 |
How to use the functions for working with dates | p. 244 |
The Y2K problem and its solutions | p. 246 |
The Y2K problem | p. 246 |
The Y2K solutions: Date expansion and century windowing | p. 248 |
How to use IBM's Millennium Language Extensions | p. 250 |
How to define date fields with the Date Format clause | p. 250 |
How to work with date fields in the Procedure Division | p. 252 |
How to work with characters | |
How to use reference modification and functions | p. 256 |
How to use reference modification | p. 256 |
How to use the functions for working with characters | p. 258 |
How to use the String and Unstring statements | p. 260 |
How to use the String statement | p. 260 |
How to use the Unstring statement | p. 262 |
How to use the Inspect statement | p. 264 |
With the Tallying clause | p. 264 |
With the Replacing clause | p. 266 |
With the Tallying and Replacing clauses | p. 268 |
With the Converting clause | p. 270 |
Two illustrative routines | p. 272 |
An editing routine | p. 272 |
A conversion routine | p. 272 |
How to work with tables | |
How to use subscripts to work with one-level tables | p. 276 |
How to define a one-level table that uses subscripts | p. 276 |
How to initialize a table | p. 278 |
How to define a table with constant values | p. 278 |
How to refer to entries in a one-level table using subscripts | p. 280 |
How to load a one-level table using subscripts | p. 282 |
How to search a one-level table using subscripts | p. 284 |
How to use subscripts to work with multi-level tables | p. 286 |
How to define a multi-level table | p. 286 |
How to refer to entries in a multi-level table using subscripts | p. 288 |
How to load a two-level table using subscripts | p. 288 |
How to search a two-level table using subscripts | p. 290 |
How to use indexes to work with tables | p. 292 |
How to define a table with an index | p. 292 |
How to refer to table entries using an index | p. 292 |
How to load a table using an index | p. 294 |
How to code the Set statement | p. 296 |
How to perform a sequential search | p. 298 |
How to perform a binary search | p. 300 |
How to search a two-level table using indexes | p. 302 |
How to work with variable-length tables | p. 304 |
How to define a variable-length table | p. 304 |
How to load a variable-length table | p. 306 |
How to search a variable-length table | p. 306 |
Another technique for working with variable-length tables | p. 308 |
Other features for working with tables | p. 310 |
How to use the Perform Varying statement to vary more than one index or subscript | p. 310 |
How to use intrinsic functions with tables | p. 312 |
How to use copy members and subprograms | |
How to use copy members | p. 316 |
How to use the Copy statement | p. 316 |
Guidelines for using copy members | p. 318 |
How to use subprograms | p. 320 |
How to call a subprogram | p. 320 |
How to write a subprogram | p. 322 |
Another example of a calling program and subprogram | p. 324 |
Guidelines for using subprograms | p. 326 |
COBOL for working with files | |
Concepts and terms for working with disk files | |
Disk concepts and terms | p. 332 |
How data is stored on a disk drive | p. 332 |
How the data in a sector is read or written | p. 334 |
Blocked versus unblocked records | p. 336 |
Fixed-length versus variable-length records | p. 336 |
File organization concepts | p. 338 |
Sequential file organization | p. 338 |
Indexed file organization | p. 340 |
Indexed file organization with alternate indexes | p. 342 |
Relative file organization | p. 344 |
VSAM file organizations | p. 344 |
Typical programs that work with disk files | p. 346 |
Interactive programs | p. 346 |
Batch programs | p. 348 |
How to work with sequential files | |
COBOL for fixed-length records | p. 354 |
How to code Select and FD statements | p. 354 |
How to code Procedure Division statements | p. 356 |
How to work with file status codes | p. 358 |
A sequential update program | p. 360 |
The program specifications | p. 360 |
The test data and matching record logic | p. 362 |
The structure chart | p. 364 |
The COBOL code | p. 366 |
A sequential maintenance program | p. 372 |
The program specifications | p. 372 |
The test data and matching record logic | p. 374 |
The structure chart | p. 376 |
The COBOL code | p. 378 |
Special considerations for sequential update and maintenance programs | p. 386 |
Error processing for I/O operations | p. 386 |
Testing and debugging | p. 388 |
Design alternatives | p. 390 |
COBOL for variable-length records | p. 392 |
How to code FD statements | p. 392 |
How to write to a file that contains record types with different lengths | p. 394 |
How to process a file that contains record types with different lengths | p. 396 |
How to write records with a varying number of segments | p. 398 |
How to process records with a varying number of segments | p. 400 |
How to work with indexed files | |
COBOL for indexed files | p. 404 |
How to code Select statements | p. 404 |
File status codes | p. 406 |
How to code the Open, Close, Read, Write, and Rewrite statements | p. 408 |
How to code the Start statement | p. 410 |
How to code the Delete statement | p. 410 |
A sequential file creation program | p. 412 |
The program specifications | p. 412 |
The structure chart | p. 412 |
The COBOL code | p. 414 |
A random maintenance program | p. 418 |
The program specifications | p. 418 |
The structure chart | p. 420 |
The COBOL code | p. 422 |
How to work with alternate indexes | p. 430 |
How to code Select statements | p. 430 |
How to code Start and Read statements | p. 432 |
How to process an alternate index sequentially | p. 434 |
How to process an alternate index randomly | p. 436 |
Other processing techniques | p. 438 |
How to use dynamic processing | p. 438 |
How to use skip-sequential processing | p. 440 |
How to work with relative files | |
COBOL for relative files | p. 444 |
How to code Select statements | p. 444 |
How to code I/O statements | p. 446 |
How to process relative files | p. 448 |
Sequential processing | p. 448 |
Random processing | p. 450 |
How to use the sort/merge feature | |
Concepts for sorting and merging | p. 454 |
Sorting concepts | p. 454 |
Merging concepts | p. 456 |
Why COBOL sorts and merges improve efficiency | p. 458 |
COBOL for sorting | p. 460 |
How to code Select and SD statements | p. 460 |
How to code the Sort statement | p. 462 |
How to code the Release statement | p. 464 |
How to code the Return statement | p. 464 |
An edit-sort-and-update program | p. 466 |
The program specifications | p. 466 |
The structure chart | p. 468 |
The COBOL code | p. 470 |
Efficiency considerations | p. 472 |
COBOL for merging | p. 476 |
How to code the Merge statement | p. 476 |
How to use the Sort statement to merge files | p. 478 |
How to merge files using JCL | p. 478 |
Two more sort/merge considerations | p. 480 |
IBM special registers | p. 480 |
The FASTSRT compiler option | p. 480 |
The IBM mainframe environment for COBOL | |
Introduction to IBM mainframes | |
IBM mainframe processors | p. 486 |
The basic architecture of a processor | p. 486 |
The history of the System 360/370 family of processors | p. 488 |
Input/output devices for IBM mainframes | p. 490 |
Terminal display devices | p. 492 |
Direct access storage devices | p. 494 |
Printer devices | p. 494 |
Magnetic tape and optical disk devices | p. 494 |
The basic features of a mainframe operating system | p. 496 |
Virtual storage | p. 496 |
Multiprogramming | p. 496 |
Spooling | p. 498 |
Batch processing | p. 500 |
Time sharing | p. 502 |
Operating systems for IBM mainframes | p. 504 |
The OS family of operating systems | p. 504 |
Other IBM mainframe operating systems | p. 504 |
Features of the OS/390 and z/OS operating systems | p. 506 |
OS/390 and z/OS subsystems and facilities | p. 508 |
How to compile and test programs on an IBM mainframe | |
An introduction to program development on a mainframe | p. 512 |
How a COBOL program is compiled, link-edited, and executed on a mainframe | p. 512 |
A general procedure for developing a COBOL program on a mainframe | p. 512 |
How to create a source program using ISPF | p. 514 |
Basic skills for working with ISPF | p. 514 |
How to create a partitioned data set | p. 516 |
How to start an edit session | p. 518 |
How to work in the edit data display | p. 520 |
How to use line commands and primary commands | p. 522 |
How to terminate an edit session | p. 522 |
How to compile, link-edit, and execute a program | p. 524 |
An introduction to jobs and Job Control Language | p. 524 |
The cataloged procedures for COBOL program development | p. 526 |
How to use the compile-link-and-go procedure | p. 528 |
How to execute an existing program | p. 530 |
How to create a sequential data set | p. 532 |
How to use SDSF to work with jobs and job output | p. 534 |
Basic skills for working with SDSF | p. 534 |
How to work with jobs | p. 536 |
How to use SDSF to work with jobs and job output (continued) | |
How to work with job output | p. 538 |
How to display job output | p. 540 |
How to handle compile-time and run-time error messages | p. 542 |
How to handle compile-time error messages | p. 542 |
How to handle run-time error messages | p. 544 |
How to use Access Method Services to work with VSAM files | |
How VSAM manages data sets | p. 548 |
The Integrated Catalog Facility (ICF) | p. 548 |
Control intervals and control areas | p. 550 |
Free space and record additions for a KSDS | p. 552 |
How a record in a KSDS is randomly accessed by primary key | p. 554 |
How alternate indexes work | p. 554 |
Introduction to Access Method Services | p. 556 |
Some commonly used AMS commands | p. 556 |
The JCL requirements for using AMS commands | p. 558 |
The syntax requirements for AMS commands | p. 558 |
How to use the Define Cluster command to define a data set | p. 560 |
Parameters that identify a data set | p. 562 |
Parameters that describe the data set's characteristics | p. 564 |
Parameters that allocate space to the data set | p. 566 |
Other Define Cluster parameters | p. 568 |
How to use the Listcat command to list catalog information | p. 570 |
How to identify the entries you want to list | p. 572 |
How to limit the amount of information that's listed for each entry | p. 572 |
How to use AMS commands to print, copy, and delete data sets | p. 574 |
How to use the Print command to print a data set | p. 574 |
How to use the Repro command to copy a data set | p. 576 |
How to use the Delete command to delete a data set | p. 578 |
How to define and build an alternate index | p. 580 |
How to use the Define Alternateindex command | p. 580 |
How to use the Define Path command | p. 582 |
How to use the Bldindex command | p. 584 |
How to use CICS to develop interactive programs | |
Program development concepts and techniques | p. 588 |
How application programs use CICS services | p. 588 |
How pseudo-conversational programming works | p. 590 |
How to develop CICS programs | p. 592 |
The Execute Interface Block and the Dfhaid copy member | p. 594 |
A CICS inquiry program | p. 596 |
The program specifications | p. 596 |
The BMS mapset | p. 598 |
The symbolic map | p. 602 |
The structure chart | p. 606 |
The COBOL listing | p. 608 |
Introduction to CICS web programming | p. 616 |
The benefits of using CICS for web applications | p. 616 |
How to connect to CICS through the Internet | p. 616 |
Three techniques for accessing CICS programs | p. 618 |
How the CICS Transaction Gateway works | p. 620 |
How the 3270 Bridge exit works | p. 622 |
How to use DB2 to develop database programs | |
DB2 and the relational database model | p. 626 |
How a relational database is organized | p. 626 |
How the tables in a relational database are related | p. 628 |
How to use SQL to work with a DB2 database | p. 630 |
Introduction to Structured Query Language | p. 630 |
How to retrieve data from a single table | p. 632 |
How to join data from two or more tables | p. 634 |
How to create and work with result tables using embedded SQL | p. 636 |
A DB2 inquiry program | p. 638 |
The interactive screen | p. 638 |
The DCLGEN output | p. 640 |
The structure chart | p. 642 |
The COBOL listing | p. 644 |
How to develop a COBOL program that accesses DB2 data | p. 650 |
How to become an effective maintenance programmer | |
Statements and features you should be aware of | p. 654 |
Perform Thru and Go To statements | p. 654 |
Go To Depending statements | p. 656 |
Section names in the Procedure Division | p. 658 |
Qualification and the Move, Add, and Subtract Corresponding statements | p. 660 |
Declarative sections | p. 662 |
The basic skills for maintaining programs | p. 664 |
A structured procedure for maintaining a program | p. 664 |
What to change and where to change it | p. 666 |
How to document the changes in the source code | p. 668 |
Table of Contents provided by Ingram. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.