あおしまの日記

あおしまさんの日記らしいです。個人的に興味がある事を時々書きます。スマートウォッチPebble日本語パックを作成、公開しています。

新たなCSVエディタに遭遇する

新たなCSVエディタに遭遇する

CSVエディタは、数年前までKutoCSVEditorを使っていました。
しかし、ここのところ起動しても落ちるので、あれこれと使っていましたがしっくり来ません。
UTF-8対応がまずいとか、エディタの変形であるとか、フォントサイズが変えられないとか、等々。
もう他に選択肢無がいんだろうなあと思ってあきらめていましたが、久々に気が向いて検索、Cassavaというのに遭遇しました。
http://www.asukaze.net/soft/cassava/

更新もほぼリアルタイムで行われており、操作も悪くありません。
フォントサイズも指定できますし、UTF-8も読み込みに支障ありません。
マクロ機能もあります。

XMLマクロに触発されて、レジ用マクロを書く。

Cassavaの公開マクロを眺めていると、XML出力マクロがあるのに気付きました。
中を見るとそれほど難しくなさそうでしたので、レジ導入時に書いたPerlスクリプト*1をこれに代替させる事にしました。
やってる事は、項目数の総計を入れ込むこと、各情報を適切な位置に埋め込むこと、だけです。
商品名の文字長のチェックは行っていませんので、データ段階でスクリーニングしてお使い下さい。

  • データは「コード」「商品名(全角8文字)」「所属部門」「単価」の順に4項目からなるCSVで用意します。1行目は項目行として扱い、2行目からのデータを処理します。
  • マクロのインストールはCassavaのExportフォルダに下記プログラムを「XEA4x7.cms」というファイル名で入れることで行います。
  • 変換したいCSVデータをCassavaで開いておき、「ファイル」メニューの「エクスポート」を選び実行します。
  • 出力されたファイルを「PLU-JAN.xml」に改名する事で、SDカード経由でのPLU/JANデータ更新に利用する事ができます。
// SHARP XE-A407/A417 CSVデータ to レジ内部形式XML 出力
//   for Cassava CSV editor
//            2017.08.13  Kaz Aoshima
// 
// Cassava CSV editorのマクロ機能を使い、価格表データから
// SHARPレジのSDカード経由で送り込めるPLU/JANデータ(XML形式)を
// 作成します。
// 
//  元データは以下の4項目からなるCSVであることが前提です。
// コード,商品名(全角8文字),所属部門,単価,
// 1行目は項目行として扱い、2行目からのデータを処理します。
// 
// このデータを編集または開いておいて、エクスポートにより変換を行います。
// 文字長チェックは行っていませんので、事前にスクリーニングをお願いします。
// 
// 導入は、CasssavaのExportマクロフォルダ(プログラム本体のある場所の中)へ
// コピーして行います。ファイル名は「XEA4x7.cms」にします。
// 
// 実行は、用意したデータをCassavaで開いておき、[ファイル]メニュー内
// [エクスポート]を選び、形式から当マクロを選択、実行します。
// 
// 出力されたファイルを「PLU-JAN.xml」に改名する事で、SDカード経由での
// PLU/JANデータ更新に利用する事ができます。

B = Bottom;
// x = 1;
// y = 1;
Data = B-1;

writeln("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
writeln("<FILE FILE_NO=\"0x11\" FILE_NAME=\"PLU\" MAX_BLOCK_NUM=\"1\" MAX_RECORD_NUM=" + Data + " VERSION=\"A407J\">");

for( y = 2; y <= B; y++)
{
  writeln("    <RECORD PLU_CODE=\"" + [1,y] + "\">");
  writeln("      <FIELD FIELD_NO=\"1\" CONTENTS=\"Preset\">");
  writeln("        <DEPARTMENT>" + [3,y] + "</DEPARTMENT>");
  writeln("        <PROGRAM>");
  writeln("          <AUTO_DELETE>No</AUTO_DELETE>");
  writeln("          <ENTRY_TYPE>Preset</ENTRY_TYPE>");
  writeln("        </PROGRAM>");
  writeln("        <MENU_TYPE>");
  writeln("          <MENU_TYPE>Normal</MENU_TYPE>");
  writeln("        </MENU_TYPE>");
  writeln("        <LNKSET_TABLE_NO>0</LNKSET_TABLE_NO>");
  writeln("        <PLU_GROUP_NO>0</PLU_GROUP_NO>");
  writeln("        <MIXMATCH_TABLE>0</MIXMATCH_TABLE>");
  writeln("      </FIELD>");
  writeln("      <FIELD FIELD_NO=\"3\" CONTENTS=\"PLU Price\">");
  writeln("        <PRICE>" + [4,y] + "</PRICE>");
  writeln("      </FIELD>");
  writeln("      <FIELD FIELD_NO=\"4\" CONTENTS=\"PLU Text\">");
  writeln("        <TEXT>" + [2,y] + "</TEXT>");
  writeln("      </FIELD>");
  writeln("    </RECORD>");
}

writeln("  </BLOCK>");
writeln("</FILE>");