Sayantan Sur, Добро пожаловать в переполнение стека.Приятно знать, что вы решили свой вопрос и разместили их в качестве ответов.Вам не нужно публиковать 2 ответа, когда вы можете edit
1-й ответ для любых обновлений / улучшений / оптимизированных решений.Параметр edit
находится чуть ниже вашего ответа, между share
и flag
.
Что касается вашего вопроса, у вас может быть только одна петля PERFORM
для печати шаблона звездочек.Пожалуйста, посмотрите на следующий код.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-OUT PIC X(80) VALUE SPACES.
01 WS-I PIC 9(2) VALUE 0.
01 WS-N PIC 9(2) VALUE 5.
01 WS-CENTER PIC 9(2) VALUE 1.
PROCEDURE DIVISION.
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > WS-N
MOVE ALL '*' TO WS-OUT(WS-CENTER:WS-I)
DISPLAY WS-OUT
END-PERFORM.
STOP RUN.
Примечание: В приведенном выше фрагменте кода я не включил шаги для ввода данных во время выполнения.Вместо этого я использовал предложение VALUE
, чтобы назначить ввод для WS-N
.
В качестве альтернативы вы также можете использовать следующий код.Спасибо Рику Смиту за ценные предложения.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-OUT PIC X(10) VALUE ALL '*'.
01 WS-I PIC 9(2) VALUE 0.
01 WS-N PIC 9(2) VALUE 5.
01 WS-CENTER PIC 9(2) VALUE 1.
PROCEDURE DIVISION.
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > WS-N
DISPLAY WS-OUT(WS-CENTER:WS-I)
END-PERFORM.
STOP RUN.
Вывод: Оба кода дают следующий вывод.
*
**
***
****
*****
Вы можете попробовать запустить код здесь .