Pythonの特徴的な文法を少し紹介する。
いずれも簡単なものである。
あるRPG IIIだけの経験者がPythonでIBM iのWeb開発をした実例がある。
Pythonの文法はそれほど簡単である。
この講座で数回、説明するだけでほとんどの人が Pythonのソースを
書けるようになるだろう。
_
(1) Pythonはインデント(=段落)に意味がある
Pythonの最大の言語としての特徴はインデント(=段落)が
文法として大きな意味を持つことである。
簡単に言えば他の言語の カッコ({)~閉じカッコ(}) までを
段落した記述で示すだけである。
つまり条件の部分を段落(=字下げ)して表現することに
決められている。
例えば ILE-RPGフリー・フォーマットの
IF N > 0;
N = N + 1;
ENDIF;
C言語であれば
if (N > 0){
N = N + 1;
}
という記述はPythonでは
IF N > 0;
N = N + 1
だけになる。
ENDIF も閉じカッコもない。
さて RPG III以外のどの開発言語でもインデント(=段落)によって
if文などの条件文や LOOP文を示すことが多いが
インデントはあくまで任意であって必須ではない。
しかしPythonの場合は if文やwhileなどの文で
インデント(=段落)は必須であり文法上の意味を持つ。
C言語のように { }(=カッコ)でif文の内容を示すのではなく
インデントによってif文の中身を示すことになる。
カッコで囲む代わりにインデントで条件分岐を示している。
これがPythonの文法の最大の特徴である。
これがわかってしまえば Pythonの文法の8割はわかったも
同然である。インデントする桁数に指定はなく見やすいと思われる桁数文の
インデント(=字下げ)をすればよい。
[例]
(1) if not DSPHEAD.SHCODE.Chain(SHOHIN):
continue
… もし表示レコード: DSPHEAD のフィールド: SHCODE で
商品マスター(SHOHIN)にChainしてレコードが見つからなければ(not)
処理を続行する。(continue)
(2) while True:
SHOHIN.SHSCOD.Chain(HINSHU)
DSPDTA01.HNSNAM = HINSHUR.HNSNAM
DSPDTA01.Exfmt() # 明細レコード画面を表示
… while True は永続LOOPであり SHOHIN.SHSCOD.Chain(HINSHU)以下の
演算を永続的に繰り返す。while文内に breakがあれば
処理はそこで終了する。
…このようにPythonではインデントが文法上、必須であるので
誰が書いてもインデントされた見やすいソースになる。
RPG III や固定記入式のILE-RPGではインデントができないので
非常に見にくいソースとなってしまう。
かと言ってもフリー・フォーマットでインデントはできるが
必須ではない。
プログラマーによってはフリー・フォーマットでも
インデントしないで記述する可能性があるが
Pythonではインデントは必須なので必ずインデントされた
ソースが出来上がることになる。
これによって誰が見ても見やすいソースが出来上がることになる。
(2) IF に対するENDIFは要らない。
_
(1)の例でわかるように ifに対するendifや while に対する } (=閉じカッコ)など
必要ない。
while の終了した次の命令は外側はwhileと同じ桁位置に書くだけで
それがwhileの次の命令であると解釈される。
…このようにPythonでは ENDIF や ENDDOが不要であるので
ENDxxの記入誤りが発生することはない。
(3) 文末にコロンやセミコロンは要らない
ILE-RPGフリー・フォーマットでは文末にセミコロン(;)が
必要であるし C言語の文末にもセミコロン(;)が必要である。
COBOLでは長い文末の最後にピリオド(.)が必要であるが
Pythonでは文末を示す記号は何も要らない。
改行することが文の終わりと見なされる。
(4) ただし条件分岐にはコロン(:)が必要
ただし条件文の最後にはこれが条件の分岐を表すものとして
コロン(:)が必要となる。
LOOP文も同様である。
if IN[1]:
bCHG = True
else if bCHG:
やまたは
while True:
のように条件文の直後には: (=コロン)を必ずも付加して
それが条件句であることを示さなければならない。
…このようにコロンが条件分岐を表しているので
ソースの条件を素早く探すことができるようになる。
セミコロン(;)ではなくコロン(:)なので
ILE-RPGのフリー・フォーマットに慣れた人にとっては
少し間違えやすいかも知れない。(小職も最初はよく間違えた)
_
※ Pythonの文法の特徴的な文法を一部紹介した。
ENDxxが不要であるというのはILE-RPGプログラマーにとって
少し違和感があるかも知れないが慣れれば大したことではない。
