LoginSignup
0
1

More than 1 year has passed since last update.

バッチ処理環境の構築(汎用機からの離脱)

Posted at

はじめに

 前回作成したコード変換プログラムを使用して,汎用機(COBOL環境)及びWindows(COBOL環境)から新システム基盤へ環境を移し,新しいバッチ処理環境を構築します。そのためのテスト環境として,以下のような環境を機能要件として検討します。

  • MySQLサーバを立ち上げる
  • Python実行環境を立ち上げる
  • 各種ファイルを移行する
  • telnetサーバを立ち上げる
  • telnet接続で処理実行,結果表示(文字表示)が正しく行える

環境

 MySQLが依存関係のチェックをしてくれるので,以下の順番でインストールしておくと,後から遡ってインストールする手間が省けます。

  • Windows 2012 R2
  • Microsoft Visual Studio 2015
  • .Net Framework 3.5
  • Python 3.6
  • MySQL Installer 8.0.26(以下の機能が選択でインストールできます)
    • MySQL Community Server 8.0.26
    • MySQL Shell 8.0.26
    • MySQL Workbench 8.0.26
    • Connector/Python 8.0.26

 その他,Python及びC#のサーバ上での開発環境として,VSCode及び.Net Coreも同時にインストールしています。

工数

 調査及び構築で以下のとおりです。

  • 総工数 2人日
    • 調査及び文字環境検証(1人日)
    • 構築(1人日)

背景

 以下の理由で,社内システムの若返りを図りたいと考えています。

  • COBOL技術者が足りないため,過去から引き継いだ資産が保守できない
  • 環境の選択肢が非常に狭い(COBOL実行環境がベースになるため)
  • データの利用が難しい(必ず難解な文字コード変換を挟むことになる)

今回用意したもの

 各種サーバ及び環境系の整備を以下のとおり実施しました。

新環境系.png

作業詳細

1 オリジナル文字コード to UTF-16(CSV)

 以前,作成した以下の文字コード変換ツールを用いて,UTF-16に変換します。
 詳細については,「オリジナル文字コードからユニコード(UTF-16)へ変換する文字コード変換プログラム」を参照。

2 メーカー独自文字コード to UTF-16(CSV)

  • 1 に習い,テーブルだけを変更して,メーカー独自コードから,UTF-16に変換します。その際,以下の手順を踏みます。
    • 2-1 FTPでデータ取得(ASCIIモードでデータ取得することでEBCDICからJISに文字コード変換される)。RFC:385を参照。
    • 2-2 メーカー独自JISからUTF-16に変換(その際,1 のプログラムをそのまま利用できる。)。

3 UTF-16 to UTF-8

 PowerShellでUTF-16からUTF-8に変換する。「Powershellでファイルの文字コードを変換」を参照。ただし,リンク先の説明と少し齟齬し,必ずBOMが入ってしまうようなので,先頭3バイトをtruncateします。

4 インポート

 通常のMySQLコマンドを使用し,DB及びテーブル作成を行う。

  • 本番DB(手動クリア)及びテストDB(自動クリア)を作成する
  • テーブル名はファイル名と共通にする(ファイル名に .(ドット)が含まれる場合, _(アンダーバー)に変更)
  • 事前に各ファイル項目定義の用意をお願いし,数値及びテキストに変換する

5 Python及びC#でのデータ参照

 PythonからMySQL connectorを通して,特定の DB にアクセスできるかを確認します。
 「PythonからMySQLへ接続する」を参照。

6 遠隔端末での処理実行及び文字表示

 コマンドプロンプトでUTF-8で文字表示がされることを確認する。本環境では,独自フォント及び独自コード体系を使用しているため,コマンドプロンプトで確認できる範囲に制約がある。そのため,正確にデータを確認したい場合は,以下のコマンドで外部出力し,確認する。

外部出力先確認
select @@secure_file_priv;
外部出力
SELECT 列1, 列2, 列3 
FROM テーブル名 
INTO OUTFILE 'ファイル名(外部出力先確認した配下)'

課題

  • UTF-16のみで環境構築するつもりでしたが,コマンドプロンプトがUTF-8にしか対応していなかったため,以下のとおりになっています。
    • 入力データはUTF-16からUTF-8に変換しています
    • UTF-8ベースでデータベースへロードしています
    • UTF-8で文字データを扱っています
  • Unicodeの独自フォントを表示させたかったができなかった。具体的には,「cmd.exe のフォントを変更する」にある方法を試したができなかった(継続検討)。
    • FaceNameの変更では,表示が変わらなかった
    • レジストリ変更では,コマンドプロンプトのタイトルバーの右クリックメニュー→プロパティ→フォントで選択しようとしても,当該フォントが出てこなかった(そのため,選択できなかった。)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1