私は現在 COBOL を学んでいて、88 型の変数が本当に好きです。別の言語 (C や Objective-C などのほとんどの既知の言語) でそれらのようなものがあるかどうか、ライブラリを使用していても知りたいです。
私が似ていると思うことができる唯一のことは、
#define booleanResult (variableName==95)
ただし、値として 95を設定boolenResult
しtrue
て想定させることはできません。variableName
私は現在 COBOL を学んでいて、88 型の変数が本当に好きです。別の言語 (C や Objective-C などのほとんどの既知の言語) でそれらのようなものがあるかどうか、ライブラリを使用していても知りたいです。
私が似ていると思うことができる唯一のことは、
#define booleanResult (variableName==95)
ただし、値として 95を設定boolenResult
しtrue
て想定させることはできません。variableName
私の最初のプログラミング言語は 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
他の人が言ったように、オブジェクトプログラミングだけです。これはより強力ですが、はるかにエレガントではありません。お気に入り :
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レベルに固有のものですが.