REBOL for COBOL programmers

Go to table of contents Go to feedback page
Table of contents

Generalities
Introduction
Reserved words
What you may/must say
Right-to-left evaluation
Programming by side effects
Code is data
The Global Context
Coding REBOL like COBOL
IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
FILE SECTION
WORKING-STORAGE SECTION
SCREEN SECTION
PROCEDURE DIVISION
COPY statement
Printing
Your own mezzanine
Module testers
Module documentation idea
Program structure suggestion
List of all code samples

Some useful equivalencies
ACCEPT
ADD
COMPUTE
DISPLAY
DIVIDE
EXIT
INSPECT
MOVE
MULTIPLY
IF
OCCURS
PERFORM
READ
REMAINDER
ROUNDED
SEARCH
SET
TODAYS-DATE
TIME
VALUE

What's in your head, Boy?
Introduction
Similar but not the same
Colon is not assignment
Be careful defining
A shorter letter
On punctuation
Why so dense?

Doing COBOLish things
Fixed-format file

Sample applications
Introduction
Source code as corporate asset
NACHA list
Introduction
Global services modules
Start writing

WORKING-STORAGE SECTION

Date written: October 3, 2012
Date revised:
Date reviewed:

This explains the REBOL equivalent of the WORKING-STORAGE SECTION (if there is one).


COBOL WORKING-STORAGE SECTION

In COBOL, every variable that is not part of a file must be defined in the WORKING-STORAGE SECTION. Basically, there are two kinds of variables, those that are independent of any others, and those that are part of a structure. For example:

WORKING-STORAGE SECTION.
77  CONSOLE-INPUT     PIC X(100)
01  CUSTOMER-RECORD.
    03  CUSTOMER-ID   PIC X(10).
    03  CUSTOMER-NAME PIC X(30).
We won't go into detail because you know what this is, and this is COBOL-to-REBOL documentation and not the reverse. The point is, you MUST define data names. You can't NOT do it.

The REBOL equivalent

In REBOL, any word is defined at the time it is used, if does not exist already. You do NOT have to pre-define words, it seems to be bad REBOL style to do it, and, because words ARE defined when first referenced, there can be bad effects to pre-defining if you make subtle spelling errors where two words are so close in spelling that you overlook the difference. So there is no REBOL equivalent to the WORKING-STORAGE SECTION.

However, you MAY fake a working storage area. You may fake the pre-defining of words. All you have to do is set a word to an initial value at some convenient place in your script. For example, you could code

;; Working storage
CONSOLE-INPUT: ""
CUSTOMER-ID: ""
CUSTOMER-NAME: ""

Keeping in mind that you are not required to do the above, what would be the reason for doing so? Documentation, organization, come to mind. If you are used to laying out all the data names you will need in your program, it might be comforting to continue to do that. So go ahead. Group all your words in one area of your program and label it as the working storage area. It probably is a little less "efficient," but consider what "efficent" really means. How "efficient" is it if you come back to a program months later and can't find some data item, or remember what it is used for. If "pre-defining" data items by setting them to initial values just so that they can appear in a central, locatable, spot in your program is helpful, why not do it? "Efficiency" in terms of the smallest and fastest program is not some great god. There are other design goals that could be considered more important, like clarity, maintainability.