home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / cobol / compiler / cobol650 / doc / cobol650.doc
Text File  |  1990-10-11  |  154KB  |  4,295 lines

  1. .PL
  2.                               ANSI-COBOL 6.50
  3.                                 USERS MANUAL
  4.                               COPYWRITE  1990
  5.  
  6.  
  7.                                 INTRODUCTION
  8.  
  9.           This manual is a guide on how to properly write Cobol 
  10.           programs on the IBM-PC using Ansi-Standard COBOL Version 
  11.           6.50.  It is a guide on structured coding style and good 
  12.           programming techniques,  as well as a COBOL manual.  It 
  13.           will explain in detail the features used and the 
  14.           examples, but will limit the discussion to the most 
  15.           commonly used features of COBOL.
  16.  
  17.           Our goal as programmers is to write reasonably efficient 
  18.           programs that are easy for other programmers to read, 
  19.           this is necessary for maintaining the program.  Whenever 
  20.           possible, I have tried to present a style that is useful 
  21.           and has been tested on other computer systems, 
  22.           especially the large IBM mainframe used in business.  I 
  23.           acknowledged the possibility that the reader may one day 
  24.           use what he learns from this manual to write programs 
  25.           for such mainframes, or may port software, that is 
  26.           already written on these machines to the PC using COBOL 
  27.           6.50.  
  28.  
  29.                                 LIMITIATIONS
  30.  
  31.           You should note that : 
  32.           1)  COBOL Version 6.50 does not have the sort/merge 
  33.               feature.  This is being added and may be out by the 
  34.               time you receive this manual. Please note the readme 
  35.               file on the floppy.
  36.  
  37.           NOTE:SORT MERGE HAS BEEN ADDED TO THE LIBARY.
  38.  
  39.           2)  It does not have the report writer feature and never 
  40.               will.  
  41.           3)  It does not have the communications feature such as 
  42.               CICS. I will probably add this into it, but at this 
  43.               time I do not have any plans to.
  44.           4)  Certain features are implimented at it's first or 
  45.               lowest level.  
  46.           5)  It does have extensive screen formatting features 
  47.               that are not available in Cobol for the mainframe.
  48.  
  49.           The manual is divided into 2 parts.  Chapters ? - 
  50.           chapters ? will familiarize the reader with the most 
  51.           important components of Ansi-Standard COBOL Version 6.50 
  52.           and will allow him or her to start writing programs.  
  53.           Chapters ? - chapters ? are very important once he or 
  54.           she starts writing actual and especially more complex 
  55.           programs.  The last chapter is very important in that it 
  56.           illustrates how to use the COBOL COMPILIER to write 
  57.           programs and how to write applications.
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.   INTRODUCTION PAGE 1
  70.                               ANSI-COBOL 6.50
  71.                                 USERS MANUAL
  72.                               COPYWRITE  1990
  73.  
  74.  
  75.                              TABLE OF CONTENTS
  76.  Cobol Version 6.50 users Manual
  77.  Introduction                       
  78.  LIMITIATIONS                       
  79.  CHAPTER 1
  80.  Hardware and Software              1
  81.  Computer Systems                   1
  82.  Types of Computer Systems          1
  83.  Hardware                           2
  84.  Software                           2
  85.  System Software                    2
  86.  Programs                           2
  87.  Pseudo Code                        3
  88.  Figure 1.1                         3
  89.  Applications                       3
  90.  Developing Applications            3
  91.  CHAPTER 3
  92.  ANSI-COBOL Version 6.50            4
  93.  Introduction                       4
  94.  General Characteristics            4
  95.  X3.23-1974                         4
  96.  Components of COBOL                5
  97.  Statements                         5
  98.  example 3.1                        5
  99.  Sentence                           6
  100.  example 3.2                        6
  101.  Clause                             6
  102.  example 3.3                        6
  103.  Paragraph                          7
  104.  example 3.4                        7
  105.  Section                            7
  106.  example 3.5                        8
  107.  STATEMENT FORMAT                   8
  108.  example 3.6                        9
  109.  Cobol Character Set                10
  110.  Rules For Punctuation              10
  111.  Characters used in Conditions      10
  112.  Characters used in Arithmetic      11
  113.  Characters used for print editing  11
  114.  Types of Words                     12
  115.  Reserved Words                     12
  116.  Reserved Words List                
  117.  Reserved words ACCEPT - RERUN      13
  118.  Reserved Words List
  119.  Reserved words list RESERVE - ZEROS 14
  120.  Non-reserved words rules           15
  121.  Data Format                        15
  122.  Elementary Data Items              15
  123.  Group Data Items                   16
  124.  Records                            16
  125.  Files                              16
  126.  COBOL Coding Form                  17
  127.  CHAPTER 4
  128.  Basic COBOL Statements              
  129.  INTRODUCTION                       18
  130.  The ACCEPT statment (format 2)
  131.  
  132.  
  133.  
  134.  TABLE OF CONTENTS PAGE 1
  135.                               ANSI-COBOL 6.50
  136.                                 USERS MANUAL
  137.                               COPYWRITE  1990
  138.  
  139.  
  140.  Fig.4.1
  141.  The (PRINTER) DISPLAY STATEMENT
  142.  example 4.2                        20
  143.  example 4.3                        21
  144.  THE MOVE STATEMENT                 21
  145.  EXAMPLE 4.4                        21
  146.  EXAMPLE 4.5
  147.  THE ADD STATEMENT                  23
  148.  EXAMPLE 4.6                        23
  149.  EXAMPLE 4.7                        24
  150.  THE SUBTRACT STATEMENT             24
  151.  EXAMPLE 4.8                        24
  152.  EXAMPLE 4.9                        25
  153.  THE MULTIPLY STATEMENT             25
  154.  EXAMPLE 4.10                       25
  155.  EXAMPLE 4.11
  156.  THE DIVIDE STATEMENT               27
  157.  EXAMPLE 4.12                       27
  158.  EXAMPLE 4.13                       28
  159.  THE GIVING CLAUSE                  28
  160.  EXAMPLE 4.14                       28
  161.  EXAMPLE 4.15                       29
  162.  THE ROUNDED CLAUSE                 29
  163.  EXAMPLE 4.16                       30
  164.  EXAMPLE 4.17                       31
  165.  THE PERFORM STATEMENT              31
  166.  EXAMPLE 4.20                       31
  167.  THE ON SIZE ERROR CLAUSE        32
  168.  EXAMPLE 4.22                       32
  169.  THE GO TO STATEMENT                33
  170.  EXAMPLE 4.24                       34
  171.  THE COMPUTE STATEMENT              35
  172.  EXAMPLE 4.26                       35
  173.  CHAPTER 5
  174.  BASIC FILE OPERATIONS  
  175.  INTRODUCTION                       37
  176.  FILES                              38
  177.  FILE ORGANIZATION                  38
  178.  RECORDS                            38
  179.  OPEN STATEMENT                     39
  180.  OPEN RULES                         39
  181.  THE CLOSE STATEMENT                39
  182.  THE READ STATEMENT                 40
  183.  THE WRITE STATEMENT (PRINT FILE)   40
  184.  EXAMPLE 5.01                       41
  185.  CHAPTER 6
  186.  CODING THE IDENTIFICATION
  187.   AND ENVIRONMENT DIVISIONS         
  188.  INTRODUCTION                       43       
  189.  THE IDENTIFICATION DIVISION        44
  190.  THE ENVIRONMENT DIVISION.          44
  191.  THE CONFIGURATION SECTION          44
  192.  THE INPUT-OUTPUT SECTION           45
  193.  RULES FOR CODING 
  194.  THE INPUT-OUTPUT SECTION           45
  195.  CHAPTER 7
  196.  
  197.  
  198.  
  199.  TABLE OF CONTENTS PAGE 2
  200.                               ANSI-COBOL 6.50
  201.                                 USERS MANUAL
  202.                               COPYWRITE  1990
  203.  
  204.  
  205.  CODING THE DATA DIVISION
  206.  Introduction                       46
  207.  Sections                           47
  208.  File Section                       47
  209.  FILE SECTION RULES                 47
  210.  File Record Entries                47
  211.  Data Item Definition               48
  212.  Rules for coding 
  213.  Data items                         48
  214.  WORKING-STORAGE SECTION            49
  215.  LINKAGE SECTION                    49
  216.  SCREEN SECTION                     49
  217.  CHAPTER 8
  218.  CODING THE PROCEDURE DIVISION
  219.  INTRODUCTION                       50
  220.  Structured programming             51
  221.  Program Constructs                 51
  222.  The IF condition                   51
  223.  Modular Programming                52
  224.  The Main Line Section              52
  225.  Other sections                     52
  226.  Paragraphs                         53
  227.  Procedure Names                    53
  228.  Statements and Sentences           54 
  229.  CHAPTER 9
  230.  Screen Processing
  231.  Accept 3 format
  232.  Introduction                       55
  233.  Screen Format                      56
  234.  Screen Header                      56
  235.  Data Area                          56
  236.  THE SCREEN SECTION                 57
  237.  RULES FOR CODING THE
  238.  SCREEN SECTION                     57
  239.  THE DISPLAY VERB
  240.  The Accept (3)                     59
  241.  EXAMPLE 9.01                       59
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  TABLE OF CONTENTS PAGE 3
  265.                               ANSI-COBOL 6.50
  266.                                 USERS MANUAL
  267.                               COPYWRITE  1990
  268.  
  269.  
  270.                      Chapter 1:  Hardware and Software
  271.                                 INTRODUCTION
  272.  
  273.           The first 2 chapters provide an introduction for those 
  274.           who have no experience with developing applications or 
  275.           writing programs.  Hopefully they may have some 
  276.           background in programming, possibly in BASIC. Otherwise 
  277.           the reader may go immediately to chapter 3.
  278.  
  279.                               Computer Systems
  280.  
  281.           A computer, or more accurately computer system, is a set 
  282.           of electronic and electromechanical devices that perform 
  283.           a series of functions under the control of a set of 
  284.           instructions written by human being.  This set of 
  285.           devices is called hardware and this set of instructions 
  286.           is software.  This hardware under control of the proper 
  287.           software will compute payroll of a company, guide a 
  288.           spacecraft to the stars or allow Pacman to gobble up 
  289.           dots on a video display.
  290.  
  291.                          Types of Computer Systems
  292.  
  293.           There are several types of computers systems.  
  294.           Mainframes are the medium to large computers used by 
  295.           businesses or other large organizations.  They can 
  296.           handle many jobs running concurrently and have large 
  297.           memories and can handle many input devices including 
  298.           terminals.  Many computers are smaller than mainframes 
  299.           and are used in specialized applications by business 
  300.           organizations.  They handle a smaller number of jobs 
  301.           concurrently and have a smaller number of input devices.  
  302.           Microcomputers which include PCs are smaller than many 
  303.           computers.  They have only a limited number of devices, 
  304.           can fit on the top of a desk, hence, are sometimes 
  305.           called desktype computers and usually run only one job 
  306.           at a given time.  They are extremely useful for small 
  307.           personal use and also for some very specialized use by a 
  308.           small group even large business organizations.
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.   PAGE 1
  330.                               ANSI-COBOL 6.50
  331.                                 USERS MANUAL
  332.                               COPYWRITE  1990
  333.  
  334.  
  335.                                   Hardware
  336.  
  337.           The IBM-PC's are composed of several hardware 
  338.           components.  These are the systems unit, Electronics 
  339.           comprising the microprocessor, either the 8088, 80186, 
  340.           80286, 80386, and the newer 80486.  Memory which maybe 
  341.           extended, expanded or conventional and a video display 
  342.           unit, This maybe any one of the types listed below and 
  343.           who knows what will come up next.  Monocrome, CGA, BGA, 
  344.           VGA, VEGA drives the keyboard and the hard drives.
  345.  
  346.                                   Software
  347.  
  348.           There are 2 types of software.  Applications software is 
  349.           written to solve a specific user problem.  Examples are 
  350.           software that prints payroll checks or displays 
  351.           inventory stock information.  This software is either 
  352.           written by the user himself using a language like COBOL, 
  353.           BASIC, or FORTRAN or bought off the shelf as a complete 
  354.           package.  Software, manuals, technical support, etc.  
  355.           Such packaged software is generally written by an 
  356.           independent software company.
  357.  
  358.                              System's Software
  359.  
  360.           System software does not solve specific problems, but 
  361.           rather makes it easier for the user to use computer 
  362.           system.  It is generally developed by hardware or 
  363.           independent software companies.  Examples are operating 
  364.           systems such as DOS, compilers such as Ansi-Standard 
  365.           COBOL and interpreters such as IBM Basic, saved on 
  366.           diskette or on hard drive and before it can be used it 
  367.           must first be loaded into the computers memory.  This is 
  368.           done by typing in the proper command such as COBOL600 
  369.           followed by the enter key.
  370.  
  371.                                   Programs
  372.  
  373.           A set of instructions written together as a single unit 
  374.           defines both a beginning and an end is called a program.  
  375.           Thus a program is a specific piece of software, system 
  376.           software and application software.  They are more 
  377.           commonly known as systems programs and applications 
  378.           programs respectively.  In this manual the latter terms 
  379.           will be used.  Note that when a program is executing it 
  380.           is said to be running.  In other words the program 
  381.           executes is the same as the program is running or the 
  382.           program runs.  Computer people often say the job runs or 
  383.           the job is running.
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.   PAGE 2
  395.                               ANSI-COBOL 6.50
  396.                                 USERS MANUAL
  397.                               COPYWRITE  1990
  398.  
  399.  
  400.                                 Pseudo Code
  401.  
  402.           We will illustrate the concept of a program by using 
  403.           Pseudo Code, which is a mix of words that are valid in 
  404.           programs and other descriptive words that are not.  
  405.           While a program written in it cannot execute because of 
  406.           invalid words it's primary use is to make the program 
  407.           logic easy to understand on paper.  This is shown in 
  408.           figure 1.1.  Note the capitalized words are valid in 
  409.           COBOL programs.
  410.  
  411.                                  FIGURE 1.1
  412.       ______________________________________________________________
  413.      :                                                              :
  414.      : ACCEPT first operator-entered number into memory.            :
  415.      : ACCEPT second operator-entered number into memory.           :
  416.      : ADD first number TO, second number GIVING result-field.      :
  417.      : DISPLAY result-field.                                        :
  418.      :______________________________________________________________:
  419.  
  420.      Pseudo Code of a segment of a program code that adds 2 numbers and 
  421.      displays the sum.
  422.  
  423.                                 Applications
  424.  
  425.           An application, more commonly known as an application 
  426.           system to simple system, is a specific job or sequence 
  427.           of jobs that run or will be run on the computer.  For 
  428.           instance, a payroll system prints out paychecks, W2 
  429.           forms, etc.  An inventory system allows the operator to 
  430.           enter or verify stock information on a video display 
  431.           unit, etc.  In this user's manual we will use system for 
  432.           a specific application, thus payroll system instead of 
  433.           payroll application.
  434.  
  435.                           Developing Applications
  436.  
  437.           When a computer user needs an application he has a 
  438.           choice of either buying it off the shelf as a package 
  439.           "programs, manuals, tech support, etc." or developing 
  440.           the system himself.  If he decides on the latter he 
  441.           first has to determine his requirements in detail and 
  442.           design a system that impliments the application.  This 
  443.           is known as system design.  In large organizations this 
  444.           systems design is generally done by the systems analyst 
  445.           who consults the user on his requirements and then 
  446.           translate them into a series of specifications that can 
  447.           be given to the applications programmers.  They in turn 
  448.           translate these specifications into applications 
  449.           programs that can be run on the computer.
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.   PAGE 3
  460.                               ANSI-COBOL 6.50
  461.                                 USERS MANUAL
  462.                               COPYWRITE  1990
  463.  
  464.  
  465.  
  466.                     Chapter 3:  ANSI-COBOL Version 6.50
  467.  
  468.                                 Introduction
  469.  
  470.           COBOL "common business-oriented language" is a language 
  471.           developed specifically for the programming requirements 
  472.           of business applications.  Among programming languages 
  473.           it is the most extensive file processing features, 
  474.           allowing the programmer to manipulate a large amount of 
  475.           data in various formats, for many types of devices.  It 
  476.           also has the extensive report formatting features 
  477.           allowing the programmer, for instance, to easily print 
  478.           numbers with dollar signs, commas, negative signs, etc.  
  479.           COBOL was developed by the CONFERENCE ON DATA SYSTEMS 
  480.           LANGUAGES "CODASYL" COBOL committee which is made up of 
  481.           representatives of computer manufacturers and computer 
  482.           users.  However, current and future standards are into 
  483.           the ospices of the American National Standards Institute 
  484.           "ANSI".  Manufacturers and independent software 
  485.           programmers, myself included, can only use the name 
  486.           COBOL if the product agrees with the standard.  Ansi-
  487.           Standard COBOL Version 6.50 does!
  488.  
  489.                           General Characteristics
  490.  
  491.           COBOL is close to English Pros in style which allows a 
  492.           programmer to use easily understood and self-defining 
  493.           words like MULTIPLING , STOP, WORKING-STORAGE, etc.  
  494.           Instead of the short, hard to remember symbols required 
  495.           in many other languages. The Language is also free form 
  496.           allowing the programmer to write the code in any column 
  497.           he wants with certain limits which the potential of 
  498.           making the program easier to read and understand.
  499.  
  500.                           Ansi-Standard COBOL 6.50
  501.  
  502.           COBOL Version 6.50 conforms to the low-intermediate 
  503.           level of American National Standards.  X3.23-1974.  It 
  504.           provides 9 out of the 12 standard COBOL functional 
  505.           modules which are implimented in either Level I or Level 
  506.           II capabilities. 
  507.           The 3 modules not provided are the following:  
  508.           1) Communication, note this is currently being added.
  509.           2) Sort-merge, note this is currently being added.  
  510.           3) Report writer, note no plans at this time to add this 
  511.              module.
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.   PAGE 4
  525.                               ANSI-COBOL 6.50
  526.                                 USERS MANUAL
  527.                               COPYWRITE  1990
  528.  
  529.  
  530.                             Components of COBOL
  531.  
  532.           Although COBOL is close to the English Pros in style, it 
  533.           has it's own Syntax rules.  We can think of a COBOL 
  534.           program as a book, consisting of 4 parts each being a 
  535.           COBOL division.  Each division consists of 1 or more 
  536.           sections.  Each section corresponding to a chapter in a 
  537.           book.  Each section in turn consists of 1 or more 
  538.           paragraph which in turns consists of 1 or more 
  539.           sentences.  We will now define certain COBOL terms, but 
  540.           we will restrict our discussion to how they are used in 
  541.           the most common division, the PROCEDURE DIVISION, where 
  542.           the logic is stated.  Most definitions are however valid 
  543.           for other divisions, which are much easier to code than 
  544.           the PROCEDURE DIVISION.
  545.  
  546.                                  STATEMENTS
  547.  
  548.           A statement is a basic unit of the PROCEDURE DIVISION.  
  549.           It is a correct combination of words and symbols that 
  550.           specifies an action to be done, "ADD, MOVE, DIVIDE, 
  551.           ETC.", or a condition to be tested "IF".  Unless 
  552.           subordinated to another statement as for example in IF 
  553.           conditon it is best for program and readability to code 
  554.           them starting in column 12.  Figure 3.1 shows a segment 
  555.           of a program code with 6 statements.  The last statement 
  556.           is quite long and therefore coded in 2 lines.  Also for 
  557.           readability the continuation is indented from this.  
  558.           Your first exposure to typical COBOL program that the 
  559.           code is quite easy to understand.
  560.  
  561.  ______________________________________________________________________________
  562.  
  563.  12345678901234567890123456789012345678901234567890123456789012345678901234567890
  564.  
  565.             IF W010-MONTH-SALES GREATER THAN 499.99
  566.                MOVE "*"                     TO W040-DETAIL-EXCEPTIONAL-SALES
  567.             ELSE MOVE                       TO W040-DETAIL-EXCEPTIONAL-SALES.
  568.                MOVE W010-MONTH-SALES        TO W040-DETAIL-MONTH-SALES 
  569.                MOVE W010-ANNUAL-SALES       TO W040-DETAIL-ANNUAL-SALES 
  570.                WRITE SALES-PERFORMANCE-LINE FROM W040-SALES-DETAIL-LINE
  571.                      AFTER ADVANCING W040-PRINT-SKIP LINES.
  572.  
  573.  
  574.                                    EXAMPLE 3.1
  575.  _______________________________________________________________________________
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.   PAGE 5
  590.                               ANSI-COBOL 6.50
  591.                                 USERS MANUAL
  592.                               COPYWRITE  1990
  593.  
  594.  
  595.                                      Sentence
  596.  
  597.           A sentence is 1 or more statements that ends in a period 
  598.           and is followed by a space. Notice it is followed by a 
  599.           space.  The beginning of a sentence is always a 
  600.           statement that is not subordinated to another and should 
  601.           therefore start in column 12.  This concept of a 
  602.           sentence is very important and the programmer is advised 
  603.           to terminate a statement with a period when possible.  
  604.           This makes a statement independent of other statements 
  605.           and thus avoids potential problems as you will see later 
  606.           on in figure 3.2.  Figure 3.2 shows a segment of a 
  607.           program code with 4 sentences.  These are actually the 
  608.           same statements as figure 3.1, but it now has 4 
  609.           sentences from the 4 periods that end statements.  
  610.           Figure 3.1 only has 2 sentences.
  611.  
  612.  
  613.  ______________________________________________________________________________
  614.  
  615.  12345678901234567890123456789012345678901234567890123456789012345678901234567890
  616.  
  617.             IF W010-MONTH-CELLS GREATER THAN 499.99
  618.                MOVE "*"                  TO W040-DETAIL-EXCEPTIONAL-CELLS
  619.             ELSE MOVE                    TO W040-DETAIL-EXCEPTIONAL-CELLS. 
  620.             MOVE W010-MONTH-CELLS        TO W040-DETAIL-MONTH-CELLS. 
  621.             MOVE W010-ANNUAL-CELLS       TO W040-DETAIL-ANNUAL-CELLS.
  622.             WRITE CELLS-PERFORMANCE-LINE FROM W040-CELLS-DETAIL-LINE
  623.                   AFTER ADVANCING W040-PRINT-SKIP LINES.
  624.  
  625.  
  626.                                    EXAMPLE 3.2
  627.  _______________________________________________________________________________
  628.  
  629.                                    Clause
  630.  
  631.           A clause is part of complex statement and is only 
  632.           meaningful in specific statements.  Examples are 
  633.           "GIVING" "ROUNDED".  Clauses of an arithmetic statement. 
  634.           It maybe mandatory or optional depending on the 
  635.           statement.  Figure 3.3 shows use of 2 clauses and a 
  636.           MULTIPLY statement.
  637.  
  638.  
  639.  ______________________________________________________________________________
  640.  
  641.  12345678901234567890123456789012345678901234567890123456789012345678901234567890
  642.  
  643.             MULTIPLY W010-NUMBER-OF-HOURS BY W030-HOURLY-RATE
  644.                                           GIVING W020-WEEK-GROSS-PAY
  645.                                           ROUNDED.
  646.  
  647.  
  648.  
  649.                                    EXAMPLE 3.3
  650.  ______________________________________________________________________________
  651.  
  652.  
  653.  
  654.   PAGE 6
  655.                               ANSI-COBOL 6.50
  656.                                 USERS MANUAL
  657.                               COPYWRITE  1990
  658.  
  659.  
  660.                                     Paragraph
  661.  
  662.           A paragraph is 1 or more sentences that together perform 
  663.           a certain function maybe grouped in 1 paragraph by 
  664.           putting them under a paragraph header consisting of a 
  665.           paragraph name and a period.  For program readability, 
  666.           this paragraph header is best coded starting in column 
  667.           8.  The concept of a paragraph is very important since 
  668.           we will learn later on that it is best to execute the 
  669.           logic by controlling paragraphs through the verb 
  670.           PERFORM.  Therefore adjacent paragraphs should be 
  671.           seperated from each other by a line seperated.  "* in 
  672.           column 7".  Figure 3.2 does 1 function for instance 
  673.           print a detail line from data coming from a record.  It 
  674.           can then be coded as a paragraph putting a paragraph 
  675.           header before it.  Figure 3.4 is the result.
  676.  
  677.  
  678.  ______________________________________________________________________________
  679.  
  680.  12345678901234567890123456789012345678901234567890123456789012345678901234567890
  681.  
  682.        *    
  683.        *      
  684.         C060-PRINT-CELLS-REPORT-DETAIL.
  685.             MULTIPLY W010-NUMBER-OF-HOURS BY W030-HOURLY-RATE
  686.                                           GIVING W020-WEEK-GROSS-PAY
  687.                                           ROUNDED.
  688.  
  689.  
  690.                                    EXAMPLE 3.4
  691.  ______________________________________________________________________________
  692.  
  693.                                      Section
  694.  
  695.           1 or more related paragraphs maybe grouped together in 
  696.           one section by putting them under a section header which 
  697.           consists of a section name followed by the literal 
  698.           "SECTION" followed by period.  The section ends 
  699.           immediately before the next section header or at the end 
  700.           of the program.  Except for "DECLARATIVES SECTION" which 
  701.           also ends with the "END DECLARATIVES" statement.  The 
  702.           concept of a section is very important in the PROCEDURES 
  703.           DIVISION where as we will later discuss related 
  704.           paragraphs are best grouped into sections.  If we put 
  705.           the paragraph into figure 3.4 under a section header we 
  706.           get one section with 1 subordinate paragraph naturally 
  707.           we can put as many paragraphs as you want in the same 
  708.           section, but for readability of the program, the section 
  709.           header is also coded started in column 8.  Also we code 
  710.           a line seperater which is an * in column 7 between the 
  711.           section header and the paragraph header.  The result is 
  712.           in figure 3.5. 
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.   PAGE 7
  720.                               ANSI-COBOL 6.50
  721.                                 USERS MANUAL
  722.                               COPYWRITE  1990
  723.  
  724.  
  725.  ______________________________________________________________________________
  726.  
  727.  12345678901234567890123456789012345678901234567890123456789012345678901234567890
  728.        *              
  729.        *            
  730.         C000-PRINT-CELLS-REPORT SECTION.
  731.        *      
  732.         C060-PRINT-CELLS-REPORT-DETAIL.
  733.             MULTIPLY W010-NUMBER-OF-HOURS BY W030-HOURLY-RATE
  734.                                           GIVING W020-WEEK-GROSS-PAY
  735.                                           ROUNDED.
  736.  
  737.                                    EXAMPLE 3.5
  738.  ______________________________________________________________________________
  739.  
  740.  
  741.                                 STATEMENT FORMAT
  742.  
  743.           Each statement in the language has a general format and 
  744.           the programmer has to use the prescribed rules for each 
  745.           statement regarding spelling "reserved words must be 
  746.           spelled correctly".  Providing the names of data to be 
  747.           used and the order of the clauses in the statement.  To 
  748.           a large extent the rules of format follow common sense.  
  749.           For instance, program logic is coded with statements 
  750.           which start with a verb like "ADD, MOVE, MULTIPLY, ETC." 
  751.           followed by the operend used by the verbs followed if 
  752.           any by optional clauses.  For instances, to multiply 2 
  753.           numbers we code:
  754.  
  755.           MULTIPLY first-operend BY second-operend 
  756.                                  GIVING product-field 
  757.                                  ROUNDED 
  758.                                  ON SIZE ERROR, 
  759.                    imperative statements.  
  760.  
  761.           The 2 operends are multiplied and the product is placed 
  762.           in the product field if the GIVING option is specified.  
  763.           It maybe rounded off and it may not fit into high order 
  764.           left most part of the product field.  The imperative 
  765.           statements will be executed instead of the next 
  766.           following statement. Note that the GIVING, ROUNDED, and 
  767.           ON SIZE ERROR are optional clauses. Before we go any 
  768.           further, examine fig. 3.6.
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.   PAGE 8
  785.                               ANSI-COBOL 6.50
  786.                                 USERS MANUAL
  787.                               COPYWRITE  1990
  788.  
  789.  
  790.  ______________________________________________________________________________
  791.  12345678901234567890123456789012345678901234567890123456789012345678901234567890
  792.  
  793.         IDENTIFICATION DIVISION.
  794.        *
  795.         PROGRAM-ID.  EXMP36.
  796.        *
  797.        ***********************************************************
  798.        *       DATE-WRITTEN.  08/13/90.                          *
  799.        ***********************************************************
  800.        *
  801.         ENVIRONMENT DIVISION.
  802.        *
  803.         DATA DIVISION.
  804.        *
  805.         WORKING-STORAGE SECTION.
  806.             01  HELLO-WORLD              PIC X(20)
  807.                                          VALUE "Hello world".
  808.        *
  809.         PROCEDURE DIVISION.
  810.        *
  811.             DISPLAY HELLO-WORLD.
  812.             STOP RUN.
  813.  
  814.                                    EXAMPLE 3.6
  815.  ______________________________________________________________________________
  816.  
  817.  
  818.           The program logic is in the PROCEDURE DIVISION.  At the 
  819.           moment the reader should concern himself only with the 
  820.           last 2 lines.  The DISPLAY shows HELLO-WORLD from a 
  821.           COBOL program on the video display and the STOP RUN 
  822.           which as a name suggests stops execution of the program.  
  823.           Thus you now know 2 verbs, DISPLAY and STOP in COBOL.  
  824.           As you see they are self defining.
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.   PAGE 9
  850.                               ANSI-COBOL 6.50
  851.                                 USERS MANUAL
  852.                               COPYWRITE  1990
  853.  
  854.  
  855.                                COBOL Character Set
  856.  
  857.           With the exception of non-numeric literals and comments 
  858.           where the entire COBOLs character set maybe used only 52 
  859.           characters are allowed in a COBOL program.  They are :
  860.           1) letters A-Z and a-z.  
  861.           2) spaces or blanks.  
  862.           3) digits 0-9.  
  863.           4) the following special characters:  
  864.              +, -,*, =, >, <, $, , , ;, ., ", (, ), ', -.  
  865.  
  866.           If the computer detects any other characters, if not 
  867.           found under these exceptions noted, an error will be 
  868.           detected.
  869.  
  870.                            Characters Used in Words
  871.  
  872.           A word is composed of a combination of not more than 30 
  873.           characters.  It cannot begin or end with a hyphen and 
  874.           the valid characters are letters A-Z, digits 0-9, and 
  875.           hyphen.
  876.  
  877.                          Characters Used for Punctuation
  878.  
  879.           The following characters are used for punctuation: (, ), 
  880.           ,, ;,.
  881.  
  882.                               Rules for Punctuation
  883.  
  884.           Punctuation characters are used according to the 
  885.           following rules.
  886.  
  887.           1) When used as punctuation a period, semicolon, or 
  888.              comma must be followed by a space.
  889.           2) At least one space must appear between 2 successive 
  890.              words in  literals.
  891.           3) Relation characters (=, >, <) must always be 
  892.              proceeded by a space and followed by another space.
  893.           4) You may optionally use a comma as a seperater between 
  894.              successive oprands of a statement or between 2 
  895.              subscripts.
  896.           5) You may optionally use a semicolon or comma to 
  897.              seperate a series of statements or clauses.
  898.           6) You may use an apostrophe in place of a quotation 
  899.              mark when delementing non-numeric literals.
  900.  
  901.                           Characters Used in Conditions
  902.  
  903.           The following characters are used in conditions:
  904.           1) The greater than sign.
  905.           2) The less than sign.
  906.           3) The equal sign.
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.   PAGE 10
  915.                               ANSI-COBOL 6.50
  916.                                 USERS MANUAL
  917.                               COPYWRITE  1990
  918.  
  919.  
  920.                           Characters Used in Arithmetic
  921.  
  922.           Arithmetic expressions are used in the COMPUTE statement 
  923.           and they make use of the arithmetic operators.  
  924.           Evaluation is done in the following order:
  925.           1) Expressions within the parenthesis are evaluated 
  926.              first from the inner most pair to the outer most 
  927.              pair.
  928.           2) Within a pair of parenthesis or if there is none the 
  929.              order is according to the following operators: 
  930.              a) Unary "+ or - in the variable or number".  
  931.              b) Expodentation "**".   
  932.              c) Mulitiplication and division.  
  933.              d) Addition and subtraction.
  934.           3) For operators with the same order mulitplication and 
  935.              division or addition and subtraction evaluation is 
  936.              left to right.
  937.  
  938.                          Characters Used for Print Editing
  939.  
  940.           Editing characters are replaced characters in a data 
  941.           item to be printed.  They are used to optimize a 
  942.           presentation of the data item in a report.  They are: 
  943.            1) 9  numeric character. 
  944.            2) V  decimal point. 
  945.            3) ,  comma. 
  946.            4) Z  zero suppress. 
  947.            5) *  check protection.
  948.            6) $  currency sign. 
  949.            7) +  plus.
  950.            8) -  minus.
  951.            9) B  blank. 
  952.           10) 0  zero.
  953.           11) /  slash.
  954.           12) CR credit.
  955.           13) DR debit.
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.   PAGE 11
  980.                               ANSI-COBOL 6.50
  981.                                 USERS MANUAL
  982.                               COPYWRITE  1990
  983.  
  984.  
  985.                                  Types of Words
  986.  
  987.           Reserved words are those that have a specific meaning in 
  988.           COBOL and they must be spelled correctly and used in 
  989.           only the way that they were intended.  Examples are 
  990.           "ADVANCING, MOVE, PAGE" etc.  Program refined words, 
  991.           non-reserved words, are coded by the programmer for the 
  992.           following uses:  
  993.  
  994.           1) data names, 
  995.           2) files names, 
  996.           3) condition names,
  997.           4) procedure names.
  998.  
  999.                                Reserved Words
  1000.  
  1001.           Reserved words have specific meanings in COBOL and 
  1002.           therefore use only according to proper Syntax rules.  
  1003.           These words must be spelled correctly. However, reserved 
  1004.           words enclosed in quotation marks become non-numerical 
  1005.           literals and are not reserved words.  There are 3 types 
  1006.           of reserved words.
  1007.  
  1008.           1) Key word - key word is a word which is required in 
  1009.              the statement. There are 3 types: 
  1010.              a) verbs, such as ADD, MOVE, READ. 
  1011.              b) required words that appear in certain statements, 
  1012.                 such as TO and the ADD statement. 
  1013.              c) words that have specific functional meaning, such 
  1014.                 as PAGE, ZERO, POSITIVE.
  1015.           2) Optional words - an optional word may or may not be 
  1016.              included in a statement.  Examples are GIVING, 
  1017.              ROUNDED, and ON SIZE ERROR, which are clauses in 
  1018.              arithmetic statements.
  1019.           3) Connectives - connective is a word that joins or 
  1020.              connects 2 adjacent words.  There are 2 types: 
  1021.              a) qualifier connective.  This is "OF" which 
  1022.                 associates a data name, condition name or 
  1023.                 paragraph name with it's qualifier.  
  1024.              b) logical connectives.  These are words used in 
  1025.           compound combinations.  They are AND and OR.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.   PAGE 12
  1045.                               ANSI-COBOL 6.50
  1046.                                 USERS MANUAL
  1047.                               COPYWRITE  1990
  1048.  
  1049.  
  1050.  
  1051.                                RESERVED WORDS LIST
  1052.                                ===================
  1053.  
  1054.  
  1055.  
  1056.  ACCEPT               BLANK              CONFIGURATION   DYNAMIC      
  1057.  ACCESS               BLINK              CONTAINS        ELSE         
  1058.  ADD                  BLOCK              COPY            EMPTY-CHECK  
  1059.  ADVANCING            BOTTOM             COUNT           END          
  1060.  AFTER                BY                 CURRENCY        END-OF-PAGE  
  1061.  ALL                  CALL               DATA            ENVIRONMENT  
  1062.  ALPHABETIC           CHAIN              DATE            EOP          
  1063.  ALTER                CHAINING           DATE-COMPILED   EQUAL        
  1064.  AND                  CHARACTER          DATE-WRITTEN    ERASE        
  1065.  ARE                  CHARACTERS         DAY             ERROR        
  1066.  AREA                 CLOSE              DEBUGGING       ESCAPE       
  1067.  AREAS                CODE-SET           DECIMAL-POINT   EVERY        
  1068.  ASCENDING            COL                DECLARATIVES    EXCEPTION    
  1069.  ASCII                COLLATING          DELETE          EXHIBIT      
  1070.  ASSIGN               COLUMN             DELIMITED       EXIT         
  1071.  AT                   COMMA              DELIMITER       EXTEND       
  1072.  AUTHOR               COMP               DEPENDING       FD           
  1073.  AUTO                 COMP-0             DESCENDING      FILE         
  1074.  AUTO-SKIP            COMP-3             DISK            FILE-CONTROL
  1075.  BACKGROUND-COLOR     COMPUTATIONAL      DISPLAY         FILE-ID      
  1076.  BEEP                 COMPUTATIONAL-0    DIVIDE          FILLER       
  1077.  BEFORE               COMPUTATIONAL-3    DIVISION        FIRST        
  1078.  BELL                 COMPUTE            DOWN            FOOTING  
  1079.  
  1080.  FOR                  IS                 NAMED           POINTER        
  1081.  FOREGROUND-COLOR     JUST               NATIVE          POSITIVE       
  1082.  FROM                 JUSTIFIED          NEGATIVE        PRINTER        
  1083.  FULL                 KEY                NEXT            PROCEDURE      
  1084.  GIVING               LABEL              NO              PROCEDURES     
  1085.  GO                   LEADING            NO-ECHO         PROCEED        
  1086.  GREATER              LEFT               NOT             PROGRAM        
  1087.  HIGH-VALUE           LEFT-JUSTIFY       NUMBER          PROGRAM-ID     
  1088.  HIGH-VALUES          LENGTH-CHECK       NUMERIC         PROMPT         
  1089.  HIGHLIGHT            LESS               OCCURS          Q-RW-Q         
  1090.  I-O                  LIN                OFF             QUOTE          
  1091.  I-O-CONTROL          LINAGE             OMITTED         QUOTES         
  1092.  IDENTIFICATION       LINAGE-COUNTER     ON              RANDOM         
  1093.  IF                   LINE               OPEN            READ           
  1094.  INDEX                LINES              OR              READY          
  1095.  INDEXED              LINKAGE            ORGANIZATION    RECORD         
  1096.  INITIAL              LOCK               OUTPUT          RECORDS        
  1097.  INPUT                LOW-VALUE          OVERFLOW        REDEFINES      
  1098.  INPUT-OUTPUT         LOW-VALUES         PAGE            RELATIVE       
  1099.  INSPECT              MERGE              PERFORM         RELEASE        
  1100.  INSTALLATION         MODE               PIC             REPLACING      
  1101.  INTO                 MOVE               PICTURE         REQUIRED       
  1102.  INVALID              MULTIPLY           PLUS            RERUN          
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.   PAGE 13
  1110.                               ANSI-COBOL 6.50
  1111.                                 USERS MANUAL
  1112.                               COPYWRITE  1990
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  RESERVE              SIGN               TO              ZEROES 
  1118.  RESET                SIZE               TOP             ZEROS  
  1119.  RESTART-FILE         SORT               TRACE          
  1120.  RETURN               SORT-MERGED        TRAILING       
  1121.  REVERSE-VIDEO        SOURCE-COMPUTER    TRAILING-SIGN  
  1122.  REWRITE              SPACE              UNDERLINE      
  1123.  RIGHT                SPACE-FILL         UNSTRING       
  1124.  RIGHT-JUSTIFY        SPACES             UNTIL          
  1125.  ROUNDED              SPECIAL-NAMES      UP             
  1126.  RUN                  STANDARD           UPDATE         
  1127.  SAME                 STANDARD-1         UPON           
  1128.  SCREEN               START              USAGE          
  1129.  SD                   STATUS             USE            
  1130.  SEARCH               STOP               USING          
  1131.  SECTION              STRING             VALUE          
  1132.  SECURE               SUBTRACT           VALUES         
  1133.  SECURITY             SYNC               VARYING        
  1134.  SELECT               SYNCHRONIZED       WHEN           
  1135.  SENTENCE             TALLYING           WITH           
  1136.  SEPARATE             THAN               WORKING-STORAGE
  1137.  SEQUENCE             THROUGH            WRITE          
  1138.  SEQUENTIAL           THRU               ZERO           
  1139.  SET                  TIME               ZERO-FILL      
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.   PAGE 14
  1175.                               ANSI-COBOL 6.50
  1176.                                 USERS MANUAL
  1177.                               COPYWRITE  1990
  1178.  
  1179.  
  1180.           Non-reserved words are coded according to these rules: 
  1181.  
  1182.           1) Only the 26 letters upper and lower case, digits 0-9, 
  1183.              and hyphen can be used.  
  1184.           2) All words must begin with a letter except procedure 
  1185.              names which may consist entirely of digits.
  1186.           3) A word may not begin or end with a hyphen.  
  1187.           4) A word can have from 1-30 characters.  
  1188.           5) A data name or condition name does not have to be 
  1189.              unique as long as they may be qualified with unique 
  1190.              names of a higher level.
  1191.           6) A word ends with a space or a punctuation mark.
  1192.  
  1193.                                    Data Format
  1194.  
  1195.           Data used in programs maybe represented in 4 ways.  They 
  1196.           are:
  1197.           1) Display.  The data consists of a combination without 
  1198.              the numeric or special characters which each 
  1199.              character using 1 byte of memory.  If the data 
  1200.              contains only numbers it maybe used in arithmetic 
  1201.              operation.  The "USAGE IS DISPLAY" clause maybe 
  1202.              specified or omitted.  Display is a default for the 
  1203.              usage clause.
  1204.           2) Packed decimal.  The data consists of digits with 2 
  1205.              digits packed together in 1 byte except the right 
  1206.              most digit which is packed with the sign.  This field 
  1207.              is used for arithmetic or numeric move operations.  
  1208.              The "USAGE IS COMP-3 | COMPUTATIONAL-3".  Clause must 
  1209.              be specified.
  1210.           3) Binary item.  The data consists of binary numbers.  
  1211.              The "USAGE IS COMP-0 | COMPUTATIONAL-0".  Clause must 
  1212.              be specified.
  1213.           4) Index.  The data item which is defined with the usage 
  1214.              is index clause but without a picture clause is used 
  1215.              as an index data item in a relational condition as a 
  1216.              varying item and performing varying statement or in 
  1217.              place of a subscript.
  1218.  
  1219.                               Elementary Data Items
  1220.  
  1221.           A data item that is not further subdivided into still 
  1222.           other items within a program is an elementary data item.  
  1223.           It is therefore the lowest level of data item in a 
  1224.           group.  Examples are employee numbers, gross salary, 
  1225.           etc.  The maximum level of elementary data item is 4,095 
  1226.           bytes.
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.   PAGE 15
  1240.                               ANSI-COBOL 6.50
  1241.                                 USERS MANUAL
  1242.                               COPYWRITE  1990
  1243.  
  1244.  
  1245.                                  Group Data Item
  1246.  
  1247.           A data item that is further subdivided into still other 
  1248.           data items is a group item.  For instance, the group 
  1249.           item date of birth may consist of 3 elementary data 
  1250.           items - month, day, year.  The elementary data item or 
  1251.           the group item maybe used in statements.  The maximum 
  1252.           length of a group data item is 4,095 bytes.  The 
  1253.           exception are at leve-01 group items records which are 
  1254.           not checked for length so that long tables can be used 
  1255.           in programs.  However, statements and procedure division 
  1256.           cannot use data items longer than 4,095 byte limit.  
  1257.           There is no problem with tables because statements are 
  1258.           always referred to individual elements in the table, not 
  1259.           the whole table.
  1260.  
  1261.                                      Records
  1262.  
  1263.           Elementary and group data items that belong to a single 
  1264.           entity maybe grouped together under a single 01 level 
  1265.           record.  For instance, all data items employee number, 
  1266.           gross salary, date hired, etc. belong to one employee 
  1267.           may be grouped into a single employee record.
  1268.  
  1269.                                       Files
  1270.  
  1271.           A group of records maybe written or grouped together in 
  1272.           a single file.  For instance, all employee records for 
  1273.           all employees in a company belong to the employee master 
  1274.           file.
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.   PAGE 16
  1305.                               ANSI-COBOL 6.50
  1306.                                 USERS MANUAL
  1307.                               COPYWRITE  1990
  1308.  
  1309.  
  1310.                               The COBOL Coding Form
  1311.  
  1312.           In good ole days when cards were used to enter programs 
  1313.           programmers used to write COBOL source programs on these 
  1314.           coding forms before punching them or having them punched 
  1315.           by keypunch operators.  Now a days most programmers 
  1316.           enter their code directly on the screen via text editor 
  1317.           thus negating the need for coding forms.  HOWEVER!!! You 
  1318.           still must adhere to the coding form rules and they are:
  1319.  
  1320.  
  1321.           1) Columns 1-6 were originally used to enter line 
  1322.              numbers.  The reason if some clot was to drop the 
  1323.              cards they can easily be sorted again.  Today you may 
  1324.              or may not enter the line numbers, it does not make 
  1325.              any difference.
  1326.           2) Column 7 is used 4 ways.  They are: 
  1327.              a) if an asterisk is entered the line is considered a 
  1328.                 comment.  
  1329.              b) if a slash is entered it will cause a page eject 
  1330.                 in the program listing.  
  1331.              c) if non-numerical literal is to be continued on the 
  1332.                 next line a hyphen must be entered.  
  1333.              d) if the letter D is entered than the line is 
  1334.                 compiled as part of the program IF AND ONLY IF the 
  1335.                 statement camps with debugging mode.  Clauses 
  1336.                 included in the SOURCE-COMPUTER paragraph of the 
  1337.                 CONFIGURATION SECTION in the ENVIRONMENT DIVISION.
  1338.           3) Columns 8-11 define area A a statement that starts a 
  1339.              group of related statements must start anywhere 
  1340.              within this area.  Examples are division headers, 
  1341.              section headers, 01 level group items, paragraph 
  1342.              names, etc.  However, for the sake of readability you 
  1343.              should always start them in Column A.
  1344.           4) Columns 12-77 define area B all other statements that 
  1345.              cannot start in area A must start here.
  1346.           5) Columns 78-80 are not processed by this compiler.
  1347.           6) For the PC, characters may be entered in either 
  1348.              lowercase or uppercase.
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.   PAGE 17
  1370.                               ANSI-COBOL 6.50
  1371.                                 USERS MANUAL
  1372.                               COPYWRITE  1990
  1373.  
  1374.  
  1375.                              BASIC COBOL STATEMENTS
  1376.                                  INTRODUCTION
  1377.  
  1378.           Before we go into the details of coding, let us take a 
  1379.           few more simpilified program examples that will 
  1380.           familiarize us with many of the concepts that we will be 
  1381.           using later on.  These concepts will be very useful when 
  1382.           we attempt to write larger programs.  Let me remind you 
  1383.           that you have already seen the two verbs DISPLAY and 
  1384.           STOP.
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402.  
  1403.  
  1404.  
  1405.  
  1406.  
  1407.  
  1408.  
  1409.  
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.   PAGE 18
  1435.                               ANSI-COBOL 6.50
  1436.                                 USERS MANUAL
  1437.                               COPYWRITE  1990
  1438.  
  1439.  
  1440.                         ACCEPT statement (format 2)
  1441.  
  1442.           The ACCEPT verb may be used to allow the operator to 
  1443.           enter data on the console display in its normal 
  1444.           scrolling mode.  This version (format 2) is generally 
  1445.           used if there is no need to have data entered on a 
  1446.           formatted screen (formatted screens are needed if a lot 
  1447.           of data is entered on the same screen).  The program is 
  1448.           shown in fig. 4.1.  Look at line 34 in the PROCEDURE 
  1449.           DIVISION which shows that the program accepts data from 
  1450.           the operator.  The data then goes into field W005-
  1451.           MESSAGE-FIELD, which line 28 shows can accommodate as 
  1452.           many as thirty-two characters.  The same data is then 
  1453.           displayed back on the video display unit at line 35.  
  1454.           Note that each complete statement ends with a period, 
  1455.           making it a sentence.
  1456.                             PROGRAM LISTING 4.01
  1457.                             --------------------
  1458.  
  1459.  
  1460.     PROG401 COB                                 12:00:14    02-Sep-90    PAGE   1
  1461.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  1462.  
  1463.     1         IDENTIFICATION DIVISION.
  1464.     2        *
  1465.     3         PROGRAM-ID. PROG401.
  1466.     4        *
  1467.     5        ***************************************************
  1468.     6        *                                                 *
  1469.     7        * 1. DATE-WRITTEN. 08/01/90.                      *
  1470.     8        *                                                 *
  1471.     9        * 2. THIS PROGRAM DISPLAYS ON THE CONSOLE DISPLAY *
  1472.    10        *    A MESSAGE ENTERED BY THE OPERATOR.           *
  1473.    11        *                                                 *
  1474.    12        ***************************************************
  1475.    13        *
  1476.    14        *
  1477.    15         ENVIRONMENT DIVISION.
  1478.    16        *
  1479.    17        *
  1480.    18         DATA DIVISION.
  1481.    19        *
  1482.    20        *
  1483.    21        ****************************************************
  1484.    22        *                                                  *
  1485.    23         WORKING-STORAGE SECTION.
  1486.    24        *                                                  *
  1487.    25        ****************************************************
  1488.    26        *
  1489.    27        *
  1490.    28         01  W005-MESSAGE-FIELD             PIC X(32).
  1491.    29        *
  1492.    30        *
  1493.    31         PROCEDURE DIVISION.
  1494.    32        *
  1495.    33         DISPLAY-ACCEPTED-MESSAGE.
  1496.  
  1497.  
  1498.  
  1499.   PAGE 19
  1500.                               ANSI-COBOL 6.50
  1501.                                 USERS MANUAL
  1502.                               COPYWRITE  1990
  1503.  
  1504.  
  1505.    34             ACCEPT W005-MESSAGE-FIELD.
  1506.    35             DISPLAY W005-MESSAGE-FIELD.
  1507.    36             STOP RUN.
  1508.           --------------------------------------------------------
  1509.  
  1510.  
  1511.                        The PRINTER DISPLAY STATEMENT
  1512.  
  1513.           We have seen that the DISPLAY verb can display 
  1514.           information on the video display unit.  Actually this 
  1515.           verb is very powerful and can also be used to display 
  1516.           information on the printer.  Note that this is useful 
  1517.           for displaying a small amount of information only and 
  1518.           should not replace the technique of using the printer 
  1519.           as a afile which presents in a nice format a very large 
  1520.           amount of information.  also, this feature should not 
  1521.           be intersperced with the printing of reports since it 
  1522.           will get mixed with the later.  The program is shown in 
  1523.           fig.4.2.  Note lines 17 to 21.  These specify that the 
  1524.           printer will be used for displayed information.  Lines 
  1525.           42 to 44 are similar to lines 34 to 36 of fig.4.1 
  1526.           execpt that the DISPLAY statement now includes the 
  1527.           operands "UPON PRINTER-DISPLAY".  This ties up with 
  1528.           statement 21 and the information entered by the 
  1529.           operator on the console display is printed out at line 
  1530.           43.  The result is fig.4.3.  Note that the operator 
  1531.           entered "THIS MESSAGE IS OPERATOR ENTERED".
  1532.  
  1533.  
  1534.                             PROGRAM LISTING 4.2
  1535.                             -------------------
  1536.  
  1537.     PROG402 COB                                 12:18:22    02-Sep-90    PAGE   1
  1538.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  1539.  
  1540.     1         IDENTIFICATION DIVISION.
  1541.     2        *
  1542.     3         PROGRAM-ID. PROG402.
  1543.     4        *
  1544.     5        ***************************************************
  1545.     6        *                                                 *
  1546.     7        * 1. DATE-WRITTEN. 08/01/90.                      *
  1547.     8        *                                                 *
  1548.     9        * 2. THIS PROGRAM DISPLAYS ON THE PRINTER         *
  1549.    10        *    A MESSAGE ENTERED BY THE OPERATOR.           *
  1550.    11        *                                                 *
  1551.    12        ***************************************************
  1552.    13        *
  1553.    14        *
  1554.    15         ENVIRONMENT DIVISION.
  1555.    16        *
  1556.    17         CONFIGURATION SECTION.
  1557.    18        *
  1558.    19         SPECIAL-NAMES.
  1559.    20        *
  1560.    21             PRINTER IS PRINTER-DISPLAY.
  1561.  
  1562.  
  1563.  
  1564.   PAGE 20
  1565.                               ANSI-COBOL 6.50
  1566.                                 USERS MANUAL
  1567.                               COPYWRITE  1990
  1568.  
  1569.  
  1570.    22        *
  1571.    23        *
  1572.    24         DATA DIVISION.
  1573.    25        *
  1574.    26        *
  1575.    27        ****************************************************
  1576.    28        *                                                  *
  1577.    29         WORKING-STORAGE SECTION.
  1578.    30        *                                                  *
  1579.    31        ****************************************************
  1580.    32        *
  1581.    33        *
  1582.    34         01  W005-MESSAGE-FIELD             PIC X(32).
  1583.    35        *
  1584.    36        *
  1585.    37         PROCEDURE DIVISION.
  1586.    38        *
  1587.    39         DISPLAY-ACCEPTED-MESSAGE.
  1588.    40             DISPLAY "PROGRAM PROG402:  PRINT DISPLAY OUTPUT:"
  1589.    41                                        UPON PRINTER-DISPLAY.
  1590.    42             ACCEPT W005-MESSAGE-FIELD.
  1591.    43             DISPLAY W005-MESSAGE-FIELD UPON PRINTER-DISPLAY.
  1592.    44             STOP RUN.
  1593.  
  1594.           --------------------------------------------------------
  1595.                                 EXAMPLE 4.3
  1596.  
  1597.           PROGRAM PROG402:  PRINT DISPLAY OUTPUT:
  1598.           THIS MESSAGE IS OPERATOR ENTERED
  1599.           --------------------------------------------------------
  1600.  
  1601.  
  1602.                              THE MOVE STATEMENT
  1603.  
  1604.           The MOVE verb moves data to a data field.  The data may 
  1605.           be a literal specified in the statement or another data 
  1606.           field.  The program is shown in fig. 4.4.  The reader 
  1607.           should look at lines 38 and 40.  These are the fields 
  1608.           involved in the MOVE statements in lines 49 and 50.  The 
  1609.           operator will enter the data into the field "W005-
  1610.           ACCEPT-MESSAGE-FIELD" and this is moved to the field 
  1611.           "W005-DISPLAY-MESSAGE-FIELD".  The rest are the same as 
  1612.           in PROG402.  The result is shown in fig.4.5.
  1613.  
  1614.  
  1615.                             PROGRAM LISTING 4.4
  1616.                             -------------------
  1617.  
  1618.   PROG404 COB                                 12:34:20    02-Sep-90    PAGE   1
  1619.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  1620.  
  1621.     1         IDENTIFICATION DIVISION.
  1622.     2        *
  1623.     3         PROGRAM-ID. PROG404.
  1624.     4        *
  1625.     5        ***************************************************
  1626.  
  1627.  
  1628.  
  1629.   PAGE 21
  1630.                               ANSI-COBOL 6.50
  1631.                                 USERS MANUAL
  1632.                               COPYWRITE  1990
  1633.  
  1634.  
  1635.     6        *                                                 *
  1636.     7        * 1. DATE-WRITTEN. 08/01/90.                      *
  1637.     8        *                                                 *
  1638.     9        * 2. THIS PROGRAM DISPLAYS ON THE PRINTER         *
  1639.    10        *    A MESSAGE ENTERED BY THE OPERATOR.           *
  1640.    11        *                                                 *
  1641.    12        * 3. THE MESSAGE IS INITIALLY ENTERED INTO ONE    *
  1642.    13        *    WHICH IS THEN MOVED TO ANOTHER FIELD BEFORE  *
  1643.    14        *    BEING PRINTED ON THE PRINTER.                *
  1644.    15        *                                                 *
  1645.    16        ***************************************************
  1646.    17        *
  1647.    18        *
  1648.    19         ENVIRONMENT DIVISION.
  1649.    20        *
  1650.    21         CONFIGURATION SECTION.
  1651.    22        *
  1652.    23         SPECIAL-NAMES.
  1653.    24        *
  1654.    25             PRINTER IS PRINTER-DISPLAY.
  1655.    26        *
  1656.    27        *
  1657.    28         DATA DIVISION.
  1658.    29        *
  1659.    30        *
  1660.    31        ****************************************************
  1661.    32        *                                                  *
  1662.    33         WORKING-STORAGE SECTION.
  1663.    34        *                                                  *
  1664.    35        ****************************************************
  1665.    36        *
  1666.    37        *
  1667.    38         01  W005-ACCEPT-MESSAGE-FIELD             PIC X(32).
  1668.    39        *
  1669.    40         01  W005-DISPLAY-MESSAGE-FIELD            PIC X(32).
  1670.    41        *
  1671.    42        *
  1672.    43         PROCEDURE DIVISION.
  1673.    44        *
  1674.    45         DISPLAY-ACCEPTED-MESSAGE.
  1675.    46             DISPLAY "PROGRAM PROG404:  PRINT DISPLAY OUTPUT:"
  1676.    47                                        UPON PRINTER-DISPLAY.
  1677.    48             ACCEPT W005-ACCEPT-MESSAGE-FIELD.
  1678.    49             MOVE   W005-ACCEPT-MESSAGE-FIELD
  1679.    50                                TO W005-DISPLAY-MESSAGE-FIELD.
  1680.    51             DISPLAY W005-DISPLAY-MESSAGE-FIELD
  1681.    52                                         UPON PRINTER-DISPLAY.
  1682.    53             STOP RUN.
  1683.  
  1684.           --------------------------------------------------------
  1685.                                 EXAMPLE 4.5
  1686.  
  1687.           PROGRAM PROG404: PRINT DISPLAY OUTPUT:
  1688.           THIS MESSAGE IS OPERATOR ENTERED
  1689.           --------------------------------------------------------
  1690.  
  1691.  
  1692.  
  1693.  
  1694.   PAGE 22
  1695.                               ANSI-COBOL 6.50
  1696.                                 USERS MANUAL
  1697.                               COPYWRITE  1990
  1698.  
  1699.  
  1700.                              THE ADD STATEMENT
  1701.  
  1702.           The ADD verb adds two numbers and as options rounds off 
  1703.           the sum, checks it for overflow, or places it into a 
  1704.           specific field.  Here, we will take up the most basic 
  1705.           version of the statement where we add two numbers 
  1706.           (contained in the two operands) and the sum is placed in 
  1707.           the second operand and thus replaces its original value. 
  1708.           The program is fig.4.6.  Lines 34 and 36 specify the 
  1709.           operands to be used and their respective values.  Line 
  1710.           42 does the ADD operation.  The result is fig.4.7.
  1711.  
  1712.  
  1713.                             PROGRAM LISTING 4.6
  1714.                             --------------------
  1715.  
  1716.    PROG406 COB                                 12:49:48    02-Sep-90    PAGE   1
  1717.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  1718.  
  1719.     1         IDENTIFICATION DIVISION.
  1720.     2        *
  1721.     3         PROGRAM-ID. PROG406.
  1722.     4        *
  1723.     5        ***************************************************
  1724.     6        *                                                 *
  1725.     7        * 1. DATE-WRITTEN. 08/01/90.                      *
  1726.     8        *                                                 *
  1727.     9        * 2. THIS PROGRAM DISPLAYS ON THE PRINTER         *
  1728.    10        *    A VALUE COMPUTED FROM AN ADD OPERATION.      *
  1729.    11        *                                                 *
  1730.    12        ***************************************************
  1731.    13        *
  1732.    14        *
  1733.    15         ENVIRONMENT DIVISION.
  1734.    16        *
  1735.    17         CONFIGURATION SECTION.
  1736.    18        *
  1737.    19         SPECIAL-NAMES.
  1738.    20        *
  1739.    21             PRINTER IS PRINTER-DISPLAY.
  1740.    22        *
  1741.    23        *
  1742.    24         DATA DIVISION.
  1743.    25        *
  1744.    26        *
  1745.    27        ****************************************************
  1746.    28        *                                                  *
  1747.    29         WORKING-STORAGE SECTION.
  1748.    30        *                                                  *
  1749.    31        ****************************************************
  1750.    32        *
  1751.    33        *
  1752.    34         01  W005-FIRST-OPERAND              PIC 9   VALUE 2.
  1753.    35        *
  1754.    36         01  W005-SECOND-OPERAND             PIC 99  VALUE 12.
  1755.    37        *
  1756.  
  1757.  
  1758.  
  1759.   PAGE 23
  1760.                               ANSI-COBOL 6.50
  1761.                                 USERS MANUAL
  1762.                               COPYWRITE  1990
  1763.  
  1764.  
  1765.    38        *
  1766.    39         PROCEDURE DIVISION.
  1767.    40        *
  1768.    41         PRINT-COMPUTED-VALUE.
  1769.    42             ADD W005-FIRST-OPERAND TO W005-SECOND-OPERAND.
  1770.    43             DISPLAY "PROGRAM PROG406: THE SUM OF 2 + 12 IS:"
  1771.    44                                         UPON PRINTER-DISPLAY.
  1772.    45             DISPLAY W005-SECOND-OPERAND UPON PRINTER-DISPLAY.
  1773.    46             STOP RUN.
  1774.           ---------------------------------------------------------
  1775.                                 EXAMPLE 4.7
  1776.  
  1777.           PROGRAM PROG406: THE SUM OF 2 + 12 IS:
  1778.           14
  1779.           ----------------------------------------------------------
  1780.  
  1781.                            THE SUBTRACT STATEMENT
  1782.  
  1783.           The SUBTRACT verb subtracts two numbers and as options 
  1784.           rounds off the result, checks it for overflow, or places 
  1785.           it into a specific field.  Here, we will take up the 
  1786.           most basic version of the statement where we subtract 
  1787.           two numbers (contained in the two operands ) and the 
  1788.           result is placed in the second operand ( the minuend) 
  1789.           and thus replaces the original value.  The program is 
  1790.           shown in fig.4.8.  Line 42 subtracts the two numbers, 
  1791.           which is then displayed on the printer. The result is 
  1792.           fig.4.9.
  1793.  
  1794.  
  1795.                               PROGRAM LIST 4.8
  1796.                               ----------------
  1797.  
  1798.  PROG408 COB                                 13:01:10    02-Sep-90    PAGE   1
  1799.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  1800.  
  1801.     1         IDENTIFICATION DIVISION.
  1802.     2        *
  1803.     3         PROGRAM-ID. PROG408.
  1804.     4        *
  1805.     5        ***************************************************
  1806.     6        *                                                 *
  1807.     7        * 1. DATE-WRITTEN. 08/01/90.                      *
  1808.     8        *                                                 *
  1809.     9        * 2. THIS PROGRAM DISPLAYS ON THE PRINTER         *
  1810.    10        *    A VALUE COMPUTED FROM A SUBTRACT OPERATION.  *
  1811.    11        *                                                 *
  1812.    12        ***************************************************
  1813.    13        *
  1814.    14        *
  1815.    15         ENVIRONMENT DIVISION.
  1816.    16        *
  1817.    17         CONFIGURATION SECTION.
  1818.    18        *
  1819.    19         SPECIAL-NAMES.
  1820.    20        *
  1821.  
  1822.  
  1823.  
  1824.   PAGE 24
  1825.                               ANSI-COBOL 6.50
  1826.                                 USERS MANUAL
  1827.                               COPYWRITE  1990
  1828.  
  1829.  
  1830.    21             PRINTER IS PRINTER-DISPLAY.
  1831.    22        *
  1832.    23        *
  1833.    24         DATA DIVISION.
  1834.    25        *
  1835.    26        *
  1836.    27        ****************************************************
  1837.    28        *                                                  *
  1838.    29         WORKING-STORAGE SECTION.
  1839.    30        *                                                  *
  1840.    31        ****************************************************
  1841.    32        *
  1842.    33        *
  1843.    34         01  W005-SUBTRAHEND                 PIC 9   VALUE 2.
  1844.    35        *
  1845.    36         01  W005-MINUEND                    PIC 99  VALUE 12.
  1846.    37        *
  1847.    38        *
  1848.    39         PROCEDURE DIVISION.
  1849.    40        *
  1850.    41         PRINT-COMPUTED-VALUE.
  1851.    42             SUBTRACT W005-SUBTRAHEND FROM  W005-MINUEND.
  1852.    43             DISPLAY "PROGRAM PROG408: THE RESULT OF 12 - 2 IS:"
  1853.    44                                         UPON PRINTER-DISPLAY.
  1854.    45             DISPLAY W005-MINUEND UPON PRINTER-DISPLAY.
  1855.    46             STOP RUN.
  1856.           --------------------------------------------------------
  1857.                                 EXAMPLE 4.9
  1858.  
  1859.           PROGRAM PROG408: THE RESULT OF 12 - 2 IS:
  1860.           10
  1861.           ---------------------------------------------------------
  1862.  
  1863.                            THE MULTIPLY STATEMENT
  1864.  
  1865.           The MULTIPLY verb multiplies two numbers and as options 
  1866.           rounds off the product, checks it for overflow, or puts 
  1867.           it into a specific field.  Here, we will take up the 
  1868.           most basic version of the statement where we multiply 
  1869.           two numbers (contained in the two operands) and the 
  1870.           product is placed in the second operand ( the 
  1871.           multiplier) and thus replaces its original value.  The 
  1872.           program is shown in fig.4.10.  Line 42 does the 
  1873.           multiplication which is then printed out.  The result is 
  1874.           fig.4.11.
  1875.  
  1876.  
  1877.                              PROGRAM LIST 4.10
  1878.                              -----------------
  1879.  
  1880.  PROG410 COB                                 13:13:40    02-Sep-90    PAGE   1
  1881.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  1882.  
  1883.     1         IDENTIFICATION DIVISION.
  1884.     2        *
  1885.     3         PROGRAM-ID. PROG410.
  1886.  
  1887.  
  1888.  
  1889.   PAGE 25
  1890.                               ANSI-COBOL 6.50
  1891.                                 USERS MANUAL
  1892.                               COPYWRITE  1990
  1893.  
  1894.  
  1895.     4        *
  1896.     5        ***************************************************
  1897.     6        *                                                 *
  1898.     7        * 1. DATE-WRITTEN. 08/01/90.                      *
  1899.     8        *                                                 *
  1900.     9        * 2. THIS PROGRAM DISPLAYS ON THE PRINTER         *
  1901.    10        *    A VALUE COMPUTED FROM A MULTIPLY OPERATION.  *
  1902.    11        *                                                 *
  1903.    12        ***************************************************
  1904.    13        *
  1905.    14        *
  1906.    15         ENVIRONMENT DIVISION.
  1907.    16        *
  1908.    17         CONFIGURATION SECTION.
  1909.    18        *
  1910.    19         SPECIAL-NAMES.
  1911.    20        *
  1912.    21             PRINTER IS PRINTER-DISPLAY.
  1913.    22        *
  1914.    23        *
  1915.    24         DATA DIVISION.
  1916.    25        *
  1917.    26        *
  1918.    27        ****************************************************
  1919.    28        *                                                  *
  1920.    29         WORKING-STORAGE SECTION.
  1921.    30        *                                                  *
  1922.    31        ****************************************************
  1923.    32        *
  1924.    33        *
  1925.    34         01  W005-MULTIPLICAND               PIC 9   VALUE 2.
  1926.    35        *
  1927.    36         01  W005-MULTIPLIER                 PIC 99  VALUE 12.
  1928.    37        *
  1929.    38        *
  1930.    39         PROCEDURE DIVISION.
  1931.    40        *
  1932.    41         PRINT-COMPUTED-VALUE.
  1933.    42             MULTIPLY W005-MULTIPLICAND BY W005-MULTIPLIER.
  1934.    43             DISPLAY "PROGRAM PROG410: THE PRODUCT OF 2 * 12 IS:"
  1935.    44                                         UPON PRINTER-DISPLAY.
  1936.    45             DISPLAY W005-MULTIPLIER UPON PRINTER-DISPLAY.
  1937.    46             STOP RUN.
  1938.           ---------------------------------------------------------
  1939.                                 EXAMPLE 4.11
  1940.  
  1941.           PROGRAM PROG410: THE PRODUCT OF 2 * 12 IS:
  1942.           24
  1943.           ----------------------------------------------------------
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.   PAGE 26
  1955.                               ANSI-COBOL 6.50
  1956.                                 USERS MANUAL
  1957.                               COPYWRITE  1990
  1958.  
  1959.  
  1960.                             THE DIVIDE STATEMENT
  1961.  
  1962.           The DIVIDE verb divides two numbers and as options 
  1963.           rounds off the quotient, checks it for overflow, or 
  1964.           places it into a specific field.  Here, we will take up 
  1965.           the most basic version of the statement where we divide 
  1966.           two numbers and the quotient is placed in the second 
  1967.           operand (the dividend) and thus replaces its original 
  1968.           value.  The program is shown in fig.4.12.  Line 42 
  1969.           divides the two numbers and the result is then printed 
  1970.           out.  The result is fig.4.13.  You will notice that the 
  1971.           result is 06, not simply 6.
  1972.  
  1973.  
  1974.                              PROGRAM LIST 4.12
  1975.                             -------------------
  1976.  
  1977.  
  1978.   PROG412 COB                                 13:25:31    02-Sep-90    PAGE   1
  1979.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  1980.  
  1981.     1         IDENTIFICATION DIVISION.
  1982.     2        *
  1983.     3         PROGRAM-ID. PROG412.
  1984.     4        *
  1985.     5        ***************************************************
  1986.     6        *                                                 *
  1987.     7        * 1. DATE-WRITTEN. 08/01/90.                      *
  1988.     8        *                                                 *
  1989.     9        * 2. THIS PROGRAM DISPLAYS ON THE PRINTER         *
  1990.    10        *    A VALUE COMPUTED FROM A DIVIDE   OPERATION.  *
  1991.    11        *                                                 *
  1992.    12        ***************************************************
  1993.    13        *
  1994.    14        *
  1995.    15         ENVIRONMENT DIVISION.
  1996.    16        *
  1997.    17         CONFIGURATION SECTION.
  1998.    18        *
  1999.    19         SPECIAL-NAMES.
  2000.    20        *
  2001.    21             PRINTER IS PRINTER-DISPLAY.
  2002.    22        *
  2003.    23        *
  2004.    24         DATA DIVISION.
  2005.    25        *
  2006.    26        *
  2007.    27        ****************************************************
  2008.    28        *                                                  *
  2009.    29         WORKING-STORAGE SECTION.
  2010.    30        *                                                  *
  2011.    31        ****************************************************
  2012.    32        *
  2013.    33        *
  2014.    34         01  W005-DIVISOR                    PIC 9   VALUE 2.
  2015.    35        *
  2016.  
  2017.  
  2018.  
  2019.   PAGE 27
  2020.                               ANSI-COBOL 6.50
  2021.                                 USERS MANUAL
  2022.                               COPYWRITE  1990
  2023.  
  2024.  
  2025.    36         01  W005-DIVIDEND                   PIC 99  VALUE 12.
  2026.    37        *
  2027.    38        *
  2028.    39         PROCEDURE DIVISION.
  2029.    40        *
  2030.    41         PRINT-COMPUTED-VALUE.
  2031.    42             DIVIDE W005-DIVISOR INTO W005-DIVIDEND.
  2032.    43             DISPLAY "PROGRAM PROG412: THE QUOTIENT OF 12 / 2 IS:"
  2033.    44                                         UPON PRINTER-DISPLAY.
  2034.    45             DISPLAY W005-DIVIDEND       UPON PRINTER-DISPLAY.
  2035.    46             STOP RUN.
  2036.           ---------------------------------------------------------
  2037.  
  2038.                                 EXAMPLE 4.13
  2039.  
  2040.           PROGRAM PROG412: THE QUOTIENT OF 12 / 2 IS:
  2041.           06
  2042.           ---------------------------------------------------------
  2043.                              THE GIVING CLAUSE
  2044.  
  2045.           We have so far used the four arithmetic operations where 
  2046.           we allowed the result to replace one of the original 
  2047.           operands.  This may be all right for some programs, but 
  2048.           in others you may want to preserve the original numbers 
  2049.           because you may need them later on.  We accomplish this 
  2050.           by including the optional GIVING clause which specifies 
  2051.           a data item that will contain the result of the 
  2052.           arithmetic operation.  An example is fig.4.14.  Line 40 
  2053.           defines the data item that will receive the result of 
  2054.           the DIVIDE operation, which is coded in line 46.  This 
  2055.           is the data item that we will also display on the 
  2056.           printer.  The result is fig.4.15.
  2057.  
  2058.  
  2059.                             PROGRAM LISTING 4.14
  2060.                             ---------------------
  2061.  
  2062.   PROG414 COB                                 13:37:26    02-Sep-90    PAGE   1
  2063.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  2064.  
  2065.     1         IDENTIFICATION DIVISION.
  2066.     2        *
  2067.     3         PROGRAM-ID. PROG414.
  2068.     4        *
  2069.     5        ***************************************************
  2070.     6        *                                                 *
  2071.     7        * 1. DATE-WRITTEN. 08/01/90.                      *
  2072.     8        *                                                 *
  2073.     9        * 2. THIS PROGRAM DISPLAYS ON THE PRINTER         *
  2074.    10        *    A VALUE COMPUTED FROM A DIVIDE   OPERATION.  *
  2075.    11        *                                                 *
  2076.    12        * 3. THE QUOTIENT IS PLACED INTO A DIFFERENT FIELD*
  2077.    13        *                                                 *
  2078.    14        ***************************************************
  2079.    15        *
  2080.    16        *
  2081.  
  2082.  
  2083.  
  2084.   PAGE 28
  2085.                               ANSI-COBOL 6.50
  2086.                                 USERS MANUAL
  2087.                               COPYWRITE  1990
  2088.  
  2089.  
  2090.    17         ENVIRONMENT DIVISION.
  2091.    18        *
  2092.    19         CONFIGURATION SECTION.
  2093.    20        *
  2094.    21         SPECIAL-NAMES.
  2095.    22        *
  2096.    23             PRINTER IS PRINTER-DISPLAY.
  2097.    24        *
  2098.    25        *
  2099.    26         DATA DIVISION.
  2100.    27        *
  2101.    28        *
  2102.    29        ****************************************************
  2103.    30        *                                                  *
  2104.    31         WORKING-STORAGE SECTION.
  2105.    32        *                                                  *
  2106.    33        ****************************************************
  2107.    34        *
  2108.    35        *
  2109.    36         01  W005-DIVISOR                    PIC 9   VALUE 2.
  2110.    37        *
  2111.    38         01  W005-DIVIDEND                   PIC 99  VALUE 12.
  2112.    39        *
  2113.    40         01  W005-QUOTIENT                   PIC 9.
  2114.    41        *
  2115.    42         PROCEDURE DIVISION.
  2116.    43        *
  2117.    44         PRINT-COMPUTED-VALUE.
  2118.    45             DIVIDE W005-DIVISOR INTO W005-DIVIDEND GIVING W005-QUOTIENT.
  2119.    46             DISPLAY "PROGRAM PROG414: THE QUOTIENT OF 12 / 2 IS:"
  2120.    47                                         UPON PRINTER-DISPLAY.
  2121.    48             DISPLAY W005-QUOTIENT       UPON PRINTER-DISPLAY.
  2122.    49             STOP RUN.
  2123.           ---------------------------------------------------------
  2124.                                 EXAMPLE 4.15
  2125.           PROGRAM PROG414: THE QUOTIENT OF 12 / 2 IS:
  2126.           6
  2127.           ---------------------------------------------------------
  2128.  
  2129.                              THE ROUNDED CLAUSE
  2130.  
  2131.           In certain arithmetic operations, especially division 
  2132.           and sometimes multiplication with decimals, there may be 
  2133.           extra digits in the result to the right of the decinal 
  2134.           point that cannot be accommodated in the data item that 
  2135.           holds this result.  ANSI-COBOL automatically truncates 
  2136.           these digits from the result without rounding off the 
  2137.           remaining loworder (rightmost) digit, unless the 
  2138.           optional ROUNDED clause is included.  Fig. 4.16 shows 
  2139.           the differnce between division without rounding and one 
  2140.           with rounding.  Both versions will be displayed for 
  2141.           comparison.  Lines 50 to 53 shows division without 
  2142.           rounding, followed by the corresponding display; and 
  2143.           lines 54 to 58, those with rounding.  Incidentally, line 
  2144.           52 shows how a non-numeric literal is continued in the 
  2145.           next line.  The result is fig.4.17.  The quotient of 5/3 
  2146.  
  2147.  
  2148.  
  2149.   PAGE 29
  2150.                               ANSI-COBOL 6.50
  2151.                                 USERS MANUAL
  2152.                               COPYWRITE  1990
  2153.  
  2154.  
  2155.           is 1 if not rounded, and 2 if rounded.  Since the 
  2156.           rounded version is closer to the true answer,  this 
  2157.           option should always be used if truncation can occur.
  2158.  
  2159.                             PROGRAM LISTING 4.16
  2160.                             --------------------
  2161.  
  2162.   PROG416 COB                                 14:01:37    02-Sep-90    PAGE   1
  2163.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  2164.  
  2165.     1         IDENTIFICATION DIVISION.
  2166.     2        *
  2167.     3         PROGRAM-ID. PROG416.
  2168.     4        *
  2169.     5        *********************************************************
  2170.     6        *                                                       *
  2171.     7        * 1. DATE-WRITTEN. 08/01/90.                            *
  2172.     8        *                                                       *
  2173.     9        * 2. THIS PROGRAM DISPLAYS ON THE PRINTER               *
  2174.    10        *    A VALUE COMPUTED FROM A DIVIDE   OPERATION.        *
  2175.    11        *                                                       *
  2176.    12        * 3. THE QUOTIENT IS PLACED INTO A DIFFERENT FIELD      *
  2177.    13        *                                                       *
  2178.    14        * 4. THE DIVIDE OPERATION AND DISPLAY WILL BE DONE TWICE*
  2179.    15        *    A) TRY #1 - QUOTIENT IS NOT ROUNDED OFF.           *
  2180.    16        *    B) TRY #2 - QUOTIENT IS ROUNDED OFF.               *
  2181.    17        *                                                       *
  2182.    18        *********************************************************
  2183.    19        *
  2184.    20        *
  2185.    21         ENVIRONMENT DIVISION.
  2186.    22        *
  2187.    23         CONFIGURATION SECTION.
  2188.    24        *
  2189.    25         SPECIAL-NAMES.
  2190.    26        *
  2191.    27             PRINTER IS PRINTER-DISPLAY.
  2192.    28        *
  2193.    29        *
  2194.    30         DATA DIVISION.
  2195.    31        *
  2196.    32        *
  2197.    33        ****************************************************
  2198.    34        *                                                  *
  2199.    35         WORKING-STORAGE SECTION.
  2200.    36        *                                                  *
  2201.    37        ****************************************************
  2202.    38        *
  2203.    39        *
  2204.    40         01  W005-DIVISOR                    PIC 9   VALUE 3.
  2205.    41        *
  2206.    42         01  W005-DIVIDEND                   PIC 9   VALUE 5.
  2207.    43        *
  2208.    44         01  W005-QUOTIENT                   PIC 9.
  2209.    45        *
  2210.    46        *
  2211.  
  2212.  
  2213.  
  2214.   PAGE 30
  2215.                               ANSI-COBOL 6.50
  2216.                                 USERS MANUAL
  2217.                               COPYWRITE  1990
  2218.  
  2219.  
  2220.    47         PROCEDURE DIVISION.
  2221.    48        *
  2222.    49         PRINT-COMPUTED-VALUE.
  2223.    50             DIVIDE W005-DIVISOR INTO W005-DIVIDEND GIVING W005-QUOTIENT.
  2224.    51             DISPLAY "PROGRAM PROG414: THE QUOTIENT OF 5 / 3 UNROUNDED IS
  2225.    52        -        ":"                   UPON PRINTER-DISPLAY.
  2226.    53             DISPLAY W005-QUOTIENT     UPON PRINTER-DISPLAY.
  2227.    54             DIVIDE W005-DIVISOR INTO W005-DIVIDEND
  2228.    55                                      GIVING W005-QUOTIENT ROUNDED.
  2229.  
  2230.  
  2231.   PROG416 COB                                 14:01:37    02-Sep-90    PAGE   2
  2232.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  2233.  
  2234.    56             DISPLAY "PROGRAM PROG414: THE QUOTIENT OF 5 / 3 ROUNDED IS:"
  2235.    57                                       UPON PRINTER-DISPLAY.
  2236.    58             DISPLAY W005-QUOTIENT     UPON PRINTER-DISPLAY.
  2237.    59             STOP RUN.
  2238.           -----------------------------------------------------------
  2239.                                 EXAMPLE 4.17
  2240.  
  2241.           PROGRAM PROG416: THE QUOTIENT OF 5 / 3 UNROUNDED IS:
  2242.           1
  2243.           PROGRAM PROG416: THE QUOTIENT OF 5 / 3 ROUNDED IS:
  2244.           2
  2245.           ----------------------------------------------------------
  2246.  
  2247.                            THE PERFORM STATEMENT
  2248.  
  2249.           The PERFORM verb executes a set of one or more 
  2250.           contiguous sections or paragraphs, then returns control 
  2251.           to the statement following the PERFORM.  It is thus a 
  2252.           temporary branch from the current set of statements 
  2253.           being executed.  It is an extremely useful verb and is 
  2254.           generally used to control the program logic by selecting 
  2255.           which statements are to be executed at any given time.  
  2256.           The program is shown in fig.4.20.
  2257.  
  2258.  
  2259.  
  2260.  
  2261.                             PROGRAM LISTING 4.20
  2262.                             --------------------
  2263.  
  2264.   PROG420 COB                                 14:35:22    02-Sep-90    PAGE   1
  2265.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  2266.  
  2267.     1         IDENTIFICATION DIVISION.
  2268.     2        *
  2269.     3         PROGRAM-ID. PROG420.
  2270.     4        *
  2271.     5         ENVIRONMENT DIVISION.
  2272.     6        *
  2273.     7         CONFIGURATION SECTION.
  2274.     8        *
  2275.     9         SPECIAL-NAMES.
  2276.  
  2277.  
  2278.  
  2279.   PAGE 31
  2280.                               ANSI-COBOL 6.50
  2281.                                 USERS MANUAL
  2282.                               COPYWRITE  1990
  2283.  
  2284.  
  2285.    10        *
  2286.    11             PRINTER IS PRINTER-DISPLAY.
  2287.    12        *
  2288.    13        *
  2289.    14         DATA DIVISION.
  2290.    15        *
  2291.    16        *
  2292.    17         WORKING-STORAGE SECTION.
  2293.    18        *
  2294.    19             01  W005-DIVISOR                     PIC 9  VALUE 2.
  2295.    20        *
  2296.    21             01  W005-DIVIDEND                    PIC 99 VALUE 12.
  2297.    22        *
  2298.    23             01  W005-QUOTIENT                    PIC 9.
  2299.    24        *
  2300.    25        *
  2301.    26         PROCEDURE DIVISION.
  2302.    27        *
  2303.    28         MAIN-LINE-LOGIC.
  2304.    29             PERFORM PRINT-COMPUTED-VALUE.
  2305.    30             STOP RUN.
  2306.    31        *
  2307.    32        *
  2308.    33         PRINT-COMPUTED-VALUE.
  2309.    34             DIVIDE W005-DIVISOR INTO W005-DIVIDEND GIVING W005-QUOTIENT.
  2310.    35             DISPLAY "12/2 IS".
  2311.    36             DISPLAY W005-QUOTIENT.
  2312.           ---------------------------------------------------------
  2313.  
  2314.                           THE ON SIZE ERROR CLAUSE
  2315.  
  2316.           If after decimal point alignment and rounding, the high-
  2317.           order (left-most) portion of the result cannot fit in 
  2318.           the data item for the result, the "size error" condition 
  2319.           occurs.  If the ON SIZE ERROR option is not used in the 
  2320.           arithmetic statement, the result is unpredictable. 
  2321.           Otherwise, the imperative statements that fall under the 
  2322.           ON SIZE ERROR clause will be executed.  An example is 
  2323.           fig.4.22.
  2324.  
  2325.  
  2326.                             PROGRAM LISTING 4.22
  2327.                             --------------------
  2328.  
  2329.   PROG422 COB                                 14:36:08    02-Sep-90    PAGE   1
  2330.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  2331.  
  2332.     1         IDENTIFICATION DIVISION.
  2333.     2        *
  2334.     3         PROGRAM-ID. CHAP422.
  2335.     4        *
  2336.     5         ENVIRONMENT DIVISION.
  2337.     6        *
  2338.     7         CONFIGURATION SECTION.
  2339.     8        *
  2340.     9         SPECIAL-NAMES.
  2341.  
  2342.  
  2343.  
  2344.   PAGE 32
  2345.                               ANSI-COBOL 6.50
  2346.                                 USERS MANUAL
  2347.                               COPYWRITE  1990
  2348.  
  2349.  
  2350.    10        *
  2351.    11             PRINTER IS PRINTER-DISPLAY.
  2352.    12        *
  2353.    13         DATA DIVISION.
  2354.    14        *
  2355.    15         WORKING-STORAGE SECTION.
  2356.    16        *
  2357.    17             01  W005-DIVISOR                     PIC 9  VALUE 0.
  2358.    18        *
  2359.    19             01  W005-DIVIDEND                    PIC 99 VALUE 5.
  2360.    20        *
  2361.    21             01  W005-QUOTIENT                    PIC 9.
  2362.    22        *
  2363.    23        *
  2364.    24         PROCEDURE DIVISION.
  2365.    25        *
  2366.    26         MAIN-LINE-LOGIC.
  2367.    27             PERFORM PRINT-COMPUTED-VALUE.
  2368.    28             STOP RUN.
  2369.    29        *
  2370.    30        *
  2371.    31         PRINT-COMPUTED-VALUE.
  2372.    32             DIVIDE W005-DIVISOR INTO W005-DIVIDEND GIVING W005-QUOTIENT
  2373.    33                         ON SIZE ERROR
  2374.    34                            DISPLAY "ON SIZE ERROR ENCOUNTERED"
  2375.    35                            DISPLAY "PROGRAM ABORTING"
  2376.    36                            STOP RUN.
  2377.    37             DISPLAY "No On Size error".
  2378.    38             DISPLAY "PROGRAM EXITING NORMALLY".
  2379.    39             STOP RUN.
  2380.           ---------------------------------------------------------
  2381.  
  2382.                             THE GO TO STATEMENT
  2383.  
  2384.           The GO TO statement verb provides an unconditional 
  2385.           branch from the current set of statements to a specific 
  2386.           section or paragraph in the program.  Unlike the PERFORM 
  2387.           verb, there is no return to where it came from and the 
  2388.           execution will continue right at the section or 
  2389.           paragraph specified as the operand of the verb.  Many 
  2390.           studies in structured programming have shown that the 
  2391.           uncontrolled use of this verb can make the program logic 
  2392.           hard to follow because of the many "jumps" that occur.  
  2393.           I therefore suggest that we only use this verb in 
  2394.           certain conditions.  Fig. 4.24 shows an example of the 
  2395.           GO TO.
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.   PAGE 33
  2410.                               ANSI-COBOL 6.50
  2411.                                 USERS MANUAL
  2412.                               COPYWRITE  1990
  2413.  
  2414.  
  2415.                             PROGRAM LISTING 4.24
  2416.                             --------------------
  2417.  
  2418.   PROG424 COB                                 14:37:39    02-Sep-90    PAGE   1
  2419.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  2420.  
  2421.     1         IDENTIFICATION DIVISION.
  2422.     2        *
  2423.     3         PROGRAM-ID. CHAP424.
  2424.     4        *
  2425.     5         ENVIRONMENT DIVISION.
  2426.     6        *
  2427.     7         CONFIGURATION SECTION.
  2428.     8        *
  2429.     9         SPECIAL-NAMES.
  2430.    10             PRINTER IS PRINTER-DISPLAY.
  2431.    11        *
  2432.    12        *
  2433.    13         DATA DIVISION.
  2434.    14        *
  2435.    15         WORKING-STORAGE SECTION.
  2436.    16        *
  2437.    17             01  W005-DIVISOR                     PIC 9  VALUE 0.
  2438.    18        *
  2439.    19             01  W005-DIVIDEND                    PIC 99 VALUE 5.
  2440.    20        *
  2441.    21             01  W005-QUOTIENT                    PIC 9.
  2442.    22        *
  2443.    23        *
  2444.    24         PROCEDURE DIVISION.
  2445.    25        *
  2446.    26         MAIN-LINE-LOGIC.
  2447.    27             GO TO PRINT-COMPUTED-VALUE.
  2448.    28        *
  2449.    29        *
  2450.    30         PRINT-COMPUTED-VALUE.
  2451.    31             DIVIDE W005-DIVISOR INTO W005-DIVIDEND GIVING W005-QUOTIENT
  2452.    32                         ON SIZE ERROR
  2453.    33                            DISPLAY "ON SIZE ERROR ENCOUNTERED"
  2454.    34                            DISPLAY "PROGRAM ABORTING"
  2455.    35                            STOP RUN.
  2456.    36             DISPLAY "No On Size error".
  2457.    37             DISPLAY "PROGRAM EXITING NORMALLY".
  2458.    38             STOP RUN.
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474.   PAGE 34
  2475.                               ANSI-COBOL 6.50
  2476.                                 USERS MANUAL
  2477.                               COPYWRITE  1990
  2478.  
  2479.  
  2480.                            THE COMPUTE STATEMENT
  2481.  
  2482.           The COMPUTE statement is used to evaluate an arithmetic 
  2483.           expression.  It can therefore be used in place of 
  2484.           individual ADD, SUBTRACT, MULTIPLY, or DIVIDE 
  2485.           statements.  It is also used ijn exponentialtion 
  2486.           (raising a number to a power), although VERSION 6.50 
  2487.           only allows integers for the exponent.  It's main 
  2488.           drawback is that the intermediate results are 
  2489.           manipulated by the statement (not the programmer) and 
  2490.           may result in truncation of digits to the right of tthe 
  2491.           decimal point.  Therefore, be careful when using this 
  2492.           statement.  An example of the use of COMPUTE is 
  2493.           fig.4.26.
  2494.  
  2495.                             PROGRAM LISTING 4.26
  2496.                             --------------------
  2497.  
  2498.   PROG426 COB                                 14:41:15    02-Sep-90    PAGE   1
  2499.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  2500.  
  2501.     1        *
  2502.     2         IDENTIFICATION DIVISION.
  2503.     3        *
  2504.     4         PROGRAM-ID. CHAP426.
  2505.     5        *
  2506.     6         ENVIRONMENT DIVISION.
  2507.     7        *
  2508.     8         CONFIGURATION SECTION.
  2509.     9        *
  2510.    10         SPECIAL-NAMES.
  2511.    11             PRINTER IS PRINTER-DISPLAY.
  2512.    12        *
  2513.    13        *
  2514.    14         DATA DIVISION.
  2515.    15        *
  2516.    16         WORKING-STORAGE SECTION.
  2517.    17        *
  2518.    18        *
  2519.    19             01  W005-GROSS-PAY                   PIC 9(4)V99.
  2520.    20        *
  2521.    21             01  W005-BASE-PAY                    PIC 999V99 VALUE 500.
  2522.    22        *
  2523.    23             01  W005-WEEK-HOURS                  PIC 99V99  VALUE 39.5.
  2524.    24        *
  2525.    25        *
  2526.    26         PROCEDURE DIVISION.
  2527.    27        *
  2528.    28         MAIN-LINE-LOGIC.
  2529.    29             GO TO PRINT-COMPUTED-VALUE.
  2530.    30        *
  2531.    31        *
  2532.    32         PRINT-COMPUTED-VALUE.
  2533.    33             COMPUTE W005-GROSS-PAY ROUNDED =
  2534.    34               W005-BASE-PAY * ( 1 + 1.5 * ( W005-WEEK-HOURS - 35 ) / 35 )
  2535.    35             DISPLAY W005-GROSS-PAY.
  2536.  
  2537.  
  2538.  
  2539.   PAGE 35
  2540.                               ANSI-COBOL 6.50
  2541.                                 USERS MANUAL
  2542.                               COPYWRITE  1990
  2543.  
  2544.  
  2545.    36             COMPUTE W005-GROSS-PAY ROUNDED =
  2546.    37               W005-BASE-PAY * ( 1 + ( 1.5 / 35 )
  2547.    38                             * ( W005-WEEK-HOURS - 35)).
  2548.    39             DISPLAY W005-GROSS-PAY.
  2549.    40             STOP RUN.
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.  
  2590.  
  2591.  
  2592.  
  2593.  
  2594.  
  2595.  
  2596.  
  2597.  
  2598.  
  2599.  
  2600.  
  2601.  
  2602.  
  2603.  
  2604.   PAGE 36
  2605.                               ANSI-COBOL 6.50
  2606.                                 USERS MANUAL
  2607.                               COPYWRITE  1990
  2608.  
  2609.  
  2610.                                  CHAPTER 5
  2611.  
  2612.                            BASIC FILE OPERATIONS
  2613.  
  2614.                                 INTRODUCTION
  2615.  
  2616.           Cobol was deveeloped for business applications and as 
  2617.           such was designed to make it easier ( compared to other 
  2618.           language ) for programmers to write programs for 
  2619.           applications like PAYROLL, INVENTORY CONTROL, ACCOUNTS 
  2620.           REC. ECT. While its arithmetic capablities, though more 
  2621.           than adequate for business applications, are not as 
  2622.           extensive as those of fortran, its ablitity to process 
  2623.           large amounts of data of different formats from 
  2624.           different locations make it the most popular programming 
  2625.           language for commercial applications.
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.   PAGE 37
  2670.                               ANSI-COBOL 6.50
  2671.                                 USERS MANUAL
  2672.                               COPYWRITE  1990
  2673.  
  2674.  
  2675.                                    FILES
  2676.  
  2677.  
  2678.           Data used in COBOL programs (except for low-volume data 
  2679.           like an end-of-cycle date entered at the begining of the 
  2680.           computer run) are generally contained in files.  We may 
  2681.           think of files as similar to file cabinets that contain 
  2682.           a lot of information about a particular subject matter. 
  2683.           In a payrole application, the PAYROLE MASTER FILE is one 
  2684.           that contains information for all employees in the 
  2685.           company.  In an Inventory application, the INVENTORY 
  2686.           MASTER FILE contains the relevant information about all 
  2687.           items being stocked by the company.
  2688.  
  2689.                              FILE ORGANIZATION
  2690.  
  2691.           Files used by ANSI-STANDARD COBOL 6.50 may fall under 
  2692.           four types of organization. The regular sequential 
  2693.           (usually called sequential) organization file is the 
  2694.           type normally created by COBOL programs. The records are 
  2695.           only logically sequential because the will appear that 
  2696.           way to the program.  They may not really be physically 
  2697.           in sequence since DOS uses the first available sector on 
  2698.           the disk on file operations. However, thisdoes not 
  2699.           concern the programmer in cobol because DOS will 
  2700.           retrieve these records in the proper sequence.
  2701.           The records in the file are of variable length and each 
  2702.           one has a 2-byte prefix created by DOS containing the 
  2703.           record number. This prefix is transparent to COBOL and 
  2704.           is therefore not defined as part of the record.
  2705.           The line sequentional organization file has each record 
  2706.           followed by a CR/LF. This type file is created normally 
  2707.           by a word proc.
  2708.           The indexed organization and relative organization will 
  2709.           be discussed in greater detail later on in the text.
  2710.  
  2711.                                   RECORDS
  2712.   
  2713.          Each record in the file may have up to 4,095 bytes but 
  2714.           no more.
  2715.  
  2716.  
  2717.  
  2718.  
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.  
  2726.  
  2727.  
  2728.  
  2729.  
  2730.  
  2731.  
  2732.  
  2733.  
  2734.   PAGE 38
  2735.                               ANSI-COBOL 6.50
  2736.                                 USERS MANUAL
  2737.                               COPYWRITE  1990
  2738.  
  2739.  
  2740.                              THE OPEN STATEMENT
  2741.  
  2742.           Each file used must be opened before any activity is 
  2743.           allowed on it; else an error occurs.  Any sequential 
  2744.           READ statement will then retrieve the first record in 
  2745.           the file.  The format of the OPEN statement is:
  2746.      
  2747.           OPEN INPUT|OUTPUT|I-O|EXTEND FDFILENAME
  2748.  
  2749.  
  2750.           The following rules apply:
  2751.           1. Filename corresponds to those in the SELECT and FD 
  2752.              (file description) entries.
  2753.           2. Files that are simultaneously opend as either 
  2754.              INPUT,OUTPUT,I-O, or EXTEND may be grouped together.
  2755.           3. INPUT,OUTPUT,I-O, and EXTEND may be coded in the same 
  2756.              statement.
  2757.           4. Use INPUT if the file already exists and will be used 
  2758.              only for "READING" data from it.
  2759.           5. Use OUTPUT if the file does not exist or you want to 
  2760.              replace an existing file with new records generated 
  2761.              in the program. The printer is ALWAYS an output file.
  2762.           6. Use I-O if you want to add new records (WRITE), or 
  2763.              update old records (REWRITE after a READ) to an 
  2764.              existing disk file. NOTE: the file must already exist 
  2765.              if the I-O mode is used. Also, the WRITE verb cannot 
  2766.              be used in I-O mode if organization is sequential.
  2767.           7. Use EXTEND if you want to append new records at the 
  2768.              end of an existing file. NOTE: The file must already 
  2769.              exist if tthe EXTEND mode is used. Only WRITE 
  2770.              statements are allowed and only sequential files may 
  2771.              be opened in EXTEND mode.
  2772.  
  2773.                             THE CLOSE STATEMENT
  2774.  
  2775.           Each file used must be closed if no longer required, as 
  2776.           for instance when all records have been read from or 
  2777.           written to it.  Closing files allows the operating 
  2778.           system to do its housekeeping chores on the file, 
  2779.           disposing of them properly depending on their nature. 
  2780.           The format of the CLOSE statement is :
  2781.           CLOSE FDFILENAME WITH LOCK.
  2782.           You may thus close as many files you want in a single 
  2783.           statement.  The WITH LOCK option makes sure that the 
  2784.           file cannot be reopened in the same program.  If 
  2785.           required, it is coded for the specific files that 
  2786.           require them.
  2787.  
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.   PAGE 39
  2800.                               ANSI-COBOL 6.50
  2801.                                 USERS MANUAL
  2802.                               COPYWRITE  1990
  2803.  
  2804.  
  2805.                              THE READ STATEMENT
  2806.  
  2807.           The read statement brings an existing record into your 
  2808.           program.  It can only be used for files that are opened 
  2809.           as INPUT or I-O.  The format is:
  2810.  
  2811.           READ FDFILENAME INTO DATA-NAME
  2812.                AT END, statements
  2813.           The INTO option specifies a data name in the WORKING-
  2814.           STORAGE section that will receive the data. The AT END 
  2815.           condition specifies the imperative statements that will 
  2816.           be executed when that are no more records in the file.
  2817.  
  2818.  
  2819.                       THE WRITE STATEMENT (PRINT FILE)
  2820.  
  2821.            The WRITE statement writes records into an output file.  
  2822.           Here, we will only discuss it's use in generating print 
  2823.           lines on the printer.  This is used to prepare well-
  2824.           structured reports of the type used by management and 
  2825.           employee personal, unlike the DISPLAY verb, which is 
  2826.           basically used to print unstructured, short messages for 
  2827.           the computer operator.  Extreme care must be made when 
  2828.           using both features since we don't want messages mixed 
  2829.           in with reports. The format for the WRITE statement is:
  2830.           WRITE print-record AFTER ADVANCING data-name|literal 
  2831.           LINES|PAGE
  2832.           Print-record is th 01-level record defined as part of 
  2833.           the FD entry for the file.  The "AFTER ADVANCING" clause 
  2834.           specifies the printer carrage control skipping action 
  2835.           before the line is printed.  The "AFTER ADVANCING PAGE" 
  2836.           option specifies that the line is printed after the 
  2837.           paper is positioned on a new page. The "AFTER ADVANCING 
  2838.           data-name|literal LINES" option specifies that the paper 
  2839.           is advanced so many lines before the line is printed. 
  2840.           The literal must be an unsigned integer and the data-
  2841.           name defined as an unsigned integer, and skipping will 
  2842.           occur according to the following values they hold:
  2843.           VALUE              CARRIAGE CONTROL ACTION
  2844.      --------------------------------------------------------
  2845.             0                NO SPACING
  2846.             1                NORMAL (PRINT ON NEXT LINE)
  2847.             2                1 BLANK SPACE BEFORE PRINTING
  2848.             3                2 BLANK SPACES BEFORE PRINTING
  2849.             .                ....
  2850.             .                ....
  2851.           120                119 BLANK SPACES BEFORE PRINTING
  2852.  
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858.  
  2859.  
  2860.  
  2861.  
  2862.  
  2863.  
  2864.   PAGE 40
  2865.                               ANSI-COBOL 6.50
  2866.                                 USERS MANUAL
  2867.                               COPYWRITE  1990
  2868.  
  2869.  
  2870.                             PROGRAM LISTING 5.01
  2871.                             --------------------
  2872.  
  2873.   PROG501 COB                                 15:25:03    02-Sep-90    PAGE   1
  2874.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  2875.  
  2876.     1         IDENTIFICATION DIVISION.
  2877.     2        *
  2878.     3         PROGRAM-ID. PROG501.
  2879.     4        *
  2880.     5         DATE-WRITTEN. 08/13/90.
  2881.     6        *
  2882.     7         AUTHOR. BOB NOWECK.
  2883.     8        *
  2884.     9         SECURITY. NONE.
  2885.    10        *
  2886.    11        *
  2887.    12         ENVIRONMENT DIVISION.
  2888.    13        *
  2889.    14         INPUT-OUTPUT SECTION.
  2890.    15        *
  2891.    16         FILE-CONTROL.
  2892.    17        *
  2893.    18             SELECT EMPLOYEE-ADDRESS-MASTER
  2894.    19                    ASSIGN TO DISK
  2895.    20                    ORGANIZATION IS LINE SEQUENTIAL.
  2896.    21        *
  2897.    22             SELECT EMPLOYEE-ADDRESS-PRINT
  2898.    23                    ASSIGN TO PRINTER.
  2899.    24        *
  2900.    25        *
  2901.    26         DATA DIVISION.
  2902.    27        *
  2903.    28         FILE SECTION.
  2904.    29        *
  2905.    30         FD  EMPLOYEE-ADDRESS-MASTER
  2906.    31             LABEL RECORDS STANDARD
  2907.    32             VALUE OF FILE-ID IS "FIOPRT.DAT".
  2908.    33         01  EMPLOYEE-ADDRESS-MASTER-RECORD.
  2909.    34             05  EMPLOYEE-ADDRESS-MASTER-NAME            PIC  X(30).
  2910.    35             05  EMPLOYEE-ADDRESS-MASTER-STREET          PIC  X(30).
  2911.    36             05  EMPLOYEE-ADDRESS-MASTER-CITY            PIC  X(30).
  2912.    37        *
  2913.    38         FD  EMPLOYEE-ADDRESS-PRINT
  2914.    39             LABEL RECORDS OMITTED.
  2915.    40         01  EMPLOYEE-ADDRESS-PRINT-LINE                PIC  X(30).
  2916.    41        *
  2917.    42        *
  2918.    43         WORKING-STORAGE SECTION.
  2919.    44        *
  2920.    45         01  W005-END-OF-FILE-SWITCH                    PIC X.
  2921.    46             88  W005-END-OF-FILE                       VALUE "1".
  2922.    47         01  W005-LINE-SKIP                             PIC 99.
  2923.    48        *
  2924.    49         PROCEDURE DIVISION.
  2925.    50        *
  2926.  
  2927.  
  2928.  
  2929.   PAGE 41
  2930.                               ANSI-COBOL 6.50
  2931.                                 USERS MANUAL
  2932.                               COPYWRITE  1990
  2933.  
  2934.  
  2935.    51         C000-MAIN-LINE-LOGIC.
  2936.    52        *
  2937.    53             OPEN INPUT EMPLOYEE-ADDRESS-MASTER
  2938.    54                  OUTPUT EMPLOYEE-ADDRESS-PRINT.
  2939.    55             MOVE "0" TO W005-END-OF-FILE-SWITCH.
  2940.  
  2941.   PROG501 COB                                 15:25:03    02-Sep-90    PAGE   2
  2942.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.0 (c)1990.
  2943.  
  2944.    56             PERFORM C060-READ-EMPLOYEE-MASTER.
  2945.    57             PERFORM C020-PROCESS-EMPLOYEE-MASTER
  2946.    58                  UNTIL W005-END-OF-FILE.
  2947.    59             CLOSE EMPLOYEE-ADDRESS-MASTER
  2948.    60                   EMPLOYEE-ADDRESS-PRINT.
  2949.    61             STOP RUN.
  2950.    62        *
  2951.    63         C020-PROCESS-EMPLOYEE-MASTER.
  2952.    64        *
  2953.    65             MOVE EMPLOYEE-ADDRESS-MASTER-NAME
  2954.    66                           TO EMPLOYEE-ADDRESS-PRINT-LINE.
  2955.    67             MOVE 3        TO W005-LINE-SKIP.
  2956.    68             PERFORM C040-WRITE-DETAIL-LINE.
  2957.    69             MOVE EMPLOYEE-ADDRESS-MASTER-STREET
  2958.    70                           TO EMPLOYEE-ADDRESS-PRINT-LINE.
  2959.    71             MOVE 3        TO W005-LINE-SKIP.
  2960.    72             PERFORM C040-WRITE-DETAIL-LINE.
  2961.    73             MOVE EMPLOYEE-ADDRESS-MASTER-CITY
  2962.    74                           TO EMPLOYEE-ADDRESS-PRINT-LINE.
  2963.    75             MOVE 3        TO W005-LINE-SKIP.
  2964.    76             PERFORM C040-WRITE-DETAIL-LINE.
  2965.    77             PERFORM C060-READ-EMPLOYEE-MASTER.
  2966.    78        *
  2967.    79         C040-WRITE-DETAIL-LINE.
  2968.    80        *
  2969.    81             WRITE EMPLOYEE-ADDRESS-PRINT-LINE
  2970.    82                           AFTER ADVANCING W005-LINE-SKIP LINES.
  2971.    83        *
  2972.    84         C060-READ-EMPLOYEE-MASTER.
  2973.    85        *
  2974.    86             READ EMPLOYEE-ADDRESS-MASTER
  2975.    87                  AT END, MOVE "1" TO W005-END-OF-FILE-SWITCH.
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.  
  2985.  
  2986.  
  2987.  
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.   PAGE 42
  2995.                               ANSI-COBOL 6.50
  2996.                                 USERS MANUAL
  2997.                               COPYWRITE  1990
  2998.  
  2999.  
  3000.              CODING THE IDENTIFICATION AND ENVIRONMENT DIVISIONS 
  3001.                                 INTRODUCTION
  3002.  
  3003.           In the past chapters, we have discussed enough basic 
  3004.           features of COBOL for the reader to code simple 
  3005.           programs.  In the previous chapter, we mentioned the 
  3006.           concept of "structured programming" to write programs 
  3007.           that are easy to read and therefore maintain.  From now 
  3008.           on, we will broaden this concept to include specific 
  3009.           techniques that are useful in the four COBOL divisions.  
  3010.           This extends the concept beyond the original idea of 
  3011.           structured programming, which was mainly for easy-to-
  3012.           read code in the PROCEDURE DIVISION.
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.   PAGE 43
  3060.                               ANSI-COBOL 6.50
  3061.                                 USERS MANUAL
  3062.                               COPYWRITE  1990
  3063.  
  3064.  
  3065.                            THE IDENTIFICATION DIVISION
  3066.  
  3067.           This division identifies the program, and as options may 
  3068.           identify it author, it's purpose, and other 
  3069.           characteristics like when it was written, ect. Besides 
  3070.           the division header "IDENTIFICATION DIVISION." which is 
  3071.           coded starting in column 8, there is only one other 
  3072.           required entry for the division and this is the 
  3073.           "PROGRAM-ID." entry which is also coded starting in 
  3074.           column 8. The operand must be 8 characters or less and 
  3075.           start with an alphabetic character.
  3076.           The periods after "IDENTIFICATION DIVISION." are 
  3077.           manditory, as well as the "PROGRAM-ID.".
  3078.  
  3079.           DATE-WRITTEN.
  3080.           SOURCE-COMPUTER.
  3081.           OBJECT-COMPUTER.
  3082.           AUTHOR.
  3083.           SECURITY.
  3084.  
  3085.           are not manditory but maybe added for arcival purposes. 
  3086.  
  3087.                             THE ENIVRONMENT DIVISION
  3088.  
  3089.           This division, which starts with the division header 
  3090.           "ENVIRONMENT DIVISION." coded starting in column 8, 
  3091.           contains the entries that relate your program to the 
  3092.           physical characteristics of the hardware to be used.  
  3093.           While COBOL is to a large extent machine-independent, 
  3094.           this division is needed to specify things like file 
  3095.           organization, device type, and others which are to some 
  3096.           extent machine-dependent.
  3097.  
  3098.                              CONFIGURATION SECTION
  3099.  
  3100.           This division contains two opional sections, 
  3101.           "CONFIGURATION SECTION." and "INPUT-OUTPUT SECTION." 
  3102.           which are coded in column 8 and must be in that order if 
  3103.           both are present, There are 2 paragraphs in the 
  3104.           "CONFIGURATION SECTION.". The "SOURCE-COMPUTER." 
  3105.           paragraph is used in debugging and will be explained 
  3106.           later on. The "SPECIAL-NAMES." paragraph has severial 
  3107.           entries, one of which is the "PRINTER IS" entry which is 
  3108.           coded in column 12 and is used with displaying of 
  3109.           information on the printer.
  3110.  
  3111.  
  3112.  
  3113.  
  3114.  
  3115.  
  3116.  
  3117.  
  3118.  
  3119.  
  3120.  
  3121.  
  3122.  
  3123.  
  3124.   PAGE 44
  3125.                               ANSI-COBOL 6.50
  3126.                                 USERS MANUAL
  3127.                               COPYWRITE  1990
  3128.  
  3129.  
  3130.                             INPUT-OUTPUT SECTION
  3131.  
  3132.           The "INPUT-OUTPUT SECTION." contains the "FILE-CONTROL." 
  3133.           paragraph, which is coded in column 8, and which is 
  3134.           required if the program uses files. There will be 
  3135.           entries under this paragraph, one for each file used. 
  3136.           Each entry is a SELECT statement that starts in column 
  3137.           12, and may be continued on the next line, and ends with 
  3138.           a period. The format for the SELECT statement is:
  3139.  
  3140.           SELECT data-file-name ASSIGN TO DISK|PRINTER
  3141.              FILE STATUS IS data-name
  3142.              ACCESS MODE IS SEQUENTIAL|RANDOM|DYNAMIC
  3143.              ORGANIZATION IS SEQUENTIAL|LINE 
  3144.           SEQUENTIAL|RELATIVE|INDEXED
  3145.              RECORD KEY IS data-name-2
  3146.              RELATIVE KEY IS data-name-3
  3147.  
  3148.           The following rules apply:
  3149.           1. Use filenames that are self-documenting. In the 
  3150.              example I use EMPLOYEE-ADDRESS-MASTER and EMPLOYEE-
  3151.              ADDRESS-PRINT as file names.
  3152.           2. Use DISK if it is a disk file and PRINTER if it is 
  3153.              the printer.
  3154.           3. The FILE STATUS clause is used for disk files with 
  3155.              relative or indexed file organization, data-name is a 
  3156.              two-character data item that contains the value set 
  3157.              after every I-O statement. The returned values are:
  3158.  
  3159.      FILE STATUS value                    MEANING
  3160.      ______________________________________________
  3161.  
  3162.            00                   SUCCESSFUL COMPLETION
  3163.            10                   END OF FILE
  3164.            21                   KEY NOT IN SEQUENCE(INDEXED)
  3165.            22                   DUPLICATE KEY ON WRITE
  3166.            23                   NO RECORD FOUND
  3167.            24                   DISK FULL
  3168.            30                   HARDWARE ERROR (DISK NOT READY ECT.)
  3169.            91                   FILE STRUCTURED DESTROYED
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.  
  3177.  
  3178.  
  3179.  
  3180.  
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.  
  3187.  
  3188.  
  3189.   PAGE 45
  3190.                               ANSI-COBOL 6.50
  3191.                                 USERS MANUAL
  3192.                               COPYWRITE  1990
  3193.  
  3194.  
  3195.  
  3196.  
  3197.                                    CHAPTER 7
  3198.  
  3199.                             CODING THE DATA DIVISION
  3200.  
  3201.                                   Introduction
  3202.  
  3203.              The data division is where data used in the program 
  3204.              except for literals used in statements are defined.  
  3205.              The data maybe coming from a file will be written to 
  3206.              a file or used in intermediate processing.  It is 
  3207.              important that certain techniques be used so that the 
  3208.              data names can be easily located and read from the 
  3209.              program listing and thus facilitate program 
  3210.              debugging.  It is also important that we select the 
  3211.              proper data format so as to help make the program 
  3212.              more efficient.
  3213.  
  3214.  
  3215.  
  3216.  
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.  
  3242.  
  3243.  
  3244.  
  3245.  
  3246.  
  3247.  
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.   PAGE 46
  3255.                               ANSI-COBOL 6.50
  3256.                                 USERS MANUAL
  3257.                               COPYWRITE  1990
  3258.  
  3259.  
  3260.                                     Sections
  3261.  
  3262.              This division starts with the division header "DATA 
  3263.              DIVISION" that is coded starting in column 8.  There 
  3264.              are 4 optional sections that maybe defined all of 
  3265.              which start with a section header that is coded 
  3266.              starting in column 8.  These sections are "FILE 
  3267.              SECTION", "WORKING-STORAGE SECTION", "LINKAGE 
  3268.              SECTION", "SCREEN SECTION" and must appear in that 
  3269.              order if defined.
  3270.  
  3271.                                   FILE SECTION
  3272.  
  3273.              This section starts with header "FILE SECTION" and 
  3274.              contains one entry for each file defined in the 
  3275.              select statement in the file control paragraph of the 
  3276.              ENVIRONMENT DIVISION.  The file description entry has 
  3277.              the following format.
  3278.  
  3279.              FD file name 
  3280.                 LABEL RECORD | RECORDS IS | ARE OMITTED | STANDARD 
  3281.                 VALUE OF FILE ID IS data name.  
  3282.  
  3283.  
  3284.              The following rules apply:  
  3285.  
  3286.              1) the 2 clauses LABEL RECORDS AND VALUE OF can be in 
  3287.                 any order.  
  3288.              2) the FD "file description" literal is coded in 
  3289.                 column 8, but file name in clauses are coded 
  3290.                 starting in column 12.  
  3291.              3) all file names defined by select statements must 
  3292.                 have a corresponding FD entry and the spelling of 
  3293.                 the file name is naturally identical for both 
  3294.                 entries.
  3295.              4) the LABEL RECORDS must be specified as standard 
  3296.                 for disc files and omitted for printer.  
  3297.              5) the value of file ID clause must be specified for 
  3298.                 disc files and omitted for printer.  It is used by 
  3299.                 DOS for locating the file during the computer run 
  3300.                 and is therefore defined according to the rules 
  3301.                 for file names for DOSS.  It has the format 
  3302.                 DRIVE:FILE NAME.EXTENSION.
  3303.  
  3304.                                FILE RECORD ENTRIES
  3305.  
  3306.           The format for records in each file is coded right after 
  3307.           the corresponding FD entry.  Each record is defined with 
  3308.           an O1 Level with the level number starting in column 8.  
  3309.           The data name itself starts in column 12.  This record 
  3310.           maybe further subdivided into lower level data items or 
  3311.           fields.
  3312.  
  3313.  
  3314.  
  3315.  
  3316.  
  3317.  
  3318.  
  3319.   PAGE 47
  3320.                               ANSI-COBOL 6.50
  3321.                                 USERS MANUAL
  3322.                               COPYWRITE  1990
  3323.  
  3324.  
  3325.                               Data Item Definition
  3326.  
  3327.           The data items coded in various sections of this 
  3328.           division except for those of screen formatting use 
  3329.           similar formats.  The format is:
  3330.  
  3331.           level # data-name  REDEFINES data name.
  3332.           level # data-name             PICTURE | PIC IS picture type
  3333.                                         OCCURS integer TIMES 
  3334.                                         INDEX BY index-name
  3335.                                         USAGE IS usage-type
  3336.                                         VALUE IS literal.  
  3337.  
  3338.           The following rules apply:  
  3339.           1) The level # is 01 if we are defining a record.  A 
  3340.              record here means that either a file record entry at 
  3341.              the file section, a group of data names at the 
  3342.              working storage section or the linkage section or the 
  3343.              format of the whole screen in the screen section.  
  3344.           2) The level # for entries under the 01 range from 02-
  3345.              49.  However it is best to use numbered steps like 
  3346.              05,10,15, etc. so any further changes later on maybe 
  3347.              easily made by using numbers in between.  
  3348.           3) The level number for a condition name entry is 88. 
  3349.              This entry can only have a data name in the value 
  3350.              clause.  
  3351.           4) I suggest that you do not use level 77 which are 
  3352.              independent from other data items.  It is better to 
  3353.              code data names which are used together as groups so 
  3354.              they are easily seen together in the program listing.  
  3355.              This is also used full when you write COBOL for 
  3356.              mainframes because of paging problems in virtual 
  3357.              storage systems.  
  3358.           5) Data name should be defined so that the reader 
  3359.              immediately notices what the data represents just 
  3360.              from it's name.  An example is EMPLOYEE-ADDRESS-
  3361.              MASTER.  
  3362.           6) The redefines clause specifies that the area occupied 
  3363.              by data-name-2 will also contain data-name-1.  It is 
  3364.              often used to provide alternate grouping or 
  3365.              description of the same data item.  If coded it 
  3366.              should be the first clause following data-name-1 and 
  3367.              data-name-2 is a data item coded just ahead of it.  
  3368.           7) Pic or picture specifies the format of the data item 
  3369.              and should be coded only for elementary data items.  
  3370.              The different picture types are the following:
  3371.              a) Alphanumeric.  This applies to a data item which 
  3372.                 may contain alphabet and numeric characters and 
  3373.                 therefore not used in arithmetic operations.  
  3374.                 Picture type is specified with Xs.  A number 
  3375.                 enclosed in parenthesis means a repeat of one 
  3376.                 occurence of an X.  For instance, picXXXXX is 
  3377.                 identical to picX[5].  
  3378.              b) Numeric.  This field contains only numbers and is 
  3379.                 usefful for fields in arithmetic operations. This 
  3380.                 is defined with an S.  If there is a sign 9 is 
  3381.  
  3382.  
  3383.  
  3384.   PAGE 48
  3385.                               ANSI-COBOL 6.50
  3386.                                 USERS MANUAL
  3387.                               COPYWRITE  1990
  3388.  
  3389.  
  3390.                 used for digits and V for the assumed position of 
  3391.                 the decimal point.  This data item has the usage 
  3392.                 display oprand as a default or must have the comp-
  3393.                 0 "binary" or comp-3 "packed decimal" specified.  
  3394.              c) Editing.  This field is used for editing numeric 
  3395.                 fields in preparation for printing them the 
  3396.                 reports. 
  3397.              d) Try to code pic or picture somewhere in column 44 
  3398.                 or 48 or even further to a line off picture 
  3399.                 specification for easy reading.  You will 
  3400.                 generally have enough space on the left for the 
  3401.                 data items and on the right for the other clauses.  
  3402.              e) In this section, file section, the value clause is 
  3403.                 only used for condition names and not data names.  
  3404.              f) Code line seperators as in other divisions.
  3405.  
  3406.  
  3407.  
  3408.  
  3409.  -------------------------------------------------------------------------------
  3410.                              WORKING STORAGE SECTION
  3411.  
  3412.           This section contains data that are mainly used for 
  3413.           intermediate processing such as counters, tables, etc.  
  3414.           This data are generally not directly related to records 
  3415.           and files.  The file record entries under FDs except 
  3416.           where we use the into option of verb or from option of 
  3417.           the write or rewrite verbs.  Coding techniques for this 
  3418.           section is basically identical to those of the file 
  3419.           section except the following:
  3420.           1) The 01 level group item does not correspond to any 
  3421.              record and therefore the programmer may group data 
  3422.              items under it in any way he chooses. He should, 
  3423.              however, try to group data together that are related.  
  3424.           2) The value clause maybe used in this section.
  3425.  
  3426.                                  LINKAGE SECTION
  3427.  
  3428.           This section is used if the program is being called by 
  3429.           another program.  It will contain description of data 
  3430.           items that the called program needs and has the 
  3431.           correspondence to certain data items defined in the 
  3432.           working storage section of the calling program.  This 
  3433.           section will actually not have memory allocated for it, 
  3434.           but will just use the memory allocated to the 
  3435.           corresponding files in the calling program.  Just like 
  3436.           the data items in the file section the value clause 
  3437.           maybe specified only for condition names.
  3438.  
  3439.                                  SCREEN SECTION
  3440.  
  3441.           This section defines format of the screen to be used in 
  3442.           the program for displaying formatted data.  Display or 
  3443.           exhibit verbs or accepting formatted data except verbs.
  3444.  
  3445.  
  3446.  
  3447.  
  3448.  
  3449.   PAGE 49
  3450.                               ANSI-COBOL 6.50
  3451.                                 USERS MANUAL
  3452.                               COPYWRITE  1990
  3453.  
  3454.  
  3455.                           CODING THE PROCEDURE DIVISION
  3456.  
  3457.                                   Introduction
  3458.  
  3459.           This division contains specific instructions that the 
  3460.           programmer wants executed and thus carries logic of the 
  3461.           program.  It is the division that can benefit most from 
  3462.           good programming techniques and it contributes most to 
  3463.           the rehability and efficiency of the program.
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.  
  3506.  
  3507.  
  3508.  
  3509.  
  3510.  
  3511.  
  3512.  
  3513.  
  3514.   PAGE 50
  3515.                               ANSI-COBOL 6.50
  3516.                                 USERS MANUAL
  3517.                               COPYWRITE  1990
  3518.  
  3519.  
  3520.                               Structure Programming
  3521.  
  3522.           This is a technique that grew out of research begun in 
  3523.           the academic community some 30 or 40 years ago.  It's 
  3524.           main aim was to make programs easier to read and thus 
  3525.           understand by having the programmer code them in a 
  3526.           certain style.  One of it's main ideas is to avoid any 
  3527.           GO TO statements since they made the larger quota to 
  3528.           follow.  The unconditional branch caused by each GO TO 
  3529.           disrupts the normal flow of control from a statement to 
  3530.           the one following it.  Some proponents of structure 
  3531.           programmings have expand and redefined this idea to 
  3532.           include many other techniques.  They have not eliminated 
  3533.           GO TOs all together, but just restrict their use to 
  3534.           certain conditions.
  3535.  
  3536.                                Program Constructs
  3537.  
  3538.           Structured programming requires statements follow the 
  3539.           rule of one entry and one exit.  Constructs which 
  3540.           consists of one or more statements must acquire control 
  3541.           starting execution at only one point in a relinquished 
  3542.           control stop execution at only one point.  Reading the 
  3543.           program listing is thus made easier since we know that a 
  3544.           construct will eventually exit at one point.  Any branch 
  3545.           outside of the construct will only be temporary done 
  3546.           through performed verbs.  From this we can conclude that 
  3547.           GO TOs are to be avoided.  GO TOs are supported although 
  3548.           in version 6.50.  Examples of this are MOVE, DISPLAY, 
  3549.           EXHIBIT, etc.  Statements which we simply execute before 
  3550.           proceeding in the next statement.  Let's look at the 
  3551.           following set of statements.  MOVE "ERA 5" TO MESSAGE 
  3552.           005-MESSAGE-CODE.  EXHIBIT NAMED W005-MESSAGE-CODE.  
  3553.           DISPLAY "TEST 01 RUN ABORTED".  You will note that each 
  3554.           statement is simply executed and control flows right 
  3555.           through to the next statement.
  3556.  
  3557.                                 The IF Condition
  3558.  
  3559.           We must understand that statements under the true or 
  3560.           false boxes could be a combination of valid constructs.  
  3561.           The important thing is always is to have one entry point 
  3562.           and one exit thus nested IFs something that may seem 
  3563.           tricky to use are very powerful to the structure 
  3564.           programming.  While confusing if done improperly they 
  3565.           are easy to understand if properly indented. Note that 
  3566.           the constructs start at the IF statement and ends with a 
  3567.           period.  No matter what values of W005-TRANS-HOURS and 
  3568.           W01-HOURS-LIMIT are.  Control will eventually reach the 
  3569.           statement following the construct. Perform until 
  3570.           constructs. The construct governed by the false 
  3571.           condition the performed body will be executed repeatedly 
  3572.           until condition becomes true.  At which time the 
  3573.           apparent original construct exists.  When the constructs 
  3574.           in the performed body must eventually set the condition 
  3575.           true to enable use to exit from the apparent construct 
  3576.  
  3577.  
  3578.  
  3579.   PAGE 51
  3580.                               ANSI-COBOL 6.50
  3581.                                 USERS MANUAL
  3582.                               COPYWRITE  1990
  3583.  
  3584.  
  3585.           otherwise we have it endlessly.
  3586.  
  3587.           Note that the paragraph C200-0-OUT-CELLS will be 
  3588.           executed repeatedly until the value of W05CELLS I is 
  3589.           greater than the value of total stores.  The sentence 
  3590.           statement will cause this to happen at some point in the 
  3591.           construct exits.
  3592.  
  3593.  
  3594.                                Modular Programming
  3595.  
  3596.           One of the developments in structure programming was the 
  3597.           idea of modularizing the program by coding into it's 
  3598.           sections.  This idea is extensively used to COBOL 
  3599.           programs written for mainframes where the use of 
  3600.           advanced features like Sort require it.  It is also 
  3601.           useful and is used in COBOL 6.50.  It is mandatory if 
  3602.           the program is too large for computer memory requiring 
  3603.           it to be segmented.  Secondly you may some day want to 
  3604.           write COBOl programs for mainframes or port the programs 
  3605.           that you have already written over to mainframes and you 
  3606.           would need to know how these sections are used.
  3607.  
  3608.                               The Main Line Section
  3609.  
  3610.           The programs start to execute at the first verb of the 
  3611.           PROCEDURE DIVISION excluding statements and the 
  3612.           declarative section.  It is therefore a good idea to 
  3613.           control the program logic in this area.  It is also the 
  3614.           first part of the program a programmer would look at.  
  3615.           The most common name for this section is C000-MAIN-LINE.  
  3616.           C00 is a prefix which will be described later on.  The 
  3617.           first paragraph of this section as a minimum does the 
  3618.           following:  
  3619.           1) Performs initialization section if any.  This section 
  3620.              will execute the initial routines like read and 
  3621.              attail, accept the date used in processing, etc.  
  3622.           2) Open the files to be used in the section.
  3623.           3) Perform the initial read of the input files.  
  3624.           4) Perform the paragraph that processes the input files 
  3625.              until the end of file perform until.  
  3626.           5) Performs the finalization section if any.  This 
  3627.              section executes a final housekeeping routines like 
  3628.              print control, etc.  
  3629.           6) Close files using the section.  
  3630.           7) Issues a stop run statement.
  3631.  
  3632.                                  Other Sections
  3633.  
  3634.           Sections invogued by the mainline section to the perform 
  3635.           statements are coded in the following matter:  
  3636.           1) The first paragraph the section controls through the 
  3637.              perform statement the processing of the whole 
  3638.              section.  It therefore does the following:  
  3639.              a) opens all files to be processed in the section.  
  3640.              b) performs initial read of the input files.  
  3641.  
  3642.  
  3643.  
  3644.   PAGE 52
  3645.                               ANSI-COBOL 6.50
  3646.                                 USERS MANUAL
  3647.                               COPYWRITE  1990
  3648.  
  3649.  
  3650.              c) performs a paragraph that processes the files 
  3651.                 until all records have been processed.  
  3652.              d) closes all files processed in thesection.  
  3653.              e) exit section.
  3654.  
  3655.  
  3656.  
  3657.                                    Paragraphs
  3658.  
  3659.           Paragraphs that fall under the section are coded as they 
  3660.           are needed.  Each one should only do one function so as 
  3661.           to keep it as simple and as easy to read as possible.  
  3662.           If the paragraph you are currently coding does too many 
  3663.           different functions than you should break it up into 
  3664.           several paragraphs.  Seperate all paragraphs from each 
  3665.           other.  In front of section headers, space and a line 
  3666.           seperator between them.
  3667.  
  3668.                           Prefixes for Procedure Names
  3669.  
  3670.           In much the same manner that the prefixes for data names 
  3671.           make it easier to pinpoint their location in the program 
  3672.           listing section and paragraph name should also have 
  3673.           prefixes.  This task just is to have the prefix 
  3674.           consisting of a letter followed by 3 digit number 
  3675.           followed by hyphen.  You can easily use the letter C for 
  3676.           the first section, F for the second, J for the third, 
  3677.           etc. However you prefer to do it.  And have enough 
  3678.           letters in between for future modifications.  The digits 
  3679.           start with 000 for the section header and incremented by 
  3680.           20 for the paragraphs.  This should give you enough 
  3681.           numbers for the paragraphs in the section.  Otherwise 
  3682.           makes succeeding paragraphs have 4 digit numbers in the 
  3683.           prefix.
  3684.  
  3685.  
  3686.                          Self Documented Procedure Names
  3687.  
  3688.           Just like data names it is important that the procedures 
  3689.           names be self documenting.  You are allowed 30 
  3690.           characters for this procedure names and this is 
  3691.           generally enough to allow the user to understand the 
  3692.           function of the procedure from the name.  A paragraph 
  3693.           name like C200-COMPUTE-GLOSSARY-PAY is much better than 
  3694.           C200-COMPUTE.
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704.  
  3705.  
  3706.  
  3707.  
  3708.  
  3709.   PAGE 53
  3710.                               ANSI-COBOL 6.50
  3711.                                 USERS MANUAL
  3712.                               COPYWRITE  1990
  3713.  
  3714.  
  3715.                            Statements and Sentences
  3716.  
  3717.           The logic in the PROCEDURE DIVISION is coded with 
  3718.           statements each one being sentactically correct 
  3719.           combination of words and symbols thus specifies an 
  3720.           action to be done, ADD, MULTIPLY, MOVE, etc. or a 
  3721.           condition to be tested, IF.  One or more statements that 
  3722.           terminates with a period is called a sentence.  The 
  3723.           following are suggested in coding statements and 
  3724.           sentences:  
  3725.           1) there should only be one statement per line.  
  3726.           2) always start each sentence in column 12.
  3727.           3) if the statement has to be continued in another line 
  3728.              indent the continuation line relative to the start of 
  3729.              the sentence.  
  3730.           4) if a statement is independent of other statements 
  3731.              make it into a sentence ending it with a period. 
  3732.           5) If a statement has several optional clauses code them 
  3733.              in succeeding lines instead of the same line so they 
  3734.              standout better.  They should also be indented 
  3735.              relative to the start of the statement.  
  3736.           6) if you use IFs if subordinate to other IFs than aline 
  3737.              the Ls to the corresponding IF for readability.
  3738.  
  3739.  
  3740.  
  3741.  
  3742.  
  3743.  
  3744.  
  3745.  
  3746.  
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.  
  3755.  
  3756.  
  3757.  
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768.  
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774.   PAGE 54
  3775.                               ANSI-COBOL 6.50
  3776.                                 USERS MANUAL
  3777.                               COPYWRITE  1990
  3778.  
  3779.  
  3780.                                  CHAPTER 9
  3781.                         Screen Processing Format Accept 3
  3782.  
  3783.                                   Introduction
  3784.  
  3785.           One feature of personal computers is of any display unit 
  3786.           which is extensively used to accept data entered by or 
  3787.           displayed for the operator.  Unlike typical COBOL 
  3788.           programs written for mainframes where the datas are 
  3789.           generally batched together by the data entry department 
  3790.           unless a teleprocessing package like CICS is used the 
  3791.           ANSI-STANDARD COBOL 6.50 allows use of format it's 
  3792.           grades for easily input and output of information.  Much 
  3793.           like an online system the operator may enter data via 
  3794.           the keyboard and this maybe immediately used by the 
  3795.           program to add update retrieve for delete records and 
  3796.           files.  We will deal here with the screen processing 
  3797.           based on the format 3 version of the accept verb.  This 
  3798.           allows the processing of individual fields as they are 
  3799.           entered in the keyboard.  Format 4 processing which is 
  3800.           actually simpler to code will be discussed later on.
  3801.  
  3802.  
  3803.  
  3804.  
  3805.  
  3806.  
  3807.  
  3808.  
  3809.  
  3810.  
  3811.  
  3812.  
  3813.  
  3814.  
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.  
  3837.  
  3838.  
  3839.   PAGE 55
  3840.                               ANSI-COBOL 6.50
  3841.                                 USERS MANUAL
  3842.                               COPYWRITE  1990
  3843.  
  3844.  
  3845.  
  3846.  
  3847.                                   Screen Format
  3848.  
  3849.           We will deal only with the IBM Monochrome Display Unit 
  3850.           which is 24 by 80 columns for information.  While there 
  3851.           is a total of 1980 characters that maybe entered the 
  3852.           program generally uses only a portion of this capacity 
  3853.           in applications.
  3854.  
  3855.  
  3856.                              Screen Header or Title
  3857.  
  3858.           A typical screen used will have 3 areas defined.  The 
  3859.           top one are 2 lines will be the header or title and has 
  3860.           literal value that will be indicated to the operator 
  3861.           what he or she is using.  Typically headers would be 
  3862.           "ACCOUNTS RECEIVABLE ENTRY or PAYROLL ENTRY", something to 
  3863.           tell the operator what he is looking at.  The header must 
  3864.           naturally be self defining and is usually defined with 
  3865.           the highlight oprand so it can be easily read.
  3866.  
  3867.                               Application Data Area
  3868.  
  3869.           The main portion of the screen is where the application 
  3870.           data which contains the information entered by the 
  3871.           operator which comes from files.  This consists of 2 
  3872.           types of data.  One is field identifiers which are used 
  3873.           to identify the fields  on the screen.  This has literal 
  3874.           value that will indicate to the operator what he or she 
  3875.           is looking at.  The field identifier is generally coded 
  3876.           just above the data it defines or to it's left in which 
  3877.           case it generally ends with a semicolon.  Some typical 
  3878.           field identifiers have values like "NAME:" to identify 
  3879.           the name field, "DEPT:" for a department number. This 
  3880.           field is generally specified with the HIGHLIGHT operand 
  3881.           so it can be easily seen on the screen.  The data itself 
  3882.           is the information that is important to the operator and 
  3883.           is usually defined with the REVERSE-VIDEO operand so it 
  3884.           is easily differentiated from its field identifier.  
  3885.           Some programmers may prefer to define this with the 
  3886.           HIGHLIGHT operand instead of the REVERSE-VIDEO operand.  
  3887.           In this case, make sure that the identifier does no have 
  3888.           the HIGHLIGHT operand so the two can be differentiated.
  3889.  
  3890.                          THE OPERATOR MESSAGE AREA
  3891.  
  3892.           The operator message area is generally coded at the 
  3893.           bottom of the screen and contains the literal that is 
  3894.           displayed for the operator.  If this message corresponds 
  3895.           to an error, the programmer should define the field with 
  3896.           both the HIGHLIGHT and BLINK operands so it is easily 
  3897.           seen by the operator.  If this message guides the 
  3898.           operator, then it should be defined with either REVERSE-
  3899.           VIDEO (prefered) or HIGHLIGHT operand.
  3900.  
  3901.  
  3902.  
  3903.  
  3904.   PAGE 56
  3905.                               ANSI-COBOL 6.50
  3906.                                 USERS MANUAL
  3907.                               COPYWRITE  1990
  3908.  
  3909.  
  3910.                             THE SCREEN SECTION.
  3911.  
  3912.           While the programmer is able to display or accept 
  3913.           information on the screen without formatting, this has 
  3914.           limited capabilities because only the formatted screen 
  3915.           as defined in the SCREEN SECTION of the DATA DIVISION 
  3916.           will allow the programmer to use aids such as HIGHLIGHT, 
  3917.           REVERSE-VIDEO, FOREGROUND-COLOR, ect.  This is almost 
  3918.           mandatory for typical applications since they require 
  3919.           the entry of several different types of data where a 
  3920.           formatted screen is needed.  The following is 
  3921.           'suggested' rules for coding the SCREEN SECTION:
  3922.  
  3923.              1).  The whole screen corresponds to a 01-level screen-name.
  3924.              2).  The fields on the screen are defined with  level 
  3925.                   02 to 49 just like those in the  WORKING-STORAGE 
  3926.                   SECTION.
  3927.              3).  Each elementary item is defined as follows:
  3928.                   a.  The  level number is specified in  the  same 
  3929.                       manner as in the WORKING-STORAGE SECTION.
  3930.                   b.  Screen-name  is defined if we use the  group 
  3931.                       or  elementary  item in ACCEPT  and  DISPLAY 
  3932.                       statements   in  the   PROCEDURE   DIVISION.  
  3933.                       Therefore, data fields and operator messages 
  3934.                       have   their   corresponding   screen-names.  
  3935.                       Headers   and  field  identifiers   do   not 
  3936.                       normally need screen-names.
  3937.                   c.  BLANK  SCREEN. Is always coded by itself  as 
  3938.                       the  first entry after the  01-level  entry.  
  3939.                       This erases the previous screen before a new 
  3940.                       screen is displayed.
  3941.                   d.  All  elementary  items must  have  the  LINE 
  3942.                       NUMBER  and  COLUMN NUMBER  operands.   This 
  3943.                       specifies  the exact location on the  screen 
  3944.                       that the data-item will start.
  3945.                   e.  The  REVERSE-VIDEO operand is used for  data 
  3946.                       fields,  and is the logical choice for  non-
  3947.                       error initiated operator messages.
  3948.                   f.  The HIGHLIGHT opernad is used for the screen 
  3949.                       headers.  It is the logical choice for field 
  3950.                       identifiers  if the data fields are  defined 
  3951.                       with the REVERSE-VIDEO operand.  It is  also 
  3952.                       the second choice for operator messages that 
  3953.                       are not error-initiated.  The HIGHLIGHT  and 
  3954.                       BLINK  operands  together  is  the   logical 
  3955.                       choice   for  operator  messages  that   are 
  3956.                       displayed on errors.
  3957.                   g.  The BLINK operand, as noted before, is  used 
  3958.                       in  conjunction with the  HIGHLIGHT  operand 
  3959.                       for error-initiated operator messages.
  3960.                   i.  The   FOREGROUND-COLOR  operand   sets   the 
  3961.                       foreground  color,  it should be coded on  a 
  3962.                       line by itself.  It must have an integer  or 
  3963.                       integer   constant  to  specify  the   color 
  3964.                       choice.
  3965.                       0  - BLACK
  3966.  
  3967.  
  3968.  
  3969.   PAGE 57
  3970.                               ANSI-COBOL 6.50
  3971.                                 USERS MANUAL
  3972.                               COPYWRITE  1990
  3973.  
  3974.  
  3975.                       1  - LOW-LEVEL BLUE
  3976.                       2  - LOW-LEVEL GREEN
  3977.                       3  - LOW-LEVEL LIGHT BLUE
  3978.                       4  - LOW-LEVEL RED
  3979.                       5  - LOW-LEVEL MAGENTA
  3980.                       6  - LOW-LEVEL BROWN
  3981.                       7  - LOW-LEVEL WHITE
  3982.                       8  - LOW-LEVEL GRAY        
  3983.                       9  - HIGH-LEVEL BLUE         
  3984.                       10 - HIGH-LEVEL GREEN       
  3985.                       11 - HIGH-LEVEL LIGHT BLUE  
  3986.                       12 - HIGH-LEVEL RED         
  3987.                       13 - HIGH-LEVEL MAGENTA     
  3988.                       14 - HIGH-LEVEL YELLOW      
  3989.                       15 - HIGH-LEVEL WHITE       
  3990.                   j.  The BACKGROUND-COLOR operand is coded as the 
  3991.                       FOREGROUND-COLOR operand with the  exception 
  3992.                       of only the 0 - 9 colors.
  3993.                   k.  The  "VALUE IS literal" operand is used  for 
  3994.                       headers  and field identifiers or any  field 
  3995.                       that must contain an initial value when  the 
  3996.                       screen is displayed.  Data fields  generally 
  3997.                       do  not have this operand because  the  data 
  3998.                       will be what is entered by the operator.
  3999.                   l.  The "PIC IS picture string" operand is  used 
  4000.                       for  data  fields,  the  "FROM",  "TO",  and 
  4001.                       "USING" operands in certain combinations.
  4002.                   m.  For    most   applications,    the    "USING 
  4003.                       identifier" is the most useful.  This  means 
  4004.                       that  the  data item will receive  the  data 
  4005.                       entered be the operator via the ACCEPT  verb 
  4006.                       and  will also be the source of the data  on 
  4007.                       the DISPLAY verb.
  4008.                   n.  The "FROM indentifier" operand will  contain 
  4009.                       data to be displayed on the screen through a 
  4010.                       MOVE  instruction.  This  operand  functions 
  4011.                       only in the DISPLAY mode.
  4012.                   o.  The  "TO  indentifier" operand is  used  for 
  4013.                       data  entry fields.  This operand  functions 
  4014.                       only with the ACCEPT verb.
  4015.  
  4016.                               THE DISPLAY VERB
  4017.  
  4018.           In chapters 3 and 4, I explained the use of the  DISPLAY 
  4019.           verb.   I  will now give a  more  detailed  explanation, 
  4020.           especially on the aspect of the verb that displays  data 
  4021.           on the formatted screens. the format is:
  4022.           
  4023.           DISPLAY screen-name
  4024.           
  4025.           Screen-name  is the same as that defined in  the  SCREEN 
  4026.           SECTION.   The  location on the display where  the  data 
  4027.           items  will  show  is defined in  the  LINE  and  COLUMN 
  4028.           operands of that item.  If you wish you can write to the 
  4029.           screen  location by using the DISPLAY verb.  The  format 
  4030.           is:
  4031.  
  4032.  
  4033.  
  4034.   PAGE 58
  4035.                               ANSI-COBOL 6.50
  4036.                                 USERS MANUAL
  4037.                               COPYWRITE  1990
  4038.  
  4039.  
  4040.  
  4041.           DISPLAY ( ROW, COLUMN )
  4042.   
  4043.                             THE ACCEPT FORMAT 3
  4044.  
  4045.           The format 3 version is:
  4046.  
  4047.           ACCEPT ( position-spec ) identifier WITH AUTO-SKIP
  4048.  
  4049.           The following rules apply:
  4050.  
  4051.           1). Position-spec has the same value as in the DISPLAY verb.
  4052.           2). Identifier is the field that will receive data.
  4053.           3). The  "WITH  AUTO-SKIP" is  useful  for  fixed-length 
  4054.               input  fields.   The input  will  automatically  end 
  4055.               without the operator having to press the enter  key, 
  4056.               when  the length is reached, as defined by  the  PIC 
  4057.               operand.
  4058.           4). The  ACCEPT  ends,  which means we go  to  the  next 
  4059.               following statement, if:
  4060.               a.  A terminator key is hit.  These are ENTER,  TAB, 
  4061.                   BACK-TAB(shift + tab), ESCAPE, and the  Function 
  4062.                   Keys.
  4063.               b.  AUTO-SKIP is specified and the operator  entered 
  4064.                   a  character  in the  low-order(rightmost)  data 
  4065.                   input position.
  4066.  
  4067.                                 PROGRAM LISTING 9.01
  4068.                                 --------------------
  4069.  
  4070.   PROG901 COB                                 13:38:54    03-Sep-90    PAGE   1
  4071.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.50(c)1990.
  4072.  
  4073.     1         IDENTIFICATION DIVISION.
  4074.     2        *
  4075.     3         PROGRAM-ID. PROG901.
  4076.     4        *                                                             *
  4077.     5        ***************************************************************
  4078.     6        *                                                             *
  4079.     7        * 1. DATE-WRITTEN. 08/03/90.                                  *
  4080.     8        *                                                             *
  4081.     9        * 2. THIS PROGRAM ACCEPTS ENTRIES FROM THE CONSOLE DISPLAY    *
  4082.    10        *    AND DISPLAYS THEM ON THE PRINTER. THE FIELDS ARE:        *
  4083.    11        *    A) FIELD 1 - NAME                                        *
  4084.    12        *    B) FIELD 2 - ADDRESS                                     *
  4085.    13        *    C) FIELD 3 - CITY/STATE                                  *
  4086.    14        *                                                             *
  4087.    15        ***************************************************************
  4088.    16        *
  4089.    17        *
  4090.    18         ENVIRONMENT DIVISION.
  4091.    19        *
  4092.    20         CONFIGURATION SECTION.
  4093.    21        *
  4094.    22         SPECIAL-NAMES.
  4095.    23        *
  4096.  
  4097.  
  4098.  
  4099.   PAGE 59
  4100.                               ANSI-COBOL 6.50
  4101.                                 USERS MANUAL
  4102.                               COPYWRITE  1990
  4103.  
  4104.  
  4105.    24             PRINTER IS PRINTER-DISPLAY.
  4106.    25        *
  4107.    26        *
  4108.    27         DATA DIVISION.
  4109.    28        *
  4110.    29        ***************************************************************
  4111.    30        *                                                             *
  4112.    31         WORKING-STORAGE SECTION.
  4113.    32        *                                                             *
  4114.    33        ***************************************************************
  4115.    34        *
  4116.    35        * USES OF W005-KEYBOARD-KEY-SWITCH
  4117.    36        *    ] . F9 KEY -- END OF JOB.
  4118.    37        *
  4119.    38         01  W005-KEYBOARD-KEY-SWITCH        PIC 99.
  4120.    39             88  W005-F9-KEY-ACTIVATED           VALUE 10.
  4121.    40        *
  4122.    41         01  W005-RECORD-ACCEPTED-COUNT      PIC 9(4) VALUE +0.
  4123.    42        *
  4124.    43         01  W010-EMPLOYEE-WK-RECORD.
  4125.    44             05  W010-EMPLOYEE-WK-NAME       PIC X(30).
  4126.    45             05  W010-EMPLOYEE-WK-STREET     PIC X(25).
  4127.    46             05  W010-EMPLOYEE-WK-CITY       PIC X(25).
  4128.  
  4129.   PROG901 COB                                 13:38:54    03-Sep-90    PAGE   2
  4130.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.50(c)1990.
  4131.  
  4132.    47        /
  4133.    48        ***************************************************************
  4134.    49        *                                                             *
  4135.    50         SCREEN SECTION.
  4136.    51        *                                                             *
  4137.    52        ***************************************************************
  4138.    53        *
  4139.    54        *
  4140.    55         01  SCREEN1-ADDRESS-ENTRY.
  4141.    56             05  BLANK SCREEN.
  4142.    57             05  LINE 1  COLUMN 16       VALUE "E M P L O Y E E"
  4143.    58                                         HIGHLIGHT.
  4144.    59             05  LINE 1  COLUMN 35       VALUE "A D D R E S S"
  4145.    60                                         HIGHLIGHT.
  4146.    61             05  LINE 1  COLUMN 52       VALUE "E N T R Y"
  4147.    62                                         HIGHLIGHT.
  4148.    63             05  LINE 3  COLUMN 24       HIGHLIGHT
  4149.    64                                         VALUE "NAME:".
  4150.    65             05  SCREEN1-NAME            LINE 3  COLUMN 30
  4151.    66                                         PIC X(30)
  4152.    67                                         REVERSE-VIDEO
  4153.    68                                         USING W010-EMPLOYEE-WK-NAME.
  4154.    69             05  LINE 5  COLUMN 22       HIGHLIGHT
  4155.    70                                         VALUE "STREET:".
  4156.    71             05  SCREEN1-STREET          LINE 5  COLUMN 30
  4157.    72                                         PIC X(25)
  4158.    73                                         REVERSE-VIDEO
  4159.    74                                         USING W010-EMPLOYEE-WK-STREET.
  4160.    75             05  LINE 7 COLUMN 18        HIGHLIGHT
  4161.  
  4162.  
  4163.  
  4164.   PAGE 60
  4165.                               ANSI-COBOL 6.50
  4166.                                 USERS MANUAL
  4167.                               COPYWRITE  1990
  4168.  
  4169.  
  4170.    76                                         VALUE "CITY/STATE:".
  4171.    77             05  SCREEN1-CITY            LINE 7  COLUMN 30
  4172.    78                                         PIC X(25)
  4173.    79                                         REVERSE-VIDEO
  4174.    80                                         USING W010-EMPLOYEE-WK-CITY.
  4175.  
  4176.   PROG901 COB                                 13:38:54    03-Sep-90    PAGE   3
  4177.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.50(c)1990.
  4178.  
  4179.    81        /
  4180.    82         PROCEDURE DIVISION.
  4181.    83        *
  4182.    84        ***************************************************************
  4183.    85        *                                                             *
  4184.    86         C000-MAIN-LINE SECTION.
  4185.    87        *                                                             *
  4186.    88        ***************************************************************
  4187.    89        *
  4188.    90         C020-MAIN-LINE-LOGIC.
  4189.    91             MOVE 98 TO W005-KEYBOARD-KEY-SWITCH.
  4190.    92             PERFORM C120-DISPLAY-NEW-SCREEN.
  4191.    93             PERFORM C040-PROCESS-NAME-ENTRY
  4192.    94                     THRU C100-PROCESS-SCREEN-EXIT
  4193.    95                     UNTIL W005-F9-KEY-ACTIVATED.
  4194.    96             PERFORM C980-EOJ-ROUTINE.
  4195.    97             STOP RUN.
  4196.    98        *
  4197.    99         C040-PROCESS-NAME-ENTRY.
  4198.   100             ACCEPT ( 3, 30 )
  4199.   101                    W010-EMPLOYEE-WK-NAME.
  4200.   102             ACCEPT W005-KEYBOARD-KEY-SWITCH FROM ESCAPE KEY.
  4201.   103             IF W005-F9-KEY-ACTIVATED
  4202.   104                    GO TO C100-PROCESS-SCREEN-EXIT.
  4203.   105        *
  4204.   106         C060-PROCESS-STREET-ENTRY.
  4205.   107             ACCEPT ( 5, 30 )
  4206.   108                    W010-EMPLOYEE-WK-STREET.
  4207.   109             ACCEPT W005-KEYBOARD-KEY-SWITCH FROM ESCAPE KEY.
  4208.   110             IF W005-F9-KEY-ACTIVATED
  4209.   111                    GO TO C100-PROCESS-SCREEN-EXIT.
  4210.   112        *
  4211.   113         C080-PROCESS-CITY-ENTRY.
  4212.   114             ACCEPT ( 7, 30 )
  4213.   115                    W010-EMPLOYEE-WK-CITY.
  4214.   116             ACCEPT W005-KEYBOARD-KEY-SWITCH FROM ESCAPE KEY.
  4215.   117             IF W005-F9-KEY-ACTIVATED
  4216.   118                    GO TO C100-PROCESS-SCREEN-EXIT.
  4217.   119             EXHIBIT NAMED W010-EMPLOYEE-WK-NAME   UPON PRINTER-DISPLAY.
  4218.   120             EXHIBIT NAMED W010-EMPLOYEE-WK-STREET UPON PRINTER-DISPLAY.
  4219.   121             EXHIBIT NAMED W010-EMPLOYEE-WK-CITY   UPON PRINTER-DISPLAY.
  4220.   122             ADD 1 TO W005-RECORD-ACCEPTED-COUNT.
  4221.   123             PERFORM C120-DISPLAY-NEW-SCREEN.
  4222.   124         C100-PROCESS-SCREEN-EXIT.   EXIT.
  4223.   125        *
  4224.   126         C120-DISPLAY-NEW-SCREEN.
  4225.   127             MOVE  SPACES  TO  W010-EMPLOYEE-WK-NAME
  4226.  
  4227.  
  4228.  
  4229.   PAGE 61
  4230.                               ANSI-COBOL 6.50
  4231.                                 USERS MANUAL
  4232.                               COPYWRITE  1990
  4233.  
  4234.  
  4235.   128                              W010-EMPLOYEE-WK-STREET
  4236.   129                              W010-EMPLOYEE-WK-CITY.
  4237.   130             DISPLAY SCREEN1-ADDRESS-ENTRY.
  4238.  
  4239.   PROG901 COB                                 13:38:54    03-Sep-90    PAGE   4
  4240.   Line Number Source Line   ANSI 74-85 Standard Cobol V.6.50(c)1990.
  4241.  
  4242.   131        /
  4243.   132         C980-EOJ-ROUTINE.
  4244.   133             IF W005-RECORD-ACCEPTED-COUNT  GREATER THAN ZEROS
  4245.   134                  DISPLAY "JOB PROG901: SUCCESSFUL ENTRY COMPLETED"
  4246.   135                                       UPON PRINTER-DISPLAY
  4247.   136             ELSE DISPLAY "JOB PROG901: UNSUCCESSFUL ENTRY"
  4248.   137                                       UPON PRINTER-DISPLAY.
  4249.   138             EXHIBIT NAMED W005-RECORD-ACCEPTED-COUNT
  4250.   139                                       UPON PRINTER-DISPLAY.
  4251.  
  4252.  
  4253.  
  4254.  
  4255.  
  4256.  
  4257.  
  4258.  
  4259.  
  4260.  
  4261.  
  4262.  
  4263.  
  4264.  
  4265.  
  4266.  
  4267.  
  4268.  
  4269.  
  4270.  
  4271.  
  4272.  
  4273.  
  4274.  
  4275.  
  4276.  
  4277.  
  4278.  
  4279.  
  4280.  
  4281.  
  4282.  
  4283.  
  4284.  
  4285.  
  4286.  
  4287.  
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.   PAGE 62
  4295.