データ定義について

ワークフィールドは気を抜くと乱雑になり、後で見たときにRPGコードが追えなくなることがあります。時々目にするスイッチ的なワークを多用したプログラムは、スパゲティコードと同様にバグの原因になりますね。

 

ASSGではワークフィールドはデータ定義タブで設定します。RPGのD仕様書のイメージです。1つだけ工夫したのは、コンパイル時配列の要素を同時に定義できることです。

 

今回の動画は短いですが、コンパイル時配列の定義です。定義した後にRPGソースを生成し、結果を確認しています。

 

www.youtube.com

共通メモについて その2

仕事をしていると「メモ」って結構取りますよね。ノートに書いたり、何かの裏紙に書いたり。でも、後から見ようとすると探すのに苦労します。

また、マニュアルの同じページを何度も見て、「あ~、なんて物覚えが悪いんだオレ」って悲しくなります。それを解消したくて「メモ」を作りました。

でも、単なる「メモ」じゃ面白くないので「どの画面でメモを開いたかによって、表示するメモを変える」ことにしました。入力チェックのところでメモを開くとメモTAGが「入力チェックコード」になっています。(前回の動画にあります)検索のところでメモを開くとメモTAGが「検索コード」になります。この他にも画面やフィールドに合わせた「メモ」を用意しています。

さらに「メモ」を使った機能として、「命令コードの選択・挿入」を追加しました。

命令コードの先頭の数文字を入力して ctrl+スペースキーを押すと、該当する命令の一覧が表示され、そこから選択して挿入できます。該当命令が1つの場合は、即挿入されます。命令コードは自分で登録するので、RPG命令コードだけでなく、よく使う定型文に名前を付けて登録することもできます。

 

動画では、組み込み関数挿入、置換式挿入、商品コードチェックの定型文挿入を行っています。

youtu.be

 

共通メモ機能について

二年程前から、C仕様書はFFで書くようになりました。

またファイルの読み書きはSQL文で書くようになりました。

理由は見やすいし、RPG未経験者でもなんとか読める、からです。

 

ただ困ったことに、命令コードを他の言語と間違えます。SEUだと文法エラーになりますが、ASSGではチェックしていません。文法チェックはハードルが高いのです。

そこで考えたのが「共通メモ」です。

間違えやすい命令コードを登録しておき、コード入力時に参照出来るようにしました。

また、前回までにご紹介した入力チェックやコード検索のASSGコードも参照することが出来ます。手打ちするコードを減らすことで、文法エラーを減らすことが「共通メモ」の狙いです。

 

動画では下記の操作を行っています。

・入力チェックのASSGコードを入力、ctrl+C でコピー

・F2キー(共通メモ呼出しキーです)

・入力したコードを共通メモに登録(必須チェックのタイトルを付けてctrl+V)

・別フィールドの入力チェックで共通メモを呼出し、OwnCodeに挿入

では、動画をご覧ください。

youtu.be

画面フィールドのイベント2 検索

基幹システムの開発を始めた頃の話ですが・・・

伝票入力は、紙の伝票に手書きして、得意先コードや商品コードを調べて記入してから端末に向かって入力していました。そもそも自分の机には端末など無い時代。一台の端末を共有していました。

 

今ではコード検索が出来て当たり前ですね。実際にはカーソルの位置を判断して、得意先の検索なのか、商品の検索なのかを判断する、ちょっと面倒ですね。また画面のレイアウトを変更したら検索が動かない、なんて不具合が起きることも。

 

ASSGを使えば、そんな面倒も不具合もありません。そもそもカーソル位置はASSGコードで書かないのです。ASSGでは検索プログラムをCALLして、結果をフィールドにセットするだけです。さらにそのフィールドも置換式を使えば、同じコードが流用できます。

 

動画ではフィールドに検索のコードを書き、RPGコードの生成結果を確認しています。次にそのフィールドを移動してからRPGコードの生成結果を確認しています。

カーソル位置の判定が変わっているのを見てください。

では、動画をご覧ください。

 

www.youtube.com

 

AS400にログインできない!?

いつものようにASSGを起動して、AS400にログインすると、ダンマリ~

ログインではAS400のシステム製造番号QSRLNBRを取得するのにFTP使っているのですが、GETが動かない様子。ファイアウォールの受信の規則を見ると「ブロック」になってる。「許可」に変更して解決です。

ウィルスソフトのアップデートが原因かな?

画面フィールドのイベント

入力画面を作る場合、一般的には「初期化」「検索」「入力チェック」が必要になります。そしてサブルーチンとして「画面1初期化サブ」「画面1検索サブ」「画面1入力チェックサブ」などを作ります。

ASSGでもRPGコードの生成結果としてこのようなサブルーチンを作っていますが、定義の段階ではフィールド単位にRPGコードを書きます。

一番大きな理由は「置換式」が使えるからです。

例えば %FIELD はフィールド名に置換されます。

例えばASSGコードで 「IF %FIELD = *BLANK;」と書くと、RPGコードは「IF D1NMTK = *BLANK;」と生成されます。

置換式を使えば次のようなメリットがあります。

・フィールド名の間違いが無い

・定型的な処理のひな型利用ができる

・コメント挿入でソースコードが見やすくなる

使用できる置換式は次の通りです。

%ITEM     :項目名称
%FIELD    :フィールド名
%FIELDN  : 次フィールド名
%PC        :カーソル標識
%PCN      :次フィールド標識
%ATR      :Pフィールド

動画では2つのフィールドの入力チェックに「同じASSGコード」を書いています。RPGコードの生成結果と比較してみてください。

では、動画をご覧ください。

www.youtube.com

プログラム開発を楽にしたい

 画面設計が楽になると、さらに新しい要求が沸きあがりました。

 

「対話型プログラムはできないか?」

 

欲しい機能を考えました。

・プログラムの全体像が把握しやすいこと

・画面のフィールド単位に「初期化」「検索」「入力チェック」を書けること

・必須チェックなどのお決まりのロジックは共通化できること

・画面遷移の制御は自動生成できること

補助的な機能として

・ヘルプ機能が充実していること

・SQL文の生成機能

・ノート機能

 

実際にはASSGを開発しながら、いろいろな機能を追加してきました。

改めて実装している機能をリストアップしてみました。

明日から主な機能をピックアップしてご紹介したいと思います。

 

AS400連携 データベースフィールド情報取得(AS→PC)
  ソースファイル転送(PC→AS)
画面設計 ファイルレベルキーワード
  レコードレベルキーワード
  サブファイル対応
  PF01-24,PageDown/Up,ENTERの各キー動作コード作成
  画面デザイン(エクセルシート使用)
  データベースフィールド参照
  高輝度、反転、カーソル位置付、色、フィールドキーワード
  フィールドメモ(フィールドの要件などをメモ)
  フィールドの初期化・検索・入力チェックの各コード作成
  罫線対応
  画面入出力ロジック生成選択(自動/手動)
  サンプル表示(お客様打ち合わせ用)
帳票設計 ファイルレベルキーワード
  レコードレベルキーワード
  帳票デザイン(エクセルシート使用)
  データベースフィールド参照
  高輝度、フィールドキーワード
  横、縦サイズ
  フィールドメモ(フィールドの要件などをメモ)
  罫線対応
  サンプル表示(お客様打ち合わせ用)
エディター データベースフィールド参照
  画面フィールド参照
  帳票フィールド参照
  ワーク定義フィールド参照
  プロトタイプ定義フィールド参照
  プロトタイプコード挿入
  命令コード呼び出し(命令は個人で登録)
  汎用コードセット呼び出し(汎用コードは個人で登録)
  共通メモ参照(メモは個人で登録)
  置換式
プロトタイプ 外部プログラム登録
  登録ファイルエクスポート/インポート
データ定義 ワークフィールド定義
  配列データ定義
SQL SELECT指定
(select文生成) WHERE条件指定
  GROUP指定
  HAVING指定
  ORDER指定
  別名
  主ファイル、副ファイル
  SELECT文生成、FETCH文生成(RPG組込み用)
  SELECT文生成(LIBRARY名付き、動作確認用)
ソース生成 RPGソース生成
  画面ソース生成
  帳票ソース生成
  生成ソース確認
  AS400転送
  CCSID選択(5026,5035)
  開発履歴登録(H仕様書に埋め込み可)
保管・復元 設計情報保管(PC→テキストファイル)
  設計情報復元(テキストファイル→PC)
共通メモ メモ登録
  メモ保存(PC→テキストファイル)
  メモ復元(テキストファイル→PC)
ノート フリードキュメント
ライセンス ライセンス申請(初回起動時のみ)
  ライセンスファイル読込