From 390b17f4a8098d18440f232c92ca02d82ef9afb8 Mon Sep 17 00:00:00 2001 From: Boris Verkhovskiy Date: Thu, 13 Feb 2025 10:33:34 -0500 Subject: [PATCH] [cobol] proofread --- cobol.md | 249 +++++++++++++++++++++++++------------------------ zh-cn/cobol.md | 6 +- 2 files changed, 130 insertions(+), 125 deletions(-) diff --git a/cobol.md b/cobol.md index c5953c3332..c69528ba80 100644 --- a/cobol.md +++ b/cobol.md @@ -2,15 +2,15 @@ name: COBOL contributors: - ["Hyphz", "http://github.com/hyphz/"] -filename: learn.COB +filename: learn.cob --- -COBOL is a business-oriented language revised multiple times since its original design in 1960. It is claimed to still be used in over 80% of -organizations. + +COBOL is a business-oriented language revised multiple times since its original design in 1960. ```cobol - *COBOL. Coding like it's 1985. + *COBOL. Coding like it's 1985. *Compiles with GnuCOBOL in OpenCobolIDE 4.7.6. - + *COBOL has significant differences between legacy (COBOL-85) *and modern (COBOL-2002 and COBOL-2014) versions. *Legacy versions require columns 1-6 to be blank (they are used @@ -26,7 +26,7 @@ organizations. *it is still common to use all caps when writing COBOL code. *This is what most professional COBOL developers do. *COBOL statements end with a period. - + *COBOL code is broken up into 4 divisions. *Those divisions, in order, are: *IDENTIFICATION DIVISION. @@ -35,8 +35,9 @@ organizations. *PROCEDURE DIVISION. *First, we must give our program an ID. - *Identification division can include other values too, - *but they are comments only. Program-id is the only one that is mandatory. + *The IDENTIFICATION DIVISION can include other values too, + *but they are comments only. PROGRAM-ID is the only one that + *is mandatory. IDENTIFICATION DIVISION. PROGRAM-ID. LEARN. AUTHOR. JOHN DOE. @@ -44,149 +45,153 @@ organizations. *Let's declare some variables. *We do this in the WORKING-STORAGE section within the DATA DIVISION. - *Each data item (aka variable) starts with a level number, - *then the name of the item, followed by a picture clause + *Each data item (aka variable) starts with a level number, + *then the name of the item, followed by a PICTURE clause *describing the type of data that the variable will contain. *Almost every COBOL programmer will abbreviate PICTURE as PIC. *A is for alphabetic, X is for alphanumeric, and 9 is for numeric. - + *example: - 01 MYNAME PIC xxxxxxxxxx. *> A 10 character string. - - *But counting all those x's can lead to errors, - *so the above code can, and should - *be re-written as: - 01 MYNAME PIC X(10). - + 01 MYNAME PIC XXXXXXXXXX. *> A 10 character string. + + *But counting all those Xs can lead to errors, + *so the above code can be re-written as + 01 MYNAME PIC X(10). + *Here are some more examples: - 01 AGE PIC 9(3). *> A number up to 3 digits. - 01 LAST_NAME PIC X(10). *> A string up to 10 characters. - - *In COBOL, multiple spaces are the same as a single space, so it is common - *to use multiple spaces to line up your code so that it is easier for other - *coders to read. - 01 inyear picture s9(7). *> S makes number signed. - *> Brackets indicate 7 repeats of 9, - *> ie a 6 digit number (not an array). + 01 AGE PICTURE 9(3). *> A number up to 3 digits. + 01 BIRTH_YEAR PIC S9(7). *> A signed number up to 7 digits. + 01 LAST_NAME PIC X(10). *> A string up to 10 characters. + + *In COBOL, multiple spaces are the same as a single space, so it + *is common to use multiple spaces to line up your code so that it + *is easier for other coders to read. + *Now let's write some code. Here is a simple, Hello World program. - IDENTIFICATION DIVISION. - PROGRAM-ID. HELLO. - DATA DIVISION. - WORKING-STORAGE SECTION. - 01 THE-MESSAGE PIC X(20). - PROCEDURE DIVISION. - DISPLAY "STARTING PROGRAM". - MOVE "HELLO WORLD" TO THE-MESSAGE. - DISPLAY THE-MESSAGE. - STOP RUN. - + IDENTIFICATION DIVISION. + PROGRAM-ID. HELLO. + DATA DIVISION. + WORKING-STORAGE SECTION. + 01 THE-MESSAGE PIC X(20). + PROCEDURE DIVISION. + DISPLAY "STARTING PROGRAM". + MOVE "HELLO WORLD" TO THE-MESSAGE. + DISPLAY THE-MESSAGE. + STOP RUN. + *The above code will output: *STARTING PROGRAM *HELLO WORLD - - + + ********COBOL can perform math*************** - ADD 1 TO AGE GIVING NEW-AGE. - SUBTRACT 1 FROM COUNT. - DIVIDE VAR-1 INTO VAR-2 GIVING VAR-3. - COMPUTE TOTAL-COUNT = COUNT1 PLUS COUNT2. - - + ADD 1 TO AGE GIVING NEW-AGE. + SUBTRACT 1 FROM COUNT. + DIVIDE VAR-1 INTO VAR-2 GIVING VAR-3. + COMPUTE TOTAL-COUNT = COUNT1 PLUS COUNT2. + + *********PERFORM******************** - *The PERFORM keyword allows you to jump to another specified section of the code, - *and then to return to the next executable - *statement once the specified section of code is completed. + *The PERFORM keyword allows you to jump to another specified + *section of the code, and then to return to the next executable + *statement once the specified section of code is completed. *You must write the full word, PERFORM, you cannot abbreviate it. - IDENTIFICATION DIVISION. - PROGRAM-ID. HELLOCOBOL. - - PROCEDURE DIVISION. - FIRST-PARA. - DISPLAY 'THIS IS IN FIRST-PARA'. - PERFORM THIRD-PARA THRU FOURTH-PARA. *>skip second-para and perform 3rd & 4th - *> then after performing third and fourth, - *> return here and continue the program until STOP RUN. - - SECOND-PARA. - DISPLAY 'THIS IS IN SECOND-PARA'. - STOP RUN. - - THIRD-PARA. - DISPLAY 'THIS IS IN THIRD-PARA'. - - FOURTH-PARA. - DISPLAY 'THIS IS IN FOURTH-PARA'. - - - *When you compile and execute the above program, it produces the following result: - THIS IS IN FIRST-PARA - THIS IS IN THIRD-PARA - THIS IS IN FOURTH-PARA - THIS IS IN SECOND-PARA - - + IDENTIFICATION DIVISION. + PROGRAM-ID. HELLOCOBOL. + + PROCEDURE DIVISION. + FIRST-PARA. + DISPLAY 'THIS IS IN FIRST-PARA'. + *skip SECOND-PARA and perform 3rd & 4th + *then after performing THIRD-PARA and FOURTH-PARA, + *return here and continue the program until STOP RUN. + PERFORM THIRD-PARA THRU FOURTH-PARA. + + SECOND-PARA. + DISPLAY 'THIS IS IN SECOND-PARA'. + + STOP RUN. + + THIRD-PARA. + DISPLAY 'THIS IS IN THIRD-PARA'. + + FOURTH-PARA. + DISPLAY 'THIS IS IN FOURTH-PARA'. + + + *When you compile and execute the above program, it produces the + *following result (note the order): + *THIS IS IN FIRST-PARA + *THIS IS IN THIRD-PARA + *THIS IS IN FOURTH-PARA + *THIS IS IN SECOND-PARA + + **********Combining variables together using STRING *********** - - *Now it is time to learn about two related COBOL verbs: string and unstring. - - *The string verb is used to concatenate, or put together, two or more strings. - *Unstring is used, not surprisingly, to separate a - *string into two or more smaller strings. - *It is important that you remember to use ‘delimited by’ when you - *are using string or unstring in your program. - - IDENTIFICATION DIVISION. - PROGRAM-ID. LEARNING. - ENVIRONMENT DIVISION. - DATA DIVISION. - WORKING-STORAGE SECTION. - 01 FULL-NAME PIC X(20). - 01 FIRST-NAME PIC X(13) VALUE "BOB GIBBERISH". - 01 LAST-NAME PIC X(5) VALUE "COBB". - PROCEDURE DIVISION. - STRING FIRST-NAME DELIMITED BY SPACE - " " - LAST-NAME DELIMITED BY SIZE - INTO FULL-NAME - END-STRING. - DISPLAY "THE FULL NAME IS: "FULL-NAME. - STOP RUN. + *Now it is time to learn about two related COBOL verbs: STRING and + *UNSTRING. - *The above code will output: - THE FULL NAME IS: BOB COBB + *The STRING verb is used to concatenate, or put together, two or + *more strings. + *UNSTRING is used, not surprisingly, to separate a + *string into two or more smaller strings. + *It is important that you remember to use DELIMITED BY when you + *are using STRING or UNSTRING in your program. + IDENTIFICATION DIVISION. + PROGRAM-ID. LEARNING. + ENVIRONMENT DIVISION. + DATA DIVISION. + WORKING-STORAGE SECTION. + 01 FULL-NAME PIC X(20). + 01 FIRST-NAME PIC X(13) VALUE "BOB GIBBERISH". + 01 LAST-NAME PIC X(5) VALUE "COBB". + PROCEDURE DIVISION. + STRING FIRST-NAME DELIMITED BY SPACE + " " + LAST-NAME DELIMITED BY SIZE + INTO FULL-NAME + END-STRING. + DISPLAY "THE FULL NAME IS: "FULL-NAME. + STOP RUN. - *Let’s examine it to see why. - *First, we declared all of our variables, including the one that we are creating - *by the string command, in the DATA DIVISION. + *The above code will output: + *THE FULL NAME IS: BOB COBB - *The action takes place down in the PROCEDURE DIVISION. - *We start with the STRING keyword and end with END-STRING. In between we - *list what we want to combine together into the larger, master variable. - *Here, we are combining FIRST-NAME, a space, and LAST-NAME. - *The DELIMITED BY phrase that follows FIRST-NAME and - *LAST-NAME tells the program how much of each variable we want to capture. - *DELIMITED BY SPACE tells the program to start at the beginning, - *and capture the variable until it runs into a space. - *DELIMITED BY SIZE tells the program to capture the full size of the variable. - *Since we have DELIMITED BY SPACE after FIRST-NAME, the GIBBERISH part is ignored. + *Let's examine it to see why. - *To make this clearer, change line 10 in the above code to: + *First, we declared all of our variables, including the one that + *we are creating by the string command, in the DATA DIVISION. - STRING FIRST-NAME DELIMITED BY SIZE + *The action takes place down in the PROCEDURE DIVISION. + *We start with the STRING keyword and end with END-STRING. In + *between we list what we want to combine together into the larger, + *master variable. Here, we are combining FIRST-NAME, a space, and + *LAST-NAME. - *and then re-run the program. This time the output is: + *The DELIMITED BY phrase that follows FIRST-NAME and + *LAST-NAME tells the program how much of each variable we want to + *capture. + *DELIMITED BY SPACE tells the program to start at the beginning, + *and capture the variable until it runs into a space. + *DELIMITED BY SIZE tells the program to capture the full size of + *the variable. + *Since we have DELIMITED BY SPACE after FIRST-NAME, the GIBBERISH + *part is ignored. - THE FULL NAME IS: BOB GIBBERISH COBB + *To make this clearer, change line 10 in the above code to + STRING FIRST-NAME DELIMITED BY SIZE + *and then re-run the program. This time the output is: + *THE FULL NAME IS: BOB GIBBERISH COBB ``` ## Further reading -* [GnuCOBOL](https://sourceforge.net/projects/open-cobol/) +* [GnuCOBOL](https://gnucobol.sourceforge.io/) diff --git a/zh-cn/cobol.md b/zh-cn/cobol.md index b5e5f13059..ce49b61027 100644 --- a/zh-cn/cobol.md +++ b/zh-cn/cobol.md @@ -4,7 +4,8 @@ contributors: translators: - ["GOLGO11", "https://github.com/GOLGO11/"] --- -COBOL是一门面向商业的语言,它从1960年最初设计以来被修订过数次。它被宣称仍然有超过80%的机构在使用它。 + +COBOL是一门面向商业的语言,它从1960年最初设计以来被修订过数次。 ```cobol *COBOL. 最好是按照它1985年的标准来编程。 @@ -179,5 +180,4 @@ COBOL是一门面向商业的语言,它从1960年最初设计以来被修订 ## 想了解更多吗? -* [GnuCOBOL](https://sourceforge.net/projects/open-cobol/) - +* [GnuCOBOL](https://gnucobol.sourceforge.io/)