■ザウルス内部ファイルをアップロードでGET
バイナリデータのアップロードは、ザウルスからパソコンへのデータ転送となり、バックアップ等に利用されます。
ZauBASE シリーズでは、Super ZauTERM においてCOM0.LOGなどの通信記録ファイルを取得するために利用しています。
また、パソコン上でデータを開いてみることで各種ファイルの意味や構造、隠された秘密なども解析する事ができます。
■アップロード時における注意点
Super ZauTERM で見事に引っかかったのですが、通信記録ファイル名で、COM1.LOGCOM2.LOGという名前は、MS-DOSが標準で持っているシリアルポートのCOM1 , COM2 と同じ名前になるため、このままのファイル名を流用して保存しようとすると、エラーになります。
D:\BACKUP\COM1.LOG とすると、ファイル名の指定に誤りがあるというエラーになります。
当初、このことに全く気づかず、ハードディスクのトラブルでファイルができないのではないかと疑ったものです。
ザウルスで問題となるファイル名は、COMx だけだと思いますが、もし内部ファイル名を利用して保存ファイルとする場合は、MS-DOS等のシステムが利用しているファイル名と重複しないように事前チェックして下さい。
■アップロードするファイル名の取得
この方法は第四弾で解説した、CFF->RFF->AFF のプロトコルを使います。
■プロトコルモニタによる実際の手順
この例では、全てのファイル(*.*) の情報取得を行っています。
◆CFFによる確認
PC→ZAU | 01 | <SOH> |
01 FE | データブロック番号 | |
03 00 | データ長(0003hバイト) | |
43 46 46 | "CFF"(コマンド) | |
CF 00 | チェックサム | |
← | 06 | <ACK>(正常受信) |
→ | 04 | <ENT>(送信完了) |
← | 06 | <ACK>(正常受信) |
→ | 05 | <ENQ>(送信要求) |
← | 01 | <SOH> |
01 FE | データブロック番号 | |
03 00 | データ長 | |
44 4F 4B | 文字列"DOK" | |
DE 00 | チェックサム | |
→ | 06 | ACK |
← | 04 | ENT |
→ | 06 | ACK |
← | 05 | ENQ |
◆情報を取得したいファイル名指定
→ | 01 | <SOH> |
01 FE | データブロック番号 | |
0A 00 | データ長(000Ahバイト) | |
52 46 46 53 31 3A 2A 2E 2A 00 | "RFFS1:*.*"+ 0h | |
1E 02 | チェックサム |
◆RFF におけるファイル名のフォーマット
"RFF" | "S1:" | "NIFADR.BOX" | 00 |
リクエスト | ドライブ名 | ファイル名 | 00固定 |
■ファイル情報
ファイル情報は "AFF" + データとしてザウルスからパソコンへ送信されます。
その際256バイト/ブロック が一つの転送単位になります。
ただし、"AFF" が3バイト消費しますので、実際には253バイト単位で区切られたデータが送信されてくることになります。
← | 06 | <ACK>(正常受信) |
→ | 04 | <ENT>(送信完了) |
← | 06 | <ACK>(正常受信) |
→ | 05 | <ENQ>(送信要求) |
← | 01 | <SOH> |
01 FE | データブロック番号 | |
00 01 | データ長 (100H=256) | |
41 46 46 | AFF | |
53 59 53 54 45 4D 20 20 | SYSTEM | |
20 | 空白1バイト | |
49 4E 46 | INF | |
20 | 空白1バイト | |
20 20 20 20 20 33 36 | 36(ファイルサイズ) | |
20 20 20 20 20 | 空白5バイト | |
39 37 2D 30 31 2D 30 31 20 30 33 3A 30 30 | 97-01-01 03:00 | |
0D 0A | CR LF | |
55 53 45 52 20 20 20 20 | USER | |
20 | 空白1バイト | |
44 49 43 | DIC | |
20 | 空白1バイト | |
20 20 20 31 30 32 38 | 1028(ファイルサイズ) | |
20 20 20 20 20 | 空白5バイト | |
39 37 2D 30 31 2D 30 31 20 30 33 3A 30 30 | 97-01-01 03:00 | |
0D 0A | CR LF | |
41 49 53 54 55 44 59 20 | AISTUDY | |
20 | ||
44 49 43 | DIC | |
20 | ||
20 20 20 31 30 32 38 | 1028 | |
20 20 20 20 20 | ||
39 37 2D 30 31 2D 30 31 20 30 33 3A 30 30 | 97-01-01 03:00 | |
0D 0A | ||
43 4C 49 50 20 20 20 20 20 53 59 53 | CLIP SYS | |
20 | ||
20 20 20 20 20 39 34 | 94 | |
20 20 20 20 20 | ||
39 37 2D 30 31 2D 30 31 20 30 33 3A 30 30 | 97-01-01 03:00 | |
0D 0A | ||
53 59 53 43 4F 4E 46 20 20 50 52 46 | SYSCONF PRF | |
20 | ||
20 20 20 20 20 32 37 | 27 | |
20 20 20 20 20 | ||
39 37 2D 30 31 2D 30 31 20 30 33 3A 30 30 | 97-01-01 03:00 | |
0D 0A | ||
53 43 48 45 44 55 4C 45 20 50 52 46 | SCHEDULE PRF | |
20 | ||
20 20 20 20 20 31 32 | 12 | |
20 20 20 20 20 | ||
39 37 2D 30 31 2D 30 31 20 30 33 3A 30 30 | 97-01-01 03:00 | |
0D 0A | ||
4D 45 49 53 48 49 20 | MEISHI | |
91 30 | チェックサム | |
→ | 06 | <ACK> |
← | 01 | <SOH> |
02 FD | 第2データブロック | |
00 01 | データ長(100H=256) | |
41 46 46 | AFF PRF | |
20 20 50 52 46 | PRF | |
第2データブロック部省略 | ||
AA 2E | チェックサム | |
→ | 06 | <ACK> |
01 | ||
n (FF - n) | 第nデータブロック | |
00 01 | ||
41 46 46 | AFF | |
第nデータブロック部省略 | ||
38 3A | チェックサム | |
→ | 06 | <ACK> |
← | 04 | <ENT> |
→ | 06 | <ACK> |
← | 05 | <ENQ> |
◆ここまでで、RFFS1:*.* によるS1: ドライブ上に存在する前ファイル情報が取得できます。
◆AFF におけるファイル情報のフォーマット ("s" は1バイトスペース)
"AFF" | ファイル名本体 | 空白 | 拡張子 | 空白 | ファイルサイズ | 空白 | 年月日 | 空白 | 時分 | CR | LF |
8文字 | .1BYTE | 3文字 | 1BYTE | 7桁 | 5BYTE | 5BYTE | |||||
AFF | NIFADR | BOX | 6828 | 95-10-31 | 13:32 | CR | LF |
■ファイル名リスト
ファイル名リストを受信してファイル化すれば通常のテキストデータとしてエディタで開くことができます。
ファイル名 | サイズ | 日付 | 時間 |
SYSTEM INF | 36 | 97-01-01 | 03:00 |
USER DIC | 1028 | 97-01-01 | 03:00 |
AISTUDY DIC | 1028 | 97-01-01 | 03:00 |
CLIP SYS | 94 | 97-01-01 | 03:00 |
SYSCONF PRF | 27 | 97-01-01 | 03:00 |
SCHEDULE PRF | 12 | 97-01-01 | 03:00 |
MEISHI PRF | 12 | 97-01-01 | 03:00 |
MEISHI BOX | 1714 | 97-01-07 | 21:21 |
MEISHI IDX | 69 | 97-01-01 | 03:00 |
MEISHI2 IDX | 81 | 97-01-01 | 03:00 |
TEL PRF | 12 | 97-01-01 | 03:00 |
TEL1 BOX | 215 | 97-01-07 | 21:21 |
TEL2 BOX | 194 | 97-01-07 | 21:21 |
■ファイル名の指定とアップロード
ファイル名は、"RFU" + "ドライブ名" + "ファイル名" + 0h となります。
このとき、ファイル名は SYSTEM.INF のようにベースネーム + "."(半角コンマ) + 拡張子という書式になります。
ベースネーム(最大8バイト)、"." (1バイト)、拡張子(3バイト)の計最大12バイトがファイル名となります。(命名規則としてはMS-DOSの8.3 と同じです。
ベースネーム、"."、拡張子の間に余分なスペースを含ませてはいけません。(ベースネームが8バイトに満たない場合は空白を入れずに詰めます)
■転送プロトコル
以下の例は、PI7000に存在する、S1:NIFADR.BOX のデータをアップロードした場合の実例です。(NIFADR.BOXはザウルスネットのNIFTY の接続先です)
PC→ZAU | 01 | <SOH> |
01 FE | データブロック番号 | |
03 00 | データ長(0003hバイト) | |
43 46 55 | "CFU"(コマンド) | |
DE 00 | チェックサム | |
← | 06 | <ACK>(正常受信) |
→ | 04 | <ENT>(送信完了) |
← | 06 | <ACK>(正常受信) |
→ | 05 | <ENQ>(送信要求) |
← | 01 | <SOH> |
01 FE | データブロック番号 | |
03 00 | データ長 | |
44 4F 4B | 文字列"DOK" | |
DE 00 | チェックサム | |
→ | 06 | ACK |
← | 04 | ENT |
→ | 06 | ACK |
← | 05 | ENQ |
◆アップロードするファイルの指定
→ | 01 | <SOH> |
01 FE | データブロック番号 | |
11 00 | データ長(0011hバイト) | |
52 46 55 53 31 3A 4E 49 46 41 44 52 2E 42 4F 58 00 | RFUS1:NIFADR.BOX | |
76 04 | チェックサム |
◆ファイル本体受信
← | 06 | <ACK>(正常受信) |
→ | 04 | <ENT>(送信完了) |
← | 06 | <ACK>(正常受信) |
→ | 05 | <ENQ>(送信要求) |
← | 01 | <SOH> |
01 FE | データブロック番号 | |
00 01 | データ長 (100H=256) | |
41 46 55 | AFU | |
FF 00 10 02 3F 00 00 11 | ||
00 00 00 00 00 00 00 00 00 00 00 15 00 03 0B 00 | ||
01 4E 41 4D 45 8C C2 90 6C 96 BC 0F 00 01 4E 41 | ||
50 52 8C C2 90 6C 96 BC 93 C7 82 DD 0D 00 01 54 | ||
45 4C 31 93 64 98 62 94 D4 8D 86 01 00 29 00 01 | ||
03 0C 96 6B 8A 43 93 B9 28 8E 44 96 79 29 0C 82 | ||
D9 82 C1 82 A9 82 A2 82 C7 82 A4 0C 30 31 31 2D | ||
38 39 38 2D 33 33 34 34 02 00 2A 00 01 03 0D 96 | ||
6B 8A 43 93 B9 28 91 EA 90 EC 81 6A 0C 82 D9 82 | ||
C1 82 A9 82 A2 82 C7 82 A4 0C 30 31 32 35 2D 32 | ||
32 2D 34 31 32 36 03 00 2B 00 01 03 0E 96 6B 8A | ||
43 93 B9 28 8A E2 8C A9 91 F2 29 0C 82 D9 82 C1 | ||
82 A9 82 A2 82 C7 82 A4 0C 30 31 32 36 2D 32 34 | ||
2D 34 39 34 30 04 00 29 00 01 03 0C 96 6B 8A 43 | ||
93 B9 28 8F AC 92 4D 29 0C 82 D9 82 C1 82 A9 82 | ||
A2 82 C7 82 A4 0C 30 31 33 34 2D 32 34 2D 35 36 | ||
36 30 05 00 29 23 | ||
56 60 | チェックサム | |
→ | 06 | <ACK> |
01 | ||
02 FD | ||
00 01 | ||
41 46 55 | "AFU" | |
途中省略 | ||
← | FD 4A | チェックサム |
→ | 06 | <ACK> |
← | 04 | <ENT> |
→ | 06 | <ACK> |
← | 05 | <ENQ> |
■このようにして取得したデータを、アプリケーションで加工する事になります。
ザウルスの内部ファイルの構造は基本的に統一されたパターンがあり、それに基づいて処理して下さい。
■ファイルアップロードの有効な利用方法
アプリケーションレベルではSuper ZauTERM の通信記録取得がありますが、その他、ZAUCELで作成されたデータをパソコンに抜き出すという用途があります。
これは、度々5番、6番会議室で話題に上がるZAUCELにデータを後から転送したり、入力したデータをExcel で加工したいという目的にかなった用途です。
他のアドインでもデータ処理した結果をパソコンに出力できないものに関しては、アップロード機能でパソコンに抜き出してからパソコンアプリで処理するという方法をとることができます。
この他に、送受信メールボックスのデータを抜き出すという技にも応用できます。