COBOL 中数字和字符串的布尔值

Pin*_*oud 3 cobol boolean

大多数编程语言将任何非零数字和非空白字符串视为 true。我想知道 COBOL 是否也这样做?

示例 1: (9 && 2) 被识别 (true && true),因此返回 true 示例 2: ("" && "Hello") 被识别 (false && true),因此返回 false

谢谢!

Bru*_*tin 6

Cobol不像其他语言那样有布尔值,而是有 88 个级别。88级可应用于其他类型。它们涵盖了其他语言中的布尔值和枚举。

基本布尔88级

你可以做

    05 Filler              pix x value 'N'.
       88 end-of-file value 'Y'.
       88 more-date-in-file value 'N'


    perform until   end-of-file
        ...

        read Transaction-File
         at end set end-of-file    to True
   end-perform
Run Code Online (Sandbox Code Playgroud)

基本枚举88级

  03 Transaction-Code                pic s9(4) comp-3.
     88 Purchase-Transaction value    1000, 1001, 1005 thru 1009.
     88 Sales-Transaction    value    2000, 2010, 2020.
     88 Price-Adjustment     value    2050.
     88 Transfer-Transaction value    1050.



  evaluate true
     when Purchase-Transaction
       ...
     when Sales-Transaction    
       ...
Run Code Online (Sandbox Code Playgroud)

概括

88 个级别提供基本布尔变量(但没有布尔代数)。它们还允许您记录变量可以采用的可能值及其含义。

88 个级别是Cobol更好的功能之一,尤其是在与文件一起使用时。它允许您准确定义文件中的字段可以具有哪些值。在Java等中,您可以定义常量,但不能将常量链接到变量。您可以使用枚举,但这需要额外的代码并且仅限于一个值。当然,文件不再像以前那么重要了。