corabo:アップロードファイルの取り扱い

業務が紐付いているアップロード画面

アップロード画面に業務を紐付けるということは、「アップロードファイルが業務実行の合図」か「業務でアップロードしたファイルを取り扱いたい」のいずれかの要件があるということになります。‥‥前者は殆ど考えられないかもしれませんが。

f:id:xoblos:20200114114038p:plain

業務実行中にアップロードしたファイルを参照するには、システム変数を活用します。名称(意味)が似ていますが、それぞれの保持している値と役割は明確に分かれていますので、ご注意ください。また corabo との連携になりますので、『d.実行時に入力しますか?』項を「はい」にすることも、お忘れなく。

SYS_INPUTFILE  ‥‥ アップロードしたファイルを処理中に自動保管しておく一時フォルダの絶対パス+ファイル名
SYS_UPLOADNAME ‥‥ 業務が正常終了した際に最終的にアップロード先へ置かれるファイル名

f:id:xoblos:20200114114045p:plain

上図のように、一時フォルダへ一旦コピーすると取り扱い易いです。一時フォルダは「SYS_WKDIR」を活用するのも良いですね。「SYS_INPUTFILE」はパス+ファイル名の内容を持っていますので、前後に別途パスやファイル名を表記する必要がありません。そもそも決められた場所とアップロードファイル名を持っている訳ですから。「SYS_UPLOADNAME」はファイル名称を文字列で持っています。アップロードされなければ決定しない、等の考えはありません。単純にアップロードした場合のファイル名を合わせているという考え方になりますね。

Designer:改行記号以外の制御コード記号も削除する

前回の記事で、改行コード記号を削除する方法を記載しました。

Designer:改行記号を抜く
http://xoblos.hatenablog.jp/entry/2019/12/16/153254

この指定で項目中の改行記号を削除することができますが、他システムからの連携データの中に、16進コード08(バックスペース記号)などの見えない制御コード記号が含まれる場合は削除されません。

改行記号を含む、見えない制御コード記号をすべて削除するには、下記のようにExcelの CLEAN 関数を使用します。

・「Excel表から抽出」手順 → XMLXML → 「Excel表を生成」手順
 ひな形シートに CLEAN 関数を入れて制御記号を削除します。

 A  B
 という2列に読み込む場合、
         C       D
         =CLEAN(A2)  =CLEAN(B2)

・「Excel表から抽出」手順 → XML
 上記の例の場合、C、D を抽出します。

・「変換(抽出データ→CSV)」手順で XMLCSV

Designer:改行記号を抜く

目標(GOAL)

Excelシートのセルデータの中に改行記号が含まれ、これを出力時に取り去りたいときがあります。改行記号は、備考やコメント欄として使用されるセルに入っていることが多く、後々、CSVファイルなどへ出力するときに邪魔になる場合があります。

また、Windows以外のプラットフォーム(LinuxMac OS など)から連携されたデータを処理する場合、データ中の改行コードが Windowsの場合と異なることがあり、これも意識せず改行記号を取り去りたいというニーズもあります。

Excel表から抽出」手順の設定

[出力項目の設定]-[改行記号を抜く] を "yes" にして、改行記号を削除したい項目に設定します。

この設定により、改行コードが削除されますが、下記のように、CR(キャリッジリターン)のみ、 LF(ラインフィード)のみの場合も、CR+LF(Windows)の場合も、意識することなく削除できます。

プラットフォームによる改行コードの違い

Mac OS    CR(キャリッジリターン)  16進コード 0d

Linux     LF(ラインフィード)     16進コード 0a

Windows    CR+LF             16進コード 0d0a

Designer:8桁数値を日付書式に

2千万ですか?

日付を数値のみで表現することはあります。本日なら「20191212」ですね。我々人間は、一見でこれを日付と判断出来るものですが‥‥。特別な設定や専用の指定法とかが無い限り、いずれのシステムも共通で「20191212」は『2019万1212個?円?‥‥それともそういうコード??』が、精々の扱いになります。(無論、本質は絶対に理解出来ません。)

f:id:xoblos:20191212152044p:plain

xoBlos の抽出と生成は、文字列の切り出しと連結が行えますので、"8桁固定" という要件が覆されなければ設定は容易なものです。抽出は、自身の項目を加工する面で『対象セル』が共通のセル番地になるところと‥‥加工の材料は XML に不要であることから、キーワード『非出力項目』で XML にタグを出力させないところがポイントです。生成は、加工する内容分の変数項目を用意するところと‥‥加工の材料は帳票上に出力させないことから、キーワード『セット先セル』を空欄にするところがポイントです。

Windows:言語変換された OS に .NET Framework 3.5 をインストールできないとき

OS 言語設定の変更

前回記事に次いで、はまりする問題を挙げましょう。

.net Framework 3.5 を有効化する OS が元々英語版であって、途中から日本語版に変えた場合は、英語版と日本語版の両方をマージした代替ソースパスが必要となる場合があります。‥‥つまり有効化にあたって、英語情報として参照される事項と、日本語情報として参照される事項が出てきて仕舞うということですね。

サーバ環境を構築する際には充分ご注意ください。そして、基本的な有効化手順を長時間掛けて数実施して、初めて OS の真の状態を知るケースも有り得るということを‥‥。

必要な材料を揃えたのにも拘らず、「0x800F081F」のエラー(材料不足 or システム破損)が出た場合は、システム修復を試すか別言語 OS であることを疑ってみましょう!

xobQuery: -d パラメーターでのネットワークパス形式(UNC表記)指定

xobQuery でDBを指定する -d パラメーターですが、パスの先頭が "\\" で始まるネットワークパス形式(UNC表記)で指定するときの留意事項があります。

使用しているインメモリDBエンジンを呼び出すときの、表記上の制約となります。

-d \\share\workdb\sales.db

という指定だとエラーになりますので、

-d \\\\share\\workdb\\sales.db

のように、\ を1個ずつ増やして(エスケープして)指定します。

Designer:CSV 高速抽出時の一時ファイル問題解消

Cドライブに蓄積されない!

前回記事の、CSV ファイルを高速エンジンで抽出する際に出来上がる一時ファイル件ですが、2019/03/21 リリース時の「v1.7.3.2」では、この問題が解消されています。Designer のアップデートは、細目に確認/実施して参りましょう。確認には、業務ファイル(.xob/.xbt)の画面上部、『ヘルプ(H)』→『アップデート確認』を 選択下さい。

但し Excel として抽出する以上、対象の CSVOffice で開いた見た目で抽出することに変わりはありません。以下例を充分にご注意ください。

零始まりの数値‥‥「0001」等が「1」として抽出される。(会社番号/品目コード等)
桁数の長い数値‥‥「123456789012」等が「1.23457E+11」として抽出される。(指数扱い)
日付に近い文字‥‥「10-21」や「10/21」が 2019年現在なら「2019/10/21」として抽出される。(分数/枝番等)

零始まりの数値は、抽出キーワード『前ゼロ付加桁数』や生成キーワード『取得データの前ゼロ付加』で整え切れますが、桁数がルールとして決まっていなければなりません