Credit to devdocs.io
Back
Forward
Menu
Home
Clear search
gnu_cobol
API Mirror
gnu_cobol
33
1. Introduction
1. Introduction
1.1. Additional Reference Sources
1.2. Introducing COBOL
1.2.1. Why YOU Should Learn COBOL
1.2.2. Programmer Productivity
1.3. So What is GnuCOBOL?
1.3.1. Language Reserved Words
1.3.2. User-Defined Words
1.3.3. Case Insensitivity
1.3.4. Readability of Programs
1.3.5. Divisions Organize Programs
1.3.6. Copybooks
1.3.7. Structured Data
1.3.8. Files
1.3.9. Table Handling
1.3.10. Sorting and Merging Data
1.3.11. String Manipulation Features
1.3.12. Screen Formatting Features
1.3.12.1. A Sample Screen
1.3.12.2. Color Palette and Video Attributes
1.3.13. Report Writer Features
1.3.14. Data Initialization
1.3.15. Syntax Diagram Conventions
1.3.16. Format of Program Source Lines
1.3.17. Program Structure
1.3.18. Comments
1.3.19. Literals
1.3.19.1. Numeric Literals
1.3.19.2. Alphanumeric Literals
1.3.19.3. Figurative Constants
1.3.20. Punctuation
1.3.21. LENGTH OF
1.3.22. Interfacing to Other Environments
15
2. CDF - Compiler Directing Facility
2. CDF - Compiler Directing Facility
2.1. >>CALL-CONVENTION
2.2. COPY
2.3. REPLACE
2.4. >>DEFINE
2.5. >>IF
2.6. >>SET
2.7. >>SOURCE
2.8. >>TURN
2.9. >>D
2.10. >>DISPLAY
2.11. >>PAGE
2.12. >>LISTING
2.13. >>LEAP-SECONDS
2.14. * Directives
1
3. IDENTIFICATION DIVISION
3. IDENTIFICATION DIVISION
18
4. ENVIRONMENT DIVISION
4. ENVIRONMENT DIVISION
4.1. CONFIGURATION SECTION
4.1.1. SOURCE-COMPUTER
4.1.2. OBJECT-COMPUTER
4.1.3. SPECIAL-NAMES
4.1.3.1. Alphabet-Name-Clause
4.1.3.2. Class-Definition-Clause
4.1.3.3. Switch-Definition-Clause
4.1.3.4. Symbolic-Characters-Clause
4.1.4. REPOSITORY
4.2. INPUT-OUTPUT SECTION
4.2.1. SELECT
4.2.1.1. ORGANIZATION SEQUENTIAL
4.2.1.2. ORGANIZATION LINE SEQUENTIAL
4.2.1.3. ORGANIZATION RELATIVE
4.2.1.4. ORGANIZATION INDEXED
4.2.2. SAME RECORD AREA
4.2.3. MULTIPLE FILE
70
5. DATA DIVISION
5. DATA DIVISION
5.1. Data Definition Principles
5.2. FILE SECTION
5.2.1. File/Sort-Description
5.2.2. FILE-SECTION-Data-Item
5.3. WORKING-STORAGE SECTION
5.4. LOCAL-STORAGE SECTION
5.5. LINKAGE SECTION
5.6. REPORT SECTION
5.6.1. Report Group Definitions
5.6.2. REPORT SECTION Data Items
5.7. SCREEN SECTION
5.8. Special Data Items
5.8.1. 01-Level Constants
5.8.2. 66-Level Data Items
5.8.3. 77-Level Data Items
5.8.4. 78-Level Data Items
5.8.5. 88-Level Data Items
5.9. Data Description Clauses
5.9.1. ANY LENGTH
5.9.2. AUTO
5.9.3. AUTO-SKIP
5.9.4. AUTOTERMINATE
5.9.5. BACKGROUND-COLOR
5.9.6. BASED
5.9.7. BEEP
5.9.8. BELL
5.9.9. BLANK
5.9.10. BLANK WHEN ZERO
5.9.11. BLINK
5.9.12. COLUMN
5.9.13. CONSTANT
5.9.14. EMPTY-CHECK
5.9.15. ERASE
5.9.16. EXTERNAL
5.9.17. FALSE
5.9.18. FOREGROUND-COLOR
5.9.19. FROM
5.9.20. FULL
5.9.21. GLOBAL
5.9.22. GROUP INDICATE
5.9.23. HIGHLIGHT
5.9.24. JUSTIFIED
5.9.25. LEFTLINE
5.9.26. LENGTH-CHECK
5.9.27. LINE
5.9.28. LOWLIGHT
5.9.29. NEXT GROUP
5.9.30. NO-ECHO
5.9.31. OCCURS
5.9.32. OVERLINE
5.9.33. PICTURE
5.9.34. PRESENT WHEN
5.9.35. PROMPT
5.9.36. PROTECTED
5.9.37. REDEFINES
5.9.38. RENAMES
5.9.39. REQUIRED
5.9.40. REVERSE-VIDEO
5.9.41. SECURE
5.9.42. SIGN IS
5.9.43. SOURCE
5.9.44. SUM OF
5.9.45. SYNCRONIZED
5.9.46. TO
5.9.47. TYPE
5.9.48. UNDERLINE
5.9.49. USAGE
5.9.50. USING
5.9.51. VALUE
217
6. PROCEDURE DIVISION
6. PROCEDURE DIVISION
6.1. PROCEDURE DIVISION USING
6.2. PROCEDURE DIVISION CHAINING
6.3. PROCEDURE DIVISION RETURNING
6.4. PROCEDURE DIVISION Sections and Paragraphs
6.5. DECLARATIVES
6.6. Table References
6.7. Qualification of Data Names
6.8. Reference Modifiers
6.9. Arithmetic Expressions
6.10. Conditional Expressions
6.10.1. Condition Names
6.10.2. Class Conditions
6.10.3. Sign Conditions
6.10.4. Switch-Status Conditions
6.10.5. Relation Conditions
6.10.6. Combined Conditions
6.10.7. Negated Conditions
6.11. Use of Periods
6.12. Use of VERB/END-VERB Constructs
6.13. Concurrent Access to Files
6.13.1. File Sharing
6.13.2. Record Locking
6.14. Common Clauses on Executable Statements
6.14.1. AT END + NOT AT END
6.14.2. CORRESPONDING
6.14.3. INVALID KEY + NOT INVALID KEY
6.14.4. ON EXCEPTION + NOT ON EXCEPTION
6.14.5. ON OVERFLOW + NOT ON OVERFLOW
6.14.6. ON SIZE ERROR + NOT ON SIZE ERROR
6.14.7. ROUNDED
6.15. Special Registers
6.16. Intrinsic Functions
6.16.1. ABS
6.16.2. ACOS
6.16.3. ANNUITY
6.16.4. ASIN
6.16.5. ATAN
6.16.6. BYTE-LENGTH
6.16.7. CHAR
6.16.8. COMBINED-DATETIME
6.16.9. CONCATENATE
6.16.10. COS
6.16.11. CURRENCY-SYMBOL
6.16.12. CURRENT-DATE
6.16.13. DATE-OF-INTEGER
6.16.14. DATE-TO-YYYYMMDD
6.16.15. DAY-OF-INTEGER
6.16.16. DAY-TO-YYYYDDD
6.16.17. E
6.16.18. EXCEPTION-FILE
6.16.19. EXCEPTION-LOCATION
6.16.20. EXCEPTION-STATEMENT
6.16.21. EXCEPTION-STATUS
6.16.22. EXP
6.16.23. EXP10
6.16.24. FACTORIAL
6.16.25. FRACTION-PART
6.16.26. HIGHEST-ALGEBRAIC
6.16.27. INTEGER
6.16.28. INTEGER-OF-DATE
6.16.29. INTEGER-OF-DAY
6.16.30. INTEGER-PART
6.16.31. LENGTH
6.16.32. LENGTH-AN
6.16.33. LOCALE-COMPARE
6.16.34. LOCALE-DATE
6.16.35. LOCALE-TIME
6.16.36. LOCALE-TIME-FROM-SECONDS
6.16.37. LOG
6.16.38. LOG10
6.16.39. LOWER-CASE
6.16.40. LOWEST-ALGEBRAIC
6.16.41. MAX
6.16.42. MEAN
6.16.43. MEDIAN
6.16.44. MIDRANGE
6.16.45. MIN
6.16.46. MOD
6.16.47. MODULE-CALLER-ID
6.16.48. MODULE-DATE
6.16.49. MODULE-FORMATTED-DATE
6.16.50. MODULE-ID
6.16.52. MODULE-SOURCE
6.16.53. MODULE-TIME
6.16.54. MONETARY-DECIMAL-POINT
6.16.55. MODULE-PATH
6.16.55. MONETARY-THOUSANDS-SEPARATOR
6.16.56. NUMERIC-DECIMAL-POINT
6.16.57. NUMERIC-THOUSANDS-SEPARATOR
6.16.58. NUMVAL
6.16.59. NUMVAL-C
6.16.60. NUMVAL-F
6.16.61. ORD
6.16.62. ORD-MAX
6.16.63. ORD-MIN
6.16.64. PI
6.16.65. PRESENT-VALUE
6.16.66. RANDOM
6.16.67. RANGE
6.16.68. REM
6.16.69. REVERSE
6.16.70. SECONDS-FROM-FORMATTED-TIME
6.16.71. SECONDS-PAST-MIDNIGHT
6.16.72. SIGN
6.16.73. SIN
6.16.74. SQRT
6.16.75. STANDARD-DEVIATION
6.16.76. STORED-CHAR-LENGTH
6.16.77. SUBSTITUTE
6.16.78. SUBSTITUTE-CASE
6.16.79. SUM
6.16.80. TAN
6.16.81. TEST-DATE-YYYYMMDD
6.16.82. TEST-DAY-YYYYDDD
6.16.83. TEST-NUMVAL
6.16.84. TEST-NUMVAL-C
6.16.85. TEST-NUMVAL-F
6.16.86. TRIM
6.16.87. UPPER-CASE
6.16.88. VARIANCE
6.16.89. WHEN-COMPILED
6.16.90. YEAR-TO-YYYY
6.17. GnuCOBOL Statements
6.17.1. ACCEPT
6.17.1.1. ACCEPT FROM CONSOLE
6.17.1.2. ACCEPT FROM COMMAND-LINE
6.17.1.3. ACCEPT FROM ENVIRONMENT
6.17.1.4. ACCEPT screen-data-item
6.17.1.5. ACCEPT FROM DATE/TIME
6.17.1.6. ACCEPT FROM Screen-Info
6.17.1.7. ACCEPT FROM Runtime-Info
6.17.1.8. ACCEPT OMITTED
6.17.1.9. ACCEPT FROM EXCEPTION-STATUS
6.17.2. ADD
6.17.2.1. ADD TO
6.17.2.2. ADD GIVING
6.17.2.3. ADD CORRESPONDING
6.17.3. ALLOCATE
6.17.4. ALTER
6.17.5. CALL
6.17.6. CANCEL
6.17.7. CLOSE
6.17.8. COMMIT
6.17.9. COMPUTE
6.17.10. CONTINUE
6.17.11. DELETE
6.17.12. DISPLAY
6.17.12.1. DISPLAY UPON device
6.17.12.2. DISPLAY UPON COMMAND-LINE
6.17.12.3. DISPLAY UPON ENVIRONMENT-NAME
6.17.12.4. DISPLAY screen-data-item
6.17.13. DIVIDE
6.17.13.1. DIVIDE INTO
6.17.13.2. DIVIDE INTO GIVING
6.17.13.3. DIVIDE BY GIVING
6.17.14. ENTRY
6.17.15. EVALUATE
6.17.16. EXIT
6.17.17. FREE
6.17.18. GENERATE
6.17.19. GOBACK
6.17.20. GO TO
6.17.20.1. Simple GO TO
6.17.20.2. GO TO DEPENDING ON
6.17.21. IF
6.17.22. INITIALIZE
6.17.23. INITIATE
6.17.24. INSPECT
6.17.25. MERGE
6.17.26. MOVE
6.17.26.1. Simple MOVE
6.17.26.2. MOVE CORRESPONDING
6.17.27. MULTIPLY
6.17.27.1. MULTIPLY BY
6.17.27.2. MULTIPLY GIVING
6.17.28. OPEN
6.17.29. PERFORM
6.17.29.1. Procedural PERFORM
6.17.29.2. Inline PERFORM
6.17.29.3. VARYING
6.17.30. READ
6.17.30.1. Sequential READ
6.17.30.2. Random READ
6.17.31. READY TRACE
6.17.32. RELEASE
6.17.33. RESET TRACE
6.17.34. RETURN
6.17.35. REWRITE
6.17.36. ROLLBACK
6.17.37. SEARCH
6.17.38. SEARCH ALL
6.17.39. SET
6.17.39.1. SET ENVIRONMENT
6.17.39.2. SET Program-Pointer
6.17.39.3. SET ADDRESS
6.17.39.4. SET Index
6.17.39.5. SET UP/DOWN
6.17.39.6. SET Condition Name
6.17.39.7. SET Switch
6.17.39.8. SET ATTRIBUTE
6.17.40. SORT
6.17.40.1. File-Based SORT
6.17.40.2. Table SORT
6.17.41. START
6.17.42. STOP
6.17.43. STRING
6.17.44. SUBTRACT
6.17.44.1. SUBTRACT FROM
6.17.44.2. SUBTRACT GIVING
6.17.44.3. SUBTRACT CORRESPONDING
6.17.45. SUPPRESS
6.17.46. TERMINATE
6.17.47. TRANSFORM
6.17.48. UNLOCK
6.17.49. UNSTRING
6.17.50. WRITE
12
7. Report Writer Usage Notes
7. Report Writer Usage Notes
7.1. RWCS Lexicon
7.2. The Anatomy of a Report
7.3. The Anatomy of a Report Page
7.4. How RWCS Builds Report Pages
7.5. Control Hierarchy
7.6. An Example
7.6.1. Data
7.6.2. Program
7.6.3. Generated Report Pages
7.7. Control Hierarchy (Revisited)
7.8. Turning PHYSICAL Page Formatting Into LOGICAL Formatting
70
8. Interfacing With The OS
8. Interfacing With The OS
8.1. Compiling Programs
8.1.1. cobc - The GnuCOBOL Compiler
8.1.2. Compilation Time Environment Variables
8.1.3. Predefined Compilation Variables
8.1.4. Locating Copybooks
8.1.5. Compiler Configuration Files
8.2. Running Programs
8.2.1. Direct Execution
8.2.2. Executing Dynamically-Loadable Libraries
8.2.2.1. cobcrun - Command-line Execution
8.2.2.2. Dynamically Loaded Subprograms
8.2.3. Run Time Environment Variables
8.2.4. Program Arguments
8.3. Built-In System Subroutines
8.3.1. C$CALLEDBY
8.3.2. C$CHDIR
8.3.3. C$COPY
8.3.4. C$DELETE
8.3.5. C$FILEINFO
8.3.6. C$GETPID
8.3.7. C$JUSTIFY
8.3.8. C$MAKEDIR
8.3.9. C$NARG
8.3.10. C$PARAMSIZE
8.3.11. C$PRINTABLE
8.3.12. C$SLEEP
8.3.13. C$TOLOWER
8.3.14. C$TOUPPER
8.3.15. CBL_AND
8.3.16. CBL_CHANGE_DIR
8.3.17. CBL_CHECK_FILE_EXIST
8.3.18. CBL_CLOSE_FILE
8.3.19. CBL_COPY_FILE
8.3.20. CBL_CREATE_DIR
8.3.21. CBL_CREATE_FILE
8.3.22. CBL_DELETE_DIR
8.3.23. CBL_DELETE_FILE
8.3.24. CBL_EQ
8.3.25. CBL_ERROR_PROC
8.3.26. CBL_EXIT_PROC
8.3.27. CBL_FLUSH_FILE
8.3.28. CBL_GC_FORK
8.3.29. CBL_GC_GETOPT
8.3.30. CBL_GC_HOSTED
8.3.31. CBL_GC_NANOSLEEP
8.3.32. CBL_GC_PRINTABLE
8.3.33. CBL_GC_WAITPID
8.3.34. CBL_GET_CSR_POS
8.3.35. CBL_GET_CURRENT_DIR
8.3.36. CBL_GET_SCR_SIZE
8.3.37. CBL_IMP
8.3.38. CBL_NIMP
8.3.39. CBL_NOR
8.3.40. CBL_NOT
8.3.42. CBL_OPEN_FILE
8.3.43. CBL_OR
8.3.44. CBL_READ_FILE
8.3.45. CBL_RENAME_FILE
8.3.46. CBL_TOLOWER
8.3.47. CBL_TOUPPER
8.3.48. CBL_WRITE_FILE
8.3.49. CBL_XOR
8.3.50. SYSTEM
8.3.51. X"91"
8.3.52. X"E4"
8.3.53. X"E5"
8.3.54. X"F4"
8.3.55. X"F5"
8.4. Binary Truncation
21
9. Sub-Programming
9. Sub-Programming
9.1. Subprogram Types
9.2. Independent vs Contained vs Nested Subprograms
9.3. Alternate Entry Points
9.4. Dynamic vs Static Subprograms
9.5. Subprogram Execution Flow
9.5.1. Subprogram Arguments
9.5.1. Subroutine Execution Flow
9.5.2. User-Defined Function Execution Flow
9.6. Sharing Data Between Calling and Called Programs
9.6.1.1. Calling Program Considerations
9.6.1.2. Called Program Considerations
9.6.2. GLOBAL Data Items
9.6.3. EXTERNAL Data Items
9.7. Recursive Subprograms
9.8. Combining GnuCOBOL and C Programs
9.8.1. GnuCOBOL Run-Time Library Requirements
9.8.2. String Allocation Differences Between GnuCOBOL and C
9.8.3. Matching C Data Types with GnuCOBOL USAGE’s
9.8.4. GnuCOBOL Main Programs CALLing C Subprograms
9.8.5. C Main Programs Calling GnuCOBOL Subprograms
7
10. Programming Style Suggestions
10. Programming Style Suggestions
10.1. Marking Changes in Programs
10.2. Data Item Coding and Naming Conventions
10.3. Table Subscripting versus Table Indexing
10.4. Copybook Naming Conventions and Usage
10.5. PROCEDURE DIVISION Sections Versus Paragraphs
10.6. COMPUTE Versus ADD-SUBTRACT-MULTIPLY-DIVIDE
2
Appendices
Appendix A - Glossary of Terms
Appendix B - Reserved Word List
gnu_cobol
1. Introduction
2. CDF - Compiler Directing Facility
3. IDENTIFICATION DIVISION
4. ENVIRONMENT DIVISION
5. DATA DIVISION
6. PROCEDURE DIVISION
7. Report Writer Usage Notes
8. Interfacing With The OS
9. Sub-Programming
10. Programming Style Suggestions
Appendices
Stackoverflow
Slideshare
Speakerdeck