2015-03-16 1 views
0

У меня есть массив из 5 элементов, и каждый из элементов содержит символ. Я хочу принять ввод пользователя в одной строке. Например: ABCDE. И я предполагаю, что элемент 1 массива должен иметь A и элемент 2 массива, чтобы иметь B и т. Д. Может ли кто-нибудь помочь с этим? Я приложил соответствующие части кода ниже:Есть ли способ автоматически заполнить массив после получения ввода пользователем?

environment division. 
input-output section. 
file-control. 
    select standard-input assign to keyboard. 
    select standard-output assign to display. 

data division. 
file section. 
fd standard-input. 
    01 stdin-record pic x(80). 
fd standard-output. 
    01 stdout-record pic x(80). 

working-storage section. 

    01 input-area. 
     02 inputCharacters pic x(1) occurs 5 times. 

    01 print-line. 
     02 inputCharacters pic x(1) occurs 5 times. 

procedure division. 
    open input standard-input, output standard-output. 

     read standard-input into input-area 
      at end 
      close standard-input, standard-output 
     end-read. 

     write 
      stdout-record from print-line after advancing 5 line 
     end-write 

    stop run. 

ответ

0
MOVE input-area TO print-line 

Для кода у вас есть, вы могли бы также сделать это:

write 
     stdout-record from input-area after advancing 5 line 
    end-write 

Если вам не нужны две копии table (COBOL на самом деле не имеет «массивов» в том виде, в котором вы, вероятно, привыкли), тогда нет двух копий.

Если у вас есть две таблицы, я бы предложил сделать имена элементов разными. Если вы этого не сделаете, вы сделаете все более жестким, если будете использовать «квалификацию», чтобы сделать ссылки уникальными.

MOVE inputCharacters (1) OF input-area 
        TO inputCharacters (1) OF print-line 

Вместо

MOVE inputCharacters (1) 
        TO outputCharacters (1) 

Если вы не возражаете квалификации самостоятельно, вы можете обнаружить, что коллеги или будущие Сопровождающие ненавидят.

Я не совсем уверен, что вы хотите, чтобы это произошло с этим:

read standard-input into input-area 
     at end 
     close standard-input, standard-output 
    end-read. 

Вы только сделать один read, вы будете только вы получите at end, когда нет никаких данных (независимо от того, что означает, что с keyboard) , В этом случае у вас нет данных для чего-либо.

Вы должны посмотреть, как использовать FILE STATUS для каждого файла. Проверьте поле статуса файла после каждого ввода-вывода, и я также рекомендую использовать поле статуса файла для проверки конца файла, а не громоздкую AT END.

Однако, как я уже сказал, я не знаю, что это значит, что с клавиатурой ... так что, возможно, что не будет работать :-)

+0

Но делает мое чтение прочитать все 5 символов вошли и каждые из них делают заказ в один элемент? Вы знаете, как это возможно? – Benjer

+1

Если пользователь ввел ABCDE, а затем нажал Return, то символы ввода (1) должны быть A, (2) должны быть B и т. Д. Если они сделали A, Return, B, Return и т. Д., То Нет (1) будет иметь A, а остальное будет (вероятно) быть пространством. Не можете ли вы поэкспериментировать и ответить самим? –