当局の作ったTurbo HamlogのQSLカード印刷定義も、大詰めの段階に差し掛かった。前にも申し上げたが、メッセージを定義の最後に持ってきた理由は、複数のQSOデータを取り扱う点だ。
つまり最大5回分のQSOデータを確認したうえで、メッセージを組立てることを重視した・・・ことになる。

そのために、1行ごとのQSOデータを作るときに、データ拾い出しを行った。
はなれサブルーチン的ファイル)で拾い出したデータには以下のものがある。

$$R 5行の中に1stQSOがあったか?
$$N 相手局の名前、またはクラブ局のオペレータを収納。
$$M 特定のモード(当局の場合はCW)が含まれたか?
$$L 最新の行(1行目)がDXか? JAか? を確認する

これらの状態を元にして、メッセージの文を選んで組み立てる。

また共通項目の設定で指定したメッセージの部分を取りあえず本文として使う。

; メッセージ
#Mov $$C = "有難うございます。" ; JA向け①2nd以降
#Mov $$D = "TNX FB QSO." ; DX向け2nd以降
#Mov $$E = "初交信有難うございます。" ; JA向け1st
#Mov $$F = "TNX 1st QSO." ; DX向け1st
#Mov $$G = "またお会いしましょう。" ; JA向け②その他
#Mov $$H = "I'm hoping to see you, again." ; DX向けその他
#Mov $$I = "CW初心者の為、お手数かけました。" ; JA向けCW1st
#Mov $$J = "AM LID, Many thanks for your kindness." ; DX向けCW1st

以上を組み合わせて、メッセージ文章を作った。QSOデータのRemarksと同様に変数$$Aに入れる方法を使った。但し、Remarksと違ってメッセージの方は長くなっても支障は少ないので、メッセージ一時変数に文章を継ぎ足していく方法を使った。
メッセージの言葉自体は、適当に修正していくつもりです。

"!$$N"(名前)はすでに編集してあるから、名前が取得できていれば、そのままメッセージ一時変数$$Aに代入する。
次にDX局かJA局かを確認して、JA局の場合は、#Goto *920JA向けメッセージのラベルまで飛ばしている。
一方、DX向けメッセージは、そのまま進めて条件命令で文章を追加していく。英語メッセージのフォントを指定して、メッセージの印字にジャンプする。
JA向けメッセージも同様に進めて、メッセージ文章を組立てる。

;メッセージ-----------------------------------------------------
#Mov $$A="" ; メッセージ一時変数をクリア
; 名前 
? Space! "!$$N" ; 名前(!$$N)ありか?
#Mov $$A="!$$N,  " ; 名前(!$$N)を変数に代入

? Space "!$$L" ; JA向けか?
#Goto *920 ; JA向けメッセージにジャンプ

; DX向けメッセージ
? Space "!$$R" ; 2nd以降か?
#Mov $$A="!$$A!$$D" ; 1行目DX向け①(!$$D)を変数に追加
? Space! "!$$R" ; 1stQSOか?
#Mov $$A="!$$A!$$F" ; 1行位DX向け1st(!$$F)を変数に追加
? Space "!$$M" ; CWなしか?
#Mov $$A="!$$A !$$H" ; DX向け(!$$H)を変数に追加
? Space "!$$R" ; 2nd以降か?
? Space! "!$$M" ; CWありか?
#Mov $$A="!$$A !$$H" ; DX向け(!$$H)を変数に追加
? Space! "!$$R" ; 1stQSOか?
? Space! "!$$M" ; CWありか?
#Mov $$A="!$$A !$$J" ; DX向け(!$$J)を変数に追加
#FontName="Special Elite" ; 英語メッセージのフォント

#Goto *980 ; メッセージの印字にジャンプ

*920
; JA向けメッセージ
? Space "!$$R" ; 2nd以降か?
#Mov $$A="!$$A!$$C" ; JA向け(!$$C)を変数に追加
? Space! "!$$R" ; 1stQSOか?
#Mov $$A="!$$A!$$E" ; JA向け1st(!$$E)を変数に追加
? Space "!$$M" ; CWなしか?
#Mov $$A="!$$A !$$G" ; JA向け②(!$$G)を変数に追加
? Space "!$$R" ; 2nd以降か?
? Space! "!$$M" ; CWありか?
#Mov $$A="!$$A !$$G" ; JA向け(!$$G)を変数に追加
? Space! "!$$R" ; 1stQSOか?
? Space! "!$$M" ; CWありか?
#Mov $$A="!$$A !$$I" ; JA向け(!$$I)を変数に追加
#FontName="MSP ゴシック" ; 日本語メッセージのフォント

*980 
; メッセージの印字
? Space! "!Co" ; 印刷時コメント欄があるか?
#Mov $$A="!$$A !Co" ; 印字確認時のコメントを追加
#FontSize=10 ; 文字大きさ(普通)
#FontColor=0 ; 文字色(黒)
#FontStyle=0 ; 文字飾り(なし)

#PrintA $$Z, 480, 0, "!$$A" ; メッセージ変数(!$$A)を印字

イメージ 1
メッセージの印字では、印刷時に挿入したいコメントがあれば、最後に!Coを挿入出来るようにした。

ここでは文字の印刷(まとめ)で述べた方法で#PrintA 折返し複数行印字)を使ってみた。
こうした長さの一定しない文章を印字するには良い方法だ。

#PrintA [横方向の開始位置][縦方向の開始位置][行間の幅], "[印刷する文字]"

用紙の右端で自動的に折返すが、あらかじめプリンタに用紙寸法を登録しておかないとダメなようだ。当局はインターナショナルサイズ(140mmX90mm)を登録してあるので、Turbo Hamlogのプリンタ設定で指定すれば上手く折返してくれた。

当局の使い方が下手なのか、英文なども単語の途中で切れてしまうのが気になるが、限られたスペースを活用する点では便利な命令だ。

以下に実際の印字出力をご覧ください。

イメージ 2DX局、ファーストQSO、CW以外のモードで名前不詳。



イメージ 3DX局、ファーストQSO、CWモードで名前付




イメージ 4
DX局、ファーストQSO、CWモードで名前付だが、単語の途中で折返されている。



イメージ 5
JA局、セカンド以降のQSO、クラブ局のオペレータのコールと名前を表示している。



イメージ 6
JA局、セカンド以降のQSO、名前とハンドルをHis Nameから読込む。



イメージ 7
JA局、ファーストQSO、CWモードで、His Nameからハンドルを印字した。




以上で当局の作ったQSLカード印刷定義ですが、日々手直しを加えつつ、より使いやすくしたいと思っています。

Turbo Hamlogの便利な機能を使って、入力画面のデータ整理Remarksでデータ置換えと並行しながら、印刷定義を進化させるのは楽しいですね。

次回、当局のQSLカード印刷定義の全文を公開しますので、ご利用ください。