NATURAL プログラムでいくつかの命令を 1 行に結合したいと考えています。ちょうどこのような :
**before
Statement1
Statement2
Statement3
**after
Statemen1 statement2 statement3
ほとんどの言語でこれが簡単にできることは知っていますが、Natural でそれが可能かどうかはわかりません。
NATURAL プログラムでいくつかの命令を 1 行に結合したいと考えています。ちょうどこのような :
**before
Statement1
Statement2
Statement3
**after
Statemen1 statement2 statement3
ほとんどの言語でこれが簡単にできることは知っていますが、Natural でそれが可能かどうかはわかりません。
この言語には、ステートメントを 1 行にまとめることを妨げる制限はありません。たとえば、これはプログラム全体を 1 行にまとめたものです。
DEFINE DATA LOCAL 1 #A (A10) END-DEFINE MOVE 'XX' TO #A WRITE #A END
しかし、それは実際に読んで楽しいものではなく、すべての言語に当てはまります。次の人がコードを保守しなければならないことを覚えておいてください。
ダグラス・ベイダー、イギリスのフライング・エースなどは、
「ルールは賢者の導きと愚か者の服従のためのものである」
と言っていると引用され
ています
.いくつかの有用なルールがあります。そのうちの 1 つは、「すべてのステートメントを新しい行に」という
ものです ...そして、その格言に従うのが賢明ですが、例外もあります。
場合によっては、ルールを破ることで実際にコードの可読性を向上させることができます。
以下に例を示します (Natural で記述)。
define data
local 1 DATE-FROM (D) /* (D=Natural Date-Format)
1 DATE-TO (D)
end-define
DATE-FROM := *DatX /* System Variable = "Today"
DATE-TO := DATE-FROM + 1
perform P800-WRITE-DATE
DATE-FROM := DATE-TO
DATE-TO := DATE-FROM + 2
perform P800-WRITE-DATE
DATE-FROM := DATE-TO
DATE-TO := DATE-FROM + 3
perform P800-WRITE-DATE
DATE-FROM := DATE-TO
DATE-TO := DATE-FROM + 4
perform P800-WRITE-DATE
define subroutine P800-WRITE-DATE
write DATE-FROM(em=DD.MM.YYYY)
DATE-TO (em=DD.MM.YYYY)
end-subroutine
END
さて、私は次のようにその実行ビットを書きます:
DATE-FROM := *DatX DATE-TO := DATE-FROM + 1 perform P800-WRITE-DATE
DATE-FROM := DATE-TO DATE-TO := DATE-FROM + 2 perform P800-WRITE-DATE
DATE-FROM := DATE-TO DATE-TO := DATE-FROM + 3 perform P800-WRITE-DATE
DATE-FROM := DATE-TO DATE-TO := DATE-FROM + 4 perform P800-WRITE-DATE
理解、タイプミスの発見、品質の提供がはるかに簡単になります。
今日の出力は次のとおりです。
28.02.2021 01.03.2021
01.03.2021 03.03.2021
03.03.2021 06.03.2021
06.03.2021 10.03.2021
元の質問に戻り
ます。Natural では、ステートメントを「;」で終了できます。しかし、それは必要ではありません。以下は完全に有効です。
DATE-FROM := *DatX ; DATE-TO := DATE-FROM + 1 ; perform P800-WRITE-DATE;
DATE-FROM := DATE-TO ; DATE-TO := DATE-FROM + 2 ; perform P800-WRITE-DATE;
DATE-FROM := DATE-TO ; DATE-TO := DATE-FROM + 3 ; perform P800-WRITE-DATE;
DATE-FROM := DATE-TO ; DATE-TO := DATE-FROM + 4 ; perform P800-WRITE-DATE;
私たちがそれに取り組んでいる間、別の小さな入力支援は継続文字 "-" です。これは元々、次の行でリテラルを継続するために考案されましたが、読みやすさを向上させるためにも使用できます。
define data
local 1 DATE-A8 (a8)
end-define
DATE-A8 := '20211231'
DATE-A8 := '2021' - '12' - '31'
DATE-A8 := '2021'
- '12'
- '31'
END
お役に立てば幸いです。