0

NATURAL プログラムでいくつかの命令を 1 行に結合したいと考えています。ちょうどこのような :

**before
    Statement1
    Statement2
    Statement3
 **after
    Statemen1 statement2 statement3

ほとんどの言語でこれが簡単にできることは知っていますが、Natural でそれが可能かどうかはわかりません。

4

2 に答える 2

3

この言語には、ステートメントを 1 行にまとめることを妨げる制限はありません。たとえば、これはプログラム全体を 1 行にまとめたものです。

DEFINE DATA LOCAL 1 #A (A10) END-DEFINE MOVE 'XX' TO #A WRITE #A END

しかし、それは実際に読んで楽しいものではなく、すべての言語に当てはまります。次の人がコードを保守しなければならないことを覚えておいてください。

于 2016-06-14T17:42:04.007 に答える
1

ダグラス・ベイダー、イギリスのフライング・エースなどは、
「ルールは賢者の導きと愚か者の服従のためのものである」 と言っていると引用され ています

.いくつかの有用なルールがあります。そのうちの 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

お役に立てば幸いです。

于 2021-02-28T09:10:28.553 に答える