search cancel

CA Gen : 可変⻑属性に後続空白のある文字を設定し、PSTEP USEのパラメー タとして渡すと、Cアプリケーションでは、後続スペースがカットされる。

book

Article ID: 135384

calendar_today

Updated On:

Products

Gen

Issue/Introduction

◆ 詳細内容

現在のGenの仕様ではJAVAとCでクライアント・サーバ間で文字の後続に空白文字(スペース)が含んだフィールド値を受け渡す場合、後続スペースがカットされる場合と保持される場合があり、一貫性のない動作事象が存在しています。

一貫性のない動作事象につきましてQ&A形式で説明いたします。

 

Q: 可変⻑属性に後続空白のある文字を設定し、PSTEP USEのパラメータとして渡すと、Cアプリケーションでは、後続スペースがカットされる。Javaアプリケーションでは、後続スペースが保持される。Cアプリケーションの動作は正しいですか?

Environment

Release: r8.0


Component: CA Gen Documentation

Resolution

A: 現在のGenの仕様ではJAVAとCで一貫性のない動作事象が存在しています。

しかしJAVAとCで一貫性を持たせる為に製品を変更することで、既存のアプリケーションへ与える影響やリスクが高いと判断し、この動作を変更しない事と決めさせていただきました。

以下のテストでは、可変⻑のテキスト属性ビューをクライアントからサーバに渡しサーバ側で後続スペースがどの様に変化するか、CONCATを行ってその結果を確認しました。

また、比較の為にクライアント側でもCONCATを行ってその結果を確認しました。

 

<Java クライアント ----> EJB サーバ>


EJB サーバ側

Concat(imp1 可変⻑フィールド, imp2可変⻑フィールド)

#1. (imp1ウィンドウ上のフィールドから)

'A' + 'HELLO' = 'AHELLO'

#2. (imp1 リテラルから)

'A ' + 'HELLO' = 'A HELLO'

Java クライアント側

Concat(imp1可変⻑フィールド, imp2可変⻑フィールド)

#3. (imp1 リテラルから)

'A ' + 'HELLO' = 'A HELLO'

<Java クライアント ----> C サーバ>


C サーバ側

Concat(imp1可変⻑フィールド, imp2可変⻑フィールド)

#4. (imp1 ウィンドウ上のフィールドから)

'A' + 'HELLO' = 'AHELLO'

#5. (imp1 リテラルから)

'A ' + 'HELLO' = 'AHELLO'

Java クライアント側

Concat(imp1可変⻑フィールド, imp2可変⻑フィールド)

#6. (imp1 リテラルから)

'A ' + 'HELLO' = 'A HELLO'

<GUI C クライアント ----> C サーバ>


C サーバ側

Concat(imp1可変⻑フィールド, imp2可変⻑フィールド)

#7. (imp1 ウィンドウ上のフィールドから)

'A' + 'HELLO' = 'AHELLO'

#8. (imp1 リテラルから)

'A ' + 'HELLO' = 'AHELLO'

GUI C クライアント側

Concat(imp1可変⻑フィールド, imp2可変⻑フィールド)

#9. (imp1 リテラルから)

'A ' + 'HELLO' = 'A HELLO'


考察:

CONCATの一番目のフィールドに設定される値がウィンドウ上のフィールドからセットされた場合、後続スペースは常にカットされます。(#1,#4,#7)

全てのクライアント側では、後続スペースはカットされワせん。(#3,#6,#9)

CONCATの一番目のフィールドに設定される値がリテラルからセットされた場合、EJB サーバ側では後続スペースはカットされません。(#2)

CONCATの一番目のフィールドに設定される値がリテラルからセットされた場合、C サーバ側では後続スペースは常にカットされます。(#5,#8)

(EJB サーバ側とテスト結果が異なるケースです。)

Additional Information

Old Japanese Knowledge document ID:

CA Genのその他のFAQについては、以下のリンクからご確認ください。

CA Gen FAQ一覧表