■ザウルス内部ファイルをアップロードで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 で加工したいという目的にかなった用途です。

他のアドインでもデータ処理した結果をパソコンに出力できないものに関しては、アップロード機能でパソコンに抜き出してからパソコンアプリで処理するという方法をとることができます。

この他に、送受信メールボックスのデータを抜き出すという技にも応用できます。