過去の桐井戸端BBS (桐ver.9)
25908 桐で固定長ファイルを書き出すとき「サイン付S9」で書き出すことはできますか 長門孝雄 2004/04/17-10:01
いつもお世話になっております。またまた分からないことがあり、ご教示お願いいたします。
win2000 桐v9sp1を使用しています。

いままで桐でJCA手順の固定長ファイルの書き出し読み込みをしていました。
このたび請求データオンラインシステムで固定長ファイルの書き出しをすることになりましたが、
請求明細レコードとトレーラレコードの金額部分に表題のサイン付S9でとあり、
注釈に”サインの付与は最後のバイト前4ビットでゾーンデジマルを使用” とありました。

どんなことかわからず先方様に問い合わせて教えてもらったのすが、どうも理解できず、
どんな言語を使っているのかたずねられました。
桐で処理しょうとしているといったところ、桐に詳しい者がいないのでできるかどうか分からないとのことでした。
正と負の演算符号を11桁の文字数のなかにいれるような説明でしたが、まったくわかりません。
はたして、桐の表のなかでそのようなことができるものか、どのようにしたらよろしいのか。
なにとぞよろしくお願いいたします。
                          長門孝雄

25921 Re:サイン付S9は桐で処理可能でしょうか 佐田 守弘 2004/04/18-23:26
記事番号25908へのコメント
長門孝雄さん
この質問はコメントが付きにくいかも知れません。
残念ながら私は、質問の中にある「サイン付S9」について全く知りません。
従って具体的にどうするのかは、コメントできませんが、桐の機能の中でどこまでできるのかについて多少述べさせて頂きます。
質問の中に、
 >注釈に”サインの付与は最後のバイト前4ビットでゾーンデジマルを使用”

の部分がありますが、どうやらバイナリコードを出力する必要がある様ですね。
多分この最後の1バイトの前4ビットに、データから算出するあるバイナリコードを書き込む必要があるのだと思います。

●桐から任意の1バイトコードを出力する方法
桐は全てのデータを2バイト形式で扱います。その中で(多分)唯一、1バイトコードを出力する機能として、
印字コマンドで出力データの前にアンダスコア(_)を付けて
記述する方法があります。
 印字 _<計算式>
ここで計算式は数値型ですが、実際には255までの整数値と考えて下さい。
(255を越えた場合には、256で割った商になります。)

例えば前4ビットを&a、&b、&c、&d (値はいずれも1か0)で表すとしたら、
 代入 &コード=&a*128+&b*64+&c*32+&d*16
で、&コードに前4ビットに&a、&b、&c、&dが並んだ整数値が入ります。
(下位4ビットは0としています。)
これを印字コマンドの中で、
 印字 _&コード
で、前4ビットに所定のバイナリコードが入っている1バイトのコードが出力できるはずです。

なお、&a、&b、&c、&d の4ビット分の値に何をセットするのかは、「サイン付S9」の仕様で決められているのだろうと思います。
おそらくは金額とかその他の値で計算されるものなのでしょう。

●まずはデータ仕様を理解する事から始まるでしょう
データの仕様を知らないので、私としてはコメントできるのは以上の範囲だけです。
もし桐でこのデータフォーマットを出力するとしたら、まずは、「サイン付S9」なる
データフォーマットの仕様を完璧に理解するところから始まると思います。

いずれにしても、表を書き出す形で所定のフォーマットのデータを作成する事は、
できないと思いますが、印字コマンドでテキストファイルを書き出せば、
作成できるのではないかと思います。

佐田守弘(KS-00119)
25923 Re:EBCDICコード 尾形 2004/04/19-06:22
記事番号25908へのコメント
以前同じ事をやったことがあります。サイン付コード
内容を書きますので自分で理解してください

[請求金額]←ココに金額をセット

[文字金額]
 #文字置換(#文字列([請求金額],10),"-","0")

[一桁]
 #部分列([文字金額],-10,-1)

[EBCDIC変換コード]
 #条件選択([請求金額]<0,#条件選択([1桁]="1","J",[1桁]="2","K",[1桁]="3","L",[1桁]="4","M",[1桁]="5","N",[1桁]="6","O",[1桁]="7","P",[1桁]="8","Q",[1桁]="9","R",[1桁]="0","}"),1,[1桁])

[請求金額文字列]
 #部分列([文字金額],-1,-9)+[EBCDIC変換コード]



25924 Re:EBCDICコード 尾形 2004/04/19-06:27
記事番号25923へのコメント
ただ、当時先方とテストしてOKだったのはおぽえていますが
一番肝心なマイナス金額のテストまで行ったかは覚えていません (^^;;


25925 Re:サイン付S9は桐で処理可能でしょうか 長門孝雄 2004/04/19-08:36
記事番号25921へのコメント
佐田さん早速のご返事感謝いたします。

>●まずはデータ仕様を理解する事から始まるでしょう
>データの仕様を知らないので、私としてはコメントできるのは以上の範囲だけです。
>もし桐でこのデータフォーマットを出力するとしたら、まずは、「サイン付S9」
>なるデータフォーマットの仕様を完璧に理解するところから始まると思います。
>

まだまだ理解できないのですが、説明書には

+12345678901 F1,F2,F3,F4,F5,F6,F7,F8,F9,F0,C1
S9(11)
-12345678901 F1,F2,F3,F4,F5,F6,F7,F8,F9,F0,D1

F:ゾーンビット C:正の演算符号  D:の負の演算符号

となっています。
                          長門孝雄

25926 Re:EBCDICコード 長門孝雄 2004/04/19-08:43
記事番号25923へのコメント
尾形さんご返事感謝いたします。


>[請求金額]←ココに金額をセット
>
>[文字金額]
> #文字置換(#文字列([請求金額],10),"-","0")
>
>[一桁]
> #部分列([文字金額],-10,-1)
>
>[EBCDIC変換コード]
> #条件選択([請求金額]<0,#条件選択([1桁]="1","J",[1桁]="2","K",[1桁]
>="3","L",[1桁]="4","M",[1桁]="5","N",[1桁]="6","O",[1桁]="7","P",[1桁]
>="8","Q",[1桁]="9","R",[1桁]="0","}"),1,[1桁])
>
>[請求金額文字列]
> #部分列([文字金額],-1,-9)+[EBCDIC変換コード]
>
>
>
まだまだ、理解できないのですが早速試してみたいと思います。
ありがとうございました。
                         長門孝雄
25927 Re:EBCDICコード 長門孝雄 2004/04/19-09:15
記事番号25923へのコメント
尾形さんテスト用の表を作成し試してみました。
以下のようになりました。



請求金額 文字金額    一桁 EDCDIC変換コード     請求金額文字列
256000 0000256000 0 0 0000256000
-250000 0000250000 0 } 000025000}
256666 0000256666 6 6 0000256666
-245 0000000245 5 N 000000024N
-256 0000000256 6 O 000000025O
-2869 0000002869 9 R 000000286R

なんとなくわかりました。
私の業務範囲で桐は万能だと思っておりましたので非常に安心しました。
本当にありがとうございました。
                         長門孝雄
25929 Re:サイン付S9は桐で処理可能でしょうか 尾形 2004/04/19-11:12
記事番号25925へのコメント
> +12345678901 F1,F2,F3,F4,F5,F6,F7,F8,F9,F0,C1
>S9(11)
> -12345678901 F1,F2,F3,F4,F5,F6,F7,F8,F9,F0,D1
>
>F:ゾーンビット C:正の演算符号  D:の負の演算符号
この場合は正の演算符号もつける必要があるかと思います
http://www.fellow-ship.com/tech/jisebc.html
このあたりでコードは見てください

p.s
ちなみに、先方の担当者に聞く時は
「エクセルでしている」といったほうが相手もイメージ
しやすくていいかと思います

25931 Re:サイン付S9は桐で処理可能でしょうか 長門孝雄 2004/04/19-11:36
記事番号25929へのコメント
尾形さんたびたびすみません。
ホームページのご紹介ありがとうございます。
C1ということはEBCDICコードのC列も表に計算式で設定すればよいのですね。
先方さまに問い合わせていたときにC1のことも言われていました。
おかげさまでなんとなく理解できました。
これで先に進めそうです。
今後ともよろしくお願いいたします。
                         長門孝雄


25933 Re:EBCDICコード 今村 誠 2004/04/19-13:30
記事番号25927へのコメント
長門孝雄さんこんにちは
必要な項目が請求金額と請求金額文字列だけでいいのであれば
下記のような計算式で答えは求められませんか。

#計算(#代入(&秒,#四捨五入([請求金額],0)),
#cond(&秒<0,
#sstr(#s(#str(&秒,10),"-","0"),-1,-9)+
#対応文字列("J,K,L,M,N,O,P,Q,R",#num(#Last(#str(&秒),1)),"}"),1,#str(&秒,10)))

参考のためにお聞きしていいでしょうか。
通信に使用するモデムなどの指定はあるのでしょうか
今のパソコン内蔵モデムでも使用できますか。
またadslやisdnなどの指定はないのでしょうか。
他に特別な機器がいりますか?
25958 Re:EBCDICコード 長門孝雄 2004/04/20-07:32
記事番号25933へのコメント
今村さんこんにちは、ご返事ありがとうございます。
上記の計算式でできると思います。&秒は組み込み変数でしょうか。
仮に&秒を使っているのでしょうか。

JCA手順という通信方式でモデムは半二重 2400を使用しています。
会社でISDNからターミナルアダプターで変換してつないでいます。
とても遅いです。特殊なモデムです。
変換ソフトとモデムで200,000円ほどかかりました。
こんごともよろしくお願いいたします。
                     長門孝雄

25959 Re:EBCDICコード 今村 誠 2004/04/20-08:25
記事番号25958へのコメント
長門さんこんにちは

>+12345678901 F1,F2,F3,F4,F5,F6,F7,F8,F9,F0,C1
>S9(11)
>-12345678901 F1,F2,F3,F4,F5,F6,F7,F8,F9,F0,D1
>F:ゾーンビット C:正の演算符号  D:の負の演算符号

[請求金額]の計算式に例えば
[数量]*[単価]とあるのであれば
そこを
#四捨五入([数量]*[単価],0)
と変更して小数点以下の文字が発生しないようにして
[請求金額文字列]を
>F:ゾーンビット C:正の演算符号
にも対応させるのであれば、組込変数を使わない下記の式

#sstr(#s(#str([請求金額],10),"-","0"),-1,-9)+
#cond([請求金額]<0,
#対応文字列("J,K,L,M,N,O,P,Q,R",#num(#Last(#str([請求金額]),1)),"}"),1,#対応文字列("A,B,C,D,E,F,G,H,I",#num(#Last(#str([請求金額]),1)),"{"))

がよりいいと思います。
「0」がどちらに属するかも確認事項にはいるかも
今は「正」になっていますね。

#結構ソフトは高いですね。勉強になりました(^。^)
25961 Re:EBCDICコード 長門孝雄 2004/04/20-08:42
記事番号25959へのコメント
今村 誠さん再度のご教示ありがとうございます。
こんどのデータ処理はまだまだわからないことが多くあり模索中ですが、
皆さんのおかげで大分わかりかけてきました。
まだまだわからないことか多く再度でてくるとおもいますが、その節は
なにとぞよろしくお願いいたします。
                       長門孝雄

25967 Re:EBCDICコード 尾形 2004/04/20-10:35
記事番号25961へのコメント
遠い記憶を探って思い出すと

通信ソフト側に文字コードを変換する機能があったような記憶もあります。
結局その機能でやったようなそうでないような (^^;;


25996 Re:EBCDICコード 長門孝雄 2004/04/21-09:04
記事番号25967へのコメント

尾形さん再度のレスありがとうございます。
会社の通信ソフトにも変換する機能があるようなことが書いてあった気がします。
現在手元にソフトのマニュアルがないので確認はできませんが、透過うんぬんでEBCDICに変換とかあったような。

ということは、教えていただいたサイン付S9の文字セットを印字コマンドで
書き出して固定長ファイルを作成すればよいのでしょうか。
まだちょっと不安があり、オンラインシステム申込書の提出に躊躇している次第であります。
                          長門孝雄

戻る