我想知道如果任何人都可以给我嵌套IF在COBOL语句解释点裁决。 例:
*The first if statement*
IF SUCCESSFUL-STATUS
PERFORM 8300-REPL-LNNTBI00
THRU 8300-REPL-LNNTBI00-EXIT
*The second if statement*
IF SUCCESSFUL-STATUS
DISPLAY 'RECORD ALREADY UPDATED :' WS-INF-REC
ELSE
DISPLAY 'UPDATE ERROR : ' WS-INF-REC ' / '
WS-RETURN-STATUS
READ INFILE INTO WS-INF-REC.
这if语句不放在“WS-INF-REC”后点属于哪一种? 第一IF或第二IF-ELSE? 我知道,在大多数编程,这应该是最后的if语句,但只是为了确保,是同为COBOL?
句点字符“” 所有的if语句结束。 请记住,间隔由编译器忽略这样因此READ语句是第二个IF语句的ELSE的一部分。
我们人类希望看到的逻辑所使用的压痕。 而且,如果是我,我会做到底,如果的是明确的。 我往往有每个段落一个周期:
* The first if statement *
IF SUCCESSFUL-STATUS
PERFORM 8300-REPL-LNNTBI00
THRU 8300-REPL-LNNTBI00-EXIT
* The second if statement*
IF SUCCESSFUL-STATUS
DISPLAY 'RECORD ALREADY UPDATED :' WS-INF-REC
ELSE
DISPLAY 'UPDATE ERROR : ' WS-INF-REC ' / '
WS-RETURN-STATUS
READ INFILE INTO WS-INF-REC
END-IF
END-IF
.
AFAIR一段时间总是关闭所有的语句前面-无论它们是否是IF
, PERFORM
或什么-所以你的情况下,第一IF
语句来关闭为好。 而且,由于时间是如此之小,容易被忽视我使用以下规则:
避免使用期间,他们是邪恶的!
只有把在那里严格的语法规则需要和其他地方一段时间。 使用明确的范围,终止样END-IF
或END-PERFORM
。 他们使你的代码更易读,结构清晰,同时期容易产生因为多次关闭和其藏匿在普通视图中的习惯的混乱。
这是非常糟糕的,很古老的Cobol,但如何它的行为是这样的:
*The first if statement*
IF SUCCESSFUL-STATUS
PERFORM 8300-REPL-LNNTBI00
THRU 8300-REPL-LNNTBI00-EXIT
*The second if statement*
IF SUCCESSFUL-STATUS
DISPLAY 'RECORD ALREADY UPDATED :' WS-INF-REC
ELSE
DISPLAY 'UPDATE ERROR : ' WS-INF-REC ' / ' WS-RETURN-STATUS
READ INFILE INTO WS-INF-REC
END-IF ## from period
END-IF ## from period