2016-05-16 3 views
0

Я пытаюсь написать модуль COBOL и имеющий некоторые переменные в этом файле тоже:Как использовать раздел LINKAGE SECTION и WORKING-STORAGE SECTION в том же файле?

IDENTIFICATION DIVISION. 
    PROGRAM-ID. UTIL. 

    DATA DIVISION. 
    LINKAGE SECTION. 
    01 MY_VAR PIC X(100). 

    DATA DIVISION. 
    WORKING-STORAGE SECTION. 
    01 RESULT PIC X(200) value SPACES. 

    PROCEDURE DIVISION USING MY_VAR. 
     STRING INPUT DELIMITED BY SPACE 
       ' ' DELIMITED BY SIZE 
       MY_VAR BY SPACE 
     INTO RESULT 
     DISPLAY RESULT 
    EXIT PROGRAM. 

Для входного аргумента (MY_VAR) я использую LINKAGE SECTION. Я не уверен, как использовать оператор WORKING-STORAGE SECTION для объявления переменной RESULT.

Как я могу это сделать?

+0

Да, есть до четырех подразделений, которые, если они используются, должны быть уникальными в программе. Тогда есть РАЗДЕЛЫ. Для тех, кто не является именем пользователя, т.е. ничего перед заголовком PROCEDURE DIVISION, порядок важен. Хорошо, что касается компиляции программы. –

+0

@BillWoodger True. Большое спасибо. Я написал крошечный модуль COBOL для выполнения [JS/Node.js в COBOL] (https://github.com/IonicaBizau/node.cobol). : D –

+0

@ IonicăBizău http://www.tutorialspoint.com/cobol/cobol_program_structure.htm Имеет некоторую информацию о некоторых разделах в разделах – Thraydor

ответ

4

У вас должно быть 1 Отдел данных. Кроме того, я думаю, что порядок не подходит для Раздела. Я советую посмотреть некоторые документы Cobol перед кодированием.

 IDENTIFICATION DIVISION. 
    PROGRAM-ID. UTIL. 

    DATA DIVISION. 

    WORKING-STORAGE SECTION. 
    01 RESULT PIC X(200) value SPACES. 

    LINKAGE SECTION. 
    01 MY_VAR PIC X(100). 



    PROCEDURE DIVISION USING MY_VAR. 
     STRING INPUT DELIMITED BY SPACE 
       ' ' DELIMITED BY SIZE 
       MY_VAR BY SPACE 
     INTO RESULT 
     DISPLAY RESULT 
    EXIT PROGRAM. 
+0

Я пробовал что-то подобное, но я не знал, что порядок важен. :-) –

+0

Я только что увидел статью о Ars Technica и передумал, что я видел ваше имя где-то в эти дни. Фелиситари дин Бухарест! – bmakos

+0

О, спасибо! : D Не говорите мне, что вы разработчик COBOL! Salutări din Bihor :-) –

0

Вы используете программу Cobol на мейнфрейме ПК? Если на ПК - какую программу Cobol вы используете? Если вы используете раздел привязки, первые 2 байта определяют длину переменной. Кроме того - я не вижу определения переменной INPUT, если INPUT не является некоторой командой Cobol (не распознанной на компьютерах мейнфреймов).

Правильный синтаксис (на ЭВМ) является:

LINKAGE SECTION. 
    01 link-parms. 
     05 LNK-PARM-LENGTH   PIC S9999 COMP. 
     05 MY_VAR PIC X(100). 

    PROCEDURE DIVISION USING MY_VAR. 
     STRING INPUT DELIMITED BY SPACE 
       ' ' DELIMITED BY SIZE 
       MY_VAR BY SPACE 
     INTO RESULT 
     DISPLAY RESULT 
     STOP RUN. 
+1

Вы правы в 'INPUT', неверном в отношении длины поля. Это (на мэйнфрейме) справедливо только для программы, инициированной z/OS с помощью команды «EXEC PGM = ...», где любое значение в «PARM» доступно в разделе LINKAGE SECTION, как вы потом описываете. Это не относится к какому-либо другому элементу LINKAGE SECTION, если это не задокументировано. –