COBOLプログラマのVisual Basic




  1. SELECT 句は無いの?
  2. 9タイプって?
  3. Xタイプって?
  4. Nタイプは無いの?(富士通の人だけですね)
  5. 集団項目って取れないの?
  6. INITIALIZEに当たるものはないの?
  7. VALUE句はどう書くの?
  8. OCCURSはどう書くの?
  9. MOVE文はどう書くの?
  10. PERFORM UNTILはどう書くの?
  11. PERFORM VARINGはどう書くの?
  12. IF文はどうなるの?
  13. IF文のCONTINUEはどう書くの?
  14. EVALUATE文はどう書くの?
  15. COMPUTE文はどう書くの?

SELECT 句は無いの?

ファイルの属性やキーを指定するような語句はありません。

[このページのTop]


9タイプって?

COBOLでいう数値型ですね。VBでは”数値”という型はありますが、桁数は指定できません。
整数型 (Integer)、長整数型 (Long)、通貨型 (Currency)、単精度浮動小数点数型 (Single)、倍精度浮動小数点数型 (Double)があります。
桁数(範囲)を超える数値を格納すると「オーバーフローしました」とエラーになってしまいます。

整数型    Integer -32,768 〜 32,767 の範囲の整数を表すデータ型
長整数型 Long -2,147,483,648 〜 2,147,483,647の範囲の整数を表すデータ型
通貨型 Currency -922,337,203,685,477.5808 〜 922,337,203,685,477.5807 の範囲のデータ型
単精度浮動小数点型 Single 負の値の場合は-3.402823E38 〜 -1.401298E-45、正の値の場合は、1.401298E-45 〜 3.402823E38 を表す事ができるデータ型
倍精度浮動小数点型 Double 負の値の場合、有効範囲は -1.79769313486232E308 〜 -4.94065645841247E-324。正の値の場合、有効範囲は 4.94065645841247E-324 〜 1.79769313486232E308 を表す事ができるデータ型

[このページのTop]


Xタイプって?

文字を格納するデータ型は「String」(文字列型)です。
この型は桁数を指定する事ができます。

[このページのTop]


Nタイプは無いの?

ありません。String型で表します。

[このページのTop]


集団項目って取れないの?

う〜ん・・・ユーザー定義型はありますけどね、無いと思った方がいいのではないでしょうか。
ユーザー定義型は変数にはあまり使いません(というか使った事無い)、主にファイルの構造定義で使います。

型定義
Public Type Toku_Cd
  sTokucd1 As String * 2
  sTokucd2 As String * 5
  sTokucd3 As String * 1
End Type

Public Type Toku_Rec
  sTokucd As Toku_Cd
  sTokuNm As String * 20
  lUriZan As Long
  lSeiZan As Long
End Type


実際に使う時の変数の取り方
Dim Toku As Toku_Rec

項目の代入の仕方
Toku.sTokuNm = "株式会社○○箪笥"

[このページのTop]


INITIALIZEに当たるものはないの?

ありません。

[このページのTop]


VALUE句はどう書くの?

変数定義時に初期値を持たせてもCOBOLだと後で変更できますが、VBでは変更できません。なんてったって定数宣言なんですから。

Public Const pbc_str = "初期値です"

[このページのTop]


OCCURSはどう書くの?

Dim wk(10) As String
こう書くとwkという変数が0〜10迄の配列で取られます。計11個ですね。0から始まるなんてイヤだ!と言われる方は

Dim wk(1 To 10) As String
としましょう、これで1〜10迄、計10個です。

Dim wk() As String
なんとこんな書き方をしてもOKです。この場合、この変数を使う前に

ReDim wk(10)
として配列数を指定しなければいけません。

[このページのTop]


MOVE文はどう書くの?

MOVE A TO B
COBOLだとAをBへ代入ですね。VBだと

B = A
と位置が反対になります。

[このページのTop]


PERFORM UNTILはどう書くの?

PERFORM UNTIL SW-OK = 1
     ・
     ・
END PERFORM



Do Until sw_ok = 1
     ・
Loop

と書きます。ちなみに後判定は

Do
     ・
Loop Until sw_ok = 1

となります。どちらもループを抜けるにはExit Doを使用します。

[このページのTop]


PERFORM VARINGはどう書くの?

PERFORM VARYING IX1 FROM 1 BY 1
       UNTIL IX1 > 10
          ・
END PERFORM



For ix1 = 1 To 10 Step 1
     ・
Next

と書きます。Stepは省略可能で、デフォルトは”1”です。
ループを抜けるにはExit Forを使用します。

[このページのTop]


IF文はどうなるの?

Thenは強制されます。

大事なのはCOBOLの場合

IF A = 1 OR 2
   ・
END-IF

と書いても A =1 OR A=2 と判定されますが、VBの場合

If A = 1 Or 2 Then
   ・
End if

と書くと A=1 OR 2(2は2であるか?)となってしまいます。2が2である事は当然なので常に真(TRUE)となり、思ったような動作が得られず長い時間悩む事になります。

If A = 1 Or A=2 Then
   ・
End if

と書けばいいのですけどね。

[このページのTop]


IF文のCONTINUEはどう書くの?

何もしないのだから、何もかかないのです。

If A = 1 Or A=2 Then
Else
   ・
End if

[このページのTop]


EVALUATE文はどう書くの?

EVALUATE A
   WHEN 1
   WHEN 2
      処理1
   WHEN 3
      処理2
   WHEN OTHER
      処理3
END-EVALUATE



Select Case A
    Case 1,2
       処理1
    Case 3
       処理2
    Case Else
       処理3
End select

となります。

Select Case A
    Case 1 To 10 '1以上10以下
       処理1
    Case 11 To 20 '11以上20以下
       処理2
    Case Else   '以外
       処理3
End select

と範囲を指定する事もできます。COBOLでいう EVALUATE TRUE ですね。

[このページのTop]


COMPUTE文はどう書くの?

COMPUTEと書かないだけで、数式をそのまま書きます。

COMPUTE A = B + C - D * E / F



A = B + C - D * E / F

となります。

ADD,SUBTRACT,DIVIDE に当たるものは存在しません。

[このページのTop]