見出し画像

構文チェックは続く

前回は、メモ機能を使った「構文チェック」を紹介しました。
チェックは出来るようになったのですが、「エラーをどう通知するか」で苦労しました。目標は2つです。
①エラー内容が確認できる
②エラー行が確認できる

①「エラー内容の確認」。
これは構文チェックで行っている「行の記号化」をした結果情報をそのまま表示することにしました。試してみると意外に分かる内容なので、そのまま使い続けています。

②エラー行の確認
エラー行の「反転表示」に挑戦しました。
VBAの[SelStart][SelLength]使えば指定行を反転(選択)状態にできそうです。ところが実際にやってみると反転箇所がズレるのです。いろいろ試した結果、改行コードが原因だと分かりました。VBAではvbCrLfなどと記載しますが、実際にはHEXで0D,OAが行末に入っています。
※ASSGのエディタウィンドウはテキストボックスをMultiLineで使用
[SelStart]の位置とMid関数の位置が改行コード分でズレることが分かりました。これを考慮して、無事にエラー行の反転ができるようになりました。

エラーサンプルで確認してください。

①エラー内容
②エラー行(反転)

この例は未定義フィールドがある場合のエラー例です。
①の[EVAL$TKCDTX$=$!VN$]は、記号化で失敗したことを表しています。
($はセパレータ―)
記号化できるとオペランドはVN(文字変数),V9(数値変数)などの記号に変換されますが、記号化に失敗するとオペランドのままで残ります。この例ではTKCDTXが間違っていることになります。
[キャンセル]を押せば②の表示になります。

次の制限事項があります。
最初に見つかったエラーのみ表示します。
構造化命令のエラーは行反転しません。

これでやっと構文チェックが完成しました。
エディタの段階でチェックできるので、コンパイルエラーで膨大なエラーメッセージに呆然とすることが無くなりました。

次回は、未完成ではありますが「コンパイルエラーリストの活用」をご紹介します。


今回もキャンディーズです。
ランちゃんの紅白出場で、いろんな意見があるようですね。
確かに世代によっては「なんで?」って思うでしょうね。いちおう歌手活動はしているし、節目の年でもあるので、温かい目で見て欲しいな。

#AS400 #RPG #ASSG #キャンディーズ

この記事が気に入ったらサポートをしてみませんか?