2007年03月27日

第4章 実践編1 メインフレームのデータの扱い(6) 〜ええ、とても〜

 「Pythonはいい言語ですか?」と聞かれたら、私はこう答えるでしょう。「ええ、とても」
 前回、いきなり"__init__"とか「イテレータ」とか出てきて面食らってしまった方もいるかも知れませんが、気にしないでください。「使わなければいいだけですから(*)」 これとは逆に興味を持ってしまった方もいるでしょう。そんな方はPythonの素晴らしく充実したドキュメント類を一読されているでしょうから、今さらくどくどと説明はしません。
(*)Pythonの入門コースインスタント・パイソンは、こんな調子です。いいですね。

 ここでは、固定長のレコードを扱う"FBrec"というクラスを作ってみました。
同様に細かな説明はしません。なんせ「最低限の仕事は終わっていますから」
続きを読む
posted by ymd at 19:40| Comment(0) | TrackBack(0) | 第4章 実践編

2007年03月24日

第4章 実践編1 メインフレームのデータの扱い(5) 〜Pythonらしく〜

 「学習」や「忘却からの回復」も含めて注ぎ込んだ労力や時間を投資と考えた場合、私はPythonはとても投資対効果の高い言語であると考えています。前出のプログラムでも、制限時間内になんとか合格最低点をもらうことができました。
 ここからは勉強も兼ねてPythonらしい記述に変えてみましょう。見直さなければならない点(*)もありますし・・・
 投資対効果を落としてしまうことになるかもしれませんが(実際、基本的な機能は全く変わらないのに数倍の時間を費やしています)、その分Pythonの持つ奥深さ、素晴らしさを味わうことができるでしょう。

 (*)...パック10進数の項目などで、TABに相当する値があると変換されてしまい、表示が崩れてしまいます。

目標は以下のようなコードで呼び出せるようにしておくことです。

f = FBfile('test.ebc', 80)
for rec in f:
    FBrec(rec, "cp037").hexList()
f.close()

続きを読む
posted by ymd at 14:04| Comment(0) | TrackBack(0) | 第4章 実践編

2007年03月21日

第4章 実践編1 メインフレームのデータの扱い(4) 〜ひとまず完成〜

 役者が出揃いましたので、組み合わせれば完成です。
hexdump.png
テキスト形式

 少し解説しておきますと、今回はファイルサイズを指定して読み込みますので、for文ではなくwhile文を使っています。
 最初のforループでは、読み取ったレコードを1バイトずつ16進数に変換し、上1桁を1行目に、下1桁を2行目にセットしています。+=は、6.3.1 累算代入文を参照してください。
 2番目のforループで、100バイトずつ、目盛り、デコードされた内容、16進数の上一桁、下一桁の順で出力しています。range文については、ライブラリマニュアルを参照してください。文字列のある部分を切り出すのに[ ]を使っています。チュートリアルの文字列の項の最後の方を参照してください。
posted by ymd at 09:49| Comment(0) | TrackBack(0) | 第4章 実践編

2007年03月18日

第4章 実践編1 メインフレームのデータの扱い(3) 〜16進数変換〜

 さて、次は16進数変換です。
'rb'でオープンしたファイルは文字列として読み込まれます。第9回で出てきたfor文、これを文字列に適用するとどうなるでしょう。
chstring.png

 1文字ではなく1バイトずつ読めていることがわかります。
 これを順番に16進数2桁で表していくことにしましょう。
続きを読む
posted by ymd at 17:51| Comment(0) | TrackBack(0) | 第4章 実践編

2007年03月13日

第4章 実践編1 メインフレームのデータの扱い(2) 〜文字列の扱い〜

(1)でホストの固定長レコードを1レコード読めましたので、
次はパソコンで読めるよう、文字コードを変換しましょう。
 Python チュートリアル 3.1.2 文字列の「参考:」を見てください。
「文字列や Unicode 文字列では、基本的な変換や検索を行うための数多くのメソッドをサポートしています。」となっています。
続きを読む
posted by ymd at 19:02| Comment(0) | TrackBack(0) | 第4章 実践編

2007年03月10日

第4章 実践編1 メインフレームのデータの扱い(1) 〜固定長データセットの読み込み〜

メインフレーム(汎用機/ホストコンピュータ)で良く使っていた、EBCDICのファイルの中身をダンプするツールを作ってみましょう。こんな感じです
 汎用機が現役を退きつつあるところは多いでしょう。(淋しい限りです)
ホストには企業を支えてきた重要なデータが大量に残っています。でも最重要のデータ以外お金や手間隙はかけられません。
こんな場合、バイナリのままPCに転送しておけば安心です。うっかり漢字やパック10進数の考慮を忘れてしまう心配もありません。
続きを読む
posted by ymd at 22:00| Comment(0) | TrackBack(0) | 第4章 実践編

2007年03月04日

第4章 実践編 さあ使っていきましょう

さあ、いよいよ実践編です。
この程度の知識で使い始めていけるのがPythonの良いところ。
忙しいあなたが覚えておかなくてはならないのは、
・IDLEの立ち上げ方
これだけです。プロクラムの保管場所さえ覚えておく必要はありません。
続きを読む
posted by ymd at 19:16| Comment(0) | TrackBack(0) | 第4章 実践編