Adding Source Code and Building the Project

Once you have created a project, you need to add the source files to it and then compile the project. To add a new file to the project:

  1. Select your project in the COBOL Explorer view and click File > New > COBOL Program .

    This starts the New COBOL Program wizard.

  2. In the New file name field, type tictac.cbl.
  3. Click Finish.

    This creates a new COBOL source file from the default template and opens it in the editor. The file is shownin the COBOL Programs category under the project in the COBOL Explorer view..

  4. Copy and paste the following COBOL code into the editor, overwriting the existing text:
           identification division.
               program-id. tictac.
           environment division.
           configuration section.
               source-computer. ibm-pc.
               object-computer. ibm-pc.
           special-names.
               console is crt.
    
           working-storage section.
           01 tictac-00.
            02 tictac-q.
               03 game             pic x(10) value spaces.
               03 filler-0         pic x(70) value spaces.
               03 question         pic x(20) value spaces.
            02 filler.
               03 filler-1         pic x(414) value all spaces.
          *    03 tictac-00-0735   pic x(17) value "7º      8º      9".
               03 tictac-00-0735   pic x(17) value "7|      8|      9".
               03 filler-2         pic x(64) value all spaces.
               03 tictac-00-0836   pic x(09) value "|       |".
               03 filler-3         pic x(71) value all spaces.
               03 tictac-00-0936   pic x(09) value "|       |".
               03 filler-4         pic x(64) value all spaces.
               03 tictac-00-1029 pic x(23) value "-----------------------".
               03 filler-5         pic x(63) value all spaces.
               03 tictac-00-1135   pic x(17) value "4|      5|      6".
               03 filler-6         pic x(64) value all spaces.
               03 tictac-00-1236   pic x(09) value "|       |".
               03 filler-7         pic x(71) value all spaces.
               03 tictac-00-1336   pic x(09) value "|       |".
               03 filler-8         pic x(64) value all spaces.
               03 tictac-00-1429 pic x(23) value "-----------------------".
               03 filler-9         pic x(63) value all spaces.
               03 tictac-00-1535   pic x(17) value "1|      2|      3".
               03 filler-10        pic x(64) value all spaces.
               03 tictac-00-1636   pic x(09) value "|       |".
               03 filler-11        pic x(71) value all spaces.
               03 tictac-00-1736   pic x(09) value "|       |".
               03 filler-12        pic x(595) value all spaces.
           01 entry-array.
               03 entry-char       pic x               occurs 9 times.
           01 check-array.
               03 check            pic s99     comp  occurs 9 times.
           01 xcount               pic 9(2)    comp.
           01 ocount               pic 9(2)    comp.
           01 factor               pic s9(2)   comp.
           01 char                 pic x  value x"9c".
           01 char9 redefines char pic 9.
           01 idx                  pic 9(2)    comp.
           01 result               pic 9(2)    comp.
           01 cursor-pos.
               03 row              pic 9(2)    comp  value 99.
               03 filler           pic 9(2)    comp  value 99.
           01 address-init.
               03 filler           pic 9(4)    value   1732.
               03 filler           pic 9(4)    value   1740.
               03 filler           pic 9(4)    value   1748.
               03 filler           pic 9(4)    value   1332.
               03 filler           pic 9(4)    value   1340.
               03 filler           pic 9(4)    value   1348.
               03 filler           pic 9(4)    value   0932.
               03 filler           pic 9(4)    value   0940.
               03 filler           pic 9(4)    value   0948.
           01 address-array        redefines   address-init.
               03 addr             pic 9(4)    occurs 9 times.
           01 location             pic 9(4).
           01 game-lines value     "147123311113332436978979".
               03 a                pic 9       occurs 8 times.
               03 b                pic 9       occurs 8 times.
               03 c                pic 9       occurs 8 times.
           01 i                    pic 9(2)    comp.
           01 j                    pic 9(2)    comp.
           01 moves                pic 9(2)    comp.
    
           78 clear-screen        value x"e4".
           78 sound-bell          value x"e5".
    
           procedure division.
           play-game section.
           play-1.
               perform with test after
                   until char not = "Y" and char not = "y"
                   call clear-screen
                   
                   display
                       "To select a square type a number between 1 and 9"
                       upon crt
                   perform init
                   move "Shall I start ? " to question
                   perform get-reply
                   if char = "Y" or char = "y"
                         move 10 to check(5)
                       perform put-move
                   end-if
                   perform new-move until game not = spaces
                   move "Play again ?    " to question
                   perform get-reply
               end-perform.
    
           play-stop.
               display space
               stop run.
    
           get-reply section.
               display tictac-q at 0201
               accept char at 0317 with no-echo auto-skip
               move spaces to question
               display tictac-00 at 0201.
    
           init section.
               move "y" to char
               move spaces to entry-array
               move low-values to check-array
               move spaces to game
               move zero to moves.
    
           new-move section.
               perform get-move with test after until char9 not = 0
               perform move-check
               if game not = "stalemate"
                   move low-values to check-array
                   perform check-line varying i from 1 by 1
                                   until i > 8 or game not = spaces
                   if game not = "You win"
                       perform put-move
                   end-if
                   if game = "I win" or game = "You win"
                         perform varying idx from a(j) by b(j)
                                                    until idx > c(j)
                             move addr(idx) to location
                             move entry-char(idx) to char
                             display char at location with blink highlight
                         end-perform
                   end-if
               end-if.
    
           check-line section.
               move zero to xcount,ocount,factor
               perform count-up varying idx from a(i) by b(i)
                                                until idx > c(i)
               if ocount = 0 or xcount = 0
                   evaluate true
                   when ocount = 2
                       if i = 4
                           move 6 to j
                           move zero to xcount,ocount
                           perform count-up varying idx from a(j) by b(j)
                                                    until idx > c(j)
                           if xcount = 3
                               move 6 to i
                           end-if
                       end-if
                       if xcount not = 3
                           move 50 to factor
                           move "I win" to game
                           move i to j
                       end-if
                   when xcount = 2
                       move 20 to factor
                   when ocount = 1
                       move  4 to factor
                   when xcount = 1
                       if entry-char(5) = "x"
                           move  1 to factor
                       else
                           move -1 to factor
                       end-if
                   when ocount = 0
                       if xcount = 0
                           move  2 to factor
                       end-if
                   end-evaluate
               end-if
               if xcount = 3
                   move "You win" to game
                   move i to j
               else
                   perform varying idx from a(i) by b(i) until idx > c(i)
                       if entry-char(idx) = space
                           add factor to check(idx)
                       end-if
                   end-perform
               end-if.
    
           count-up section.
               if entry-char(idx) = "X"        add 1 to xcount
               else if entry-char(idx) = "O"   add 1 to ocount.
    
           put-move section.
               move zero to idx
               move -99 to factor
               perform find-pos varying i from 1 by 1 until i > 9
               move "O" to entry-char(idx)
               perform move-check.
    
           move-check section.
               move addr(idx) to location
               move entry-char(idx) to char
               display char at location
               add 1 to moves
               if moves > 8 and game = spaces
                   move "stalemate" to game
               end-if.
    
           find-pos section.
               if entry-char(5) = space
                   move check(5) to factor
                   move 5 to idx
               else
                   if check(i) not < factor and entry-char(i) = space
                       move check(i) to factor
                       move i to idx
                   end-if
               end-if.
    
           get-move section.
               display "Please select an empty square" at 0201
               move 0 to char9
               accept char9 at 0231 with auto-skip
               if char9 = 0
                   call sound-bell
               else
                   move char9 to idx
                   if entry-char(idx) = space
                       move "X" to entry-char(idx)
                   else
                       move 0 to char9
                       call sound-bell
                   end-if
               end-if.
  5. Click File > Save. By default, Eclipse is configured to build projects automatically. If this option has been changed, to manually start a build, select the project in the COBOL Explorer view and click Project > Build Project.
The progress of the project build is displayed in the Console view.

Building the project creates a new folder in your project - New_Configuration.bin. Expand the folder in the COBOL Explorer view to see the executable and the .o (UNIX) files.