0

我想在我的 NATURAL 程序的一行中加入一些说明。像这样 :

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

我知道在大多数语言中这很容易做到,但我不确定在 Natural 中是否可行。

4

2 回答 2

3

语言中没有任何限制可以防止将语句放在一行。例如,这是一行中的整个程序。

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

但是,这确实不好玩,并且适用于所有语言。对于必须维护代码的下一个人,请记住这一点。

于 2016-06-14T17:42:04.007 回答
1

引用英国飞行王牌道格拉斯·巴德 (Douglas Bader) 和其他人的话说
“规则是为了智者的指导和傻瓜的服从”

我总是说:
“唯一永远有效的规则是没有规则永远有效”

在编程中,我们有许多有用的规则,其中之一是:
“每个语句都换行”
......遵循这句格言是明智的,但也有例外。
有时,您实际上可以通过打破规则来提高代码的可读性。

这是一个示例(用 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 回答