ごちゃごちゃ説明など良いから、「早々にQSLカード印刷定義ファイルをまとめて公開しろ!」などとという正直なメールも頂きますが、今回はジックリ腰を据えて取り組んでいますので、最終最後で全ファイルを公開したいと思っています。
コピペも良いですが、よりオリジナルなQSLカードを構築するために、それぞれの定義の意味をご理解いただけると本望です。
さて今回は、今まで作り込んできた母屋(元々の定義ファイル)から離れて、1QSO分のデータを処理する、はなれ(サブルーチン的ファイル)の記述に入ります。
はなれのファイルを作った目的は、1枚のQSLカードを印刷するために、同じ処理の繰り返しを何度も書くのが煩わしいからです。
手始めは、「1QSOデータに含まれる情報を、選んで整理する」部分からです。
当局は"1/1"から始まって、QSL発行枚数/QSO回数のように入力画面のRemarks2に書いているが、この行に"1/1"つまりカード発行を前提とした1回目のQSOが有った場合に、引出し(変数)$$Rに"1st"と記録する。
1stQSOに何らかの記号を付けて記録している方は、その記号を検索すれば良いでしょう。
? RmStr [探す文字列]は、Remarks1またはRemarks2に[探す文字列]が含まれているか? を尋ねている。
本来は、Turbo Hamlog の入力画面に出る、「1stQSO」の表示が、何らかの項目変数で利用できると、便利なのですが・・・。比較的単純なデータを項目変数にしない理由が、きっと有るのでしょうね。
? Name(His Nameに書込みがあるか?)は、入力画面の欄に入力画面のHis Nameに何か書いてあるか?を聞く条件命令で、And(両方ともYes)条件で ? DXST!(DXでないか?)を聞いている。更にAndは続き、"!$$N"が? Space(空っぽか?)と聞いている。
つまり、? Name And ? DXST! And ? Space "!$$N" のときだけ、!NA(His Name)に[さん]を足して、$$N(名前を一時保管)に入れておけ・・という命令。
;QSOの内容を一時記憶----------------------------------------------------------
? RmStr "1/1" ; Remarksの一部に[1/1]があるか?
#Mov $$R="1st" ; この行に1stQSOがあった場合、$$Rに[1st]を記録
? Name ; His Nameに書込みがあるか?
? DXST! ; DXでないか?
? Space "!$$N" ; 変数$$Nがカラであるか?
#Mov $$N="!NAさん" ; 名前を変数$$Nに記録(国内)
? Name! ; His Nameに書込みがないか?
? DXST! ; DXでないか?
? Space! "!R1$O" ; Remarks1にオペレータの記載はあるか?
? Space "!$$N" ; 変数$$Nがカラであるか?
#Mov $$N="!R1$Oさん" ; オペレータを変数$$Nに記録(国内)
? Name ; His Nameに書込みがあるか?
? DXST ; DXであるか?
? Space "!$$N" ; 変数$$Nがカラであるか?
#Mov $$N="DR OM !NA" ; 名前を変数$$Nに記録(海外)
? Data7 "CW" ; モードはCWであるか?
#Mov $$M="CW" ; CWがあった場合、変数$$Nに[CW]を記録
同じような複数の条件命令で指定された内容を、$$R(1stQSO)、$$N(名前)、
$$M(特定モードの存在)に入れる。
? Data7 [探す文字列] とはマスターデータの7列目のデータが[探す文字列] と一致するか? を尋ねている。
Data1 コールサインData2 日付Data3 時間・・・Data11 氏名Data12 QTHData13 Remarks1Data14 Remarks2
ちなみに、Dataの次の番号は、入力画面の並び順だそうです。
![イメージ 1](https://stat.ameba.jp/user_images/20191128/22/jh1lmd/18/3b/p/o0560016114652369557.png?caw=800)
これで、各QSOデータ行の情報を拾い出すことが出来たが、この最終目的は、QSLカードに添えて書くコメントを、できるだけリアルに近づける為なんです。
では次回は、このはなれで最も肝心カナメのデータの記述にまいります。