4

私は現在 COBOL を学んでいて、88 型の変数が本当に好きです。別の言語 (C や Objective-C などのほとんどの既知の言語) でそれらのようなものがあるかどうか、ライブラリを使用していても知りたいです。

私が似ていると思うことができる唯一のことは、

#define booleanResult (variableName==95) 

ただし、値として 95を設定boolenResulttrueて想定させることはできません。variableName

4

4 に答える 4

2

私の最初のプログラミング言語は Cobol でした。現在は c# を使用しています。Cobol の 88 レベルに対する私のソリューションは次のとおりです。

コボルで:

01  ws-valid-countries pic xx.
    88  valid-country 'US', 'UK' 'HK'.

move ws-country  to ws-valid-countries

if  valid-country
    perform...

C#で

string[] ValidCountries = {"US","UK","HK"} ;

if ( ValidCountries.Contains(newCountry.Trim().ToUpper())  )
{
   // do something
于 2015-04-29T14:07:06.877 に答える
-1

他の人が言ったように、オブジェクトプログラミングだけです。これはより強力ですが、はるかにエレガントではありません。お気に入り :

01  MY-DATASET.
    05  MY-DEPARTEMENT PIC 9(2).
        88  ILE-DE-FRANCE VALUES 75, 77, 78, 91 THRU 95.

MyDataset という名前のクラスの古い VBA で大まかに翻訳できます。

Public MyDepartement As Integer
Property Get IleDeFrance() As Boolean
    Dim MyArray() As Variant
    MyArray = Array(75, 77, 78, 91, 92, 93, 94, 95)
    IleDeFrance = UBound(Filter(MyArray, MyDepartement, True)) > -1
End Property

(テストしたばかりで、VBA-excel2013で動作します)そして、VBAを可能な限りシンプルにしました。部門番号のクリーンなゲッターやセッターはなく、公開データだけです。クラスはデータとそれらに対するコード化されたアクションのデポであるため、内部では単純な 88 レベルよりも多くのことができます (これがおそらく、この機能がより現代的な言語に対応できなかった理由です)。ただし、複雑さと読みやすさが犠牲になります。

配列を明確に定義する必要があり、配列内の存在のテストも指定する必要があるため、洗練されていません。それは素晴らしい88レベルに固有のものですが.

于 2015-12-08T15:29:59.803 に答える