今回もPythonの簡単な文法を少しずつ紹介する。
いすれも簡単なものである。
_
■ 代入するだけで変数は自動的に定義される
多くのオープン系開発言語の変数の定義は
演算の始まりにまとめて宣言することが
良い作法とされているが
Pythonは代入したときに自動的に型が
定義されて宣言される。
[例]
SFCTL = 'SFCTL01'
… ‘SFCTL01’という文字列を代入しているのだから
SFCTL という名前の変数も文字として定義される。
[例]
ENDRRN = 1
… ENDRRN という変数に数字1を代入しているのであるから
ENDRRN は数字としてここで定義される。
… このようにPythonでは intや char などの型を覚える必要が
ないので定義も容易である。
式の末尾に;(=セミコロン)や: (=コロン)も . (=ピリオド)も
必要ない。
■ グローバル変数の使用は宣言する
_
[例]
global SFCTL SFCTL = 'SFLCTL01'
… global SFCTL によってSFCTLという変数は
グローバル変数として定義され
SFCTL = ‘SFLCTL01’という文字列の代入によって
SFCTLという変数は文字のグローバル変数として
定義される。
グローバル変数というのはすべての関数で共通して
使える変数のことである。
これに対してグローバル(global)を宣言しなたった
変数はローカル変数として定義される。
ローカル変数とはその関数内だけで有効な変数であって
他の関数からは参照や更新もされないように
保護されている。
RPG IIIやILE-RPGのサブ・ルーチンはローカル変数いう
概念がないのでメイン・ルーチンもサブ・ルーチンも
同じ変数(=フィールド)を参照したり更新したりすることが
できる。
このためメイン・ルーチンで使用している変数(=フィールド)値が
サブ・ルーチンでも重複して更新されてしまったために
バグの発生となる場合が起こっていたが
PythonやILE-RPGのプロシージャー内のローカル変数を定義しておけば
このような初歩的なバグは発生することはない。
■ for-loopは rangeを使って宣言
ろ
[例]
for RRN1 in range(TOPRRN, ENDRRN +1):
….このように TOPRRN から ENDRRN + 1 までの RRN1 によるLOOPを
表すことができるる
もちろんLOOPの終わりはインデント(=段落)で示すので
閉じカッコ(」)などは必要ない。
ただし LOOP文の文末には: (=コロン)が必要である。
これはILE-RPGのフリー・フォーマットのLOOP文に良く似ている。
[ILE-RPGフリー・フォーマット]
FOR RRN1 = TOPRRN TO ENDRRN + 1;
