クライアント/サーバ

Author: takeuchi@fcs21.jp (richiet)

質問 Unifaceを実行すると「Unable to load uora64; error 193 (’System or I/O error 193 occurred.’)」のエラーが表示されます。 [環境] OS:Windows 2008 server R2 (64bit) DB:Oracle 11gR2 UNIFACE:9401 (パッチ:r115) 回答 64ビット版のOracle 11gr2クライアントがクライアントにインストールされている可能性があります。 Unifaceが提供しているOracleドライバは、32ビットで作成されております。  申し訳ございませんが、32ビット版のOracle 11gr2クライアントをインストールし、 再度ご確認ください。

21 Comments

  1. 質問 Uniface 9.4インストールし、アサイメントファイルに$hankaku_font1 を指定した場合、 半角カナが3バイトで登録されてしまう。 <例> アイウエオ を登録すると、0xB1 0xB2 0xB3 0xB4 0xB5で登録されるはずが、   0x19 0x26 0x31 0x19 0x26 0x32 0x19 0x26 0x33 0x19 0x26 0x34 0x19 0x26 0x35 で登録される。 回答 本事象は、Uniface 9.4インストール後、デフォルトで作成されるクライアントのアサイメントファイル(idf.asn) にUniface flowのアサイメントファイルの参照がされている場合に発生します。 [対応策] クライアントアサイメントファイルに記述されている以下の内容をコメントアウトしてください。  <例> ;#file C:\unitemp\Compuware\Uniface9401\common\adm\uniface_flow.asn 本事象の改修は、Uniface 9.5で予定されています。 現時点ではUniface 9.4インスト―ル時の障害のため、Uniface 9.4でのパッチの改修はされません。


    Author: richiet (takeuchi@fcs21.jp)
  2. 質問 アサイメントファイルに、$hankaku_font1が指定されている場合、Uniface 8のリポジトリをインポート後、半角カナの文字化けが発生する 回答 $hankaku_font1の設定は、Uniface 8のString型のデータタイプの 互換性のために用意しております。 Uniface 8のリポジトリをUniface 9にインポートする際は、 $hankaku_font1=trueの設定をコメントアウトして行ってください。


    Author: richiet (takeuchi@fcs21.jp)
  3. 質問 V8まではエンティティ一覧にてスクロールしてもカレントオカレンスが正しく移動しているがV9ではそれができない 回答 Uniface 9から、エンティティ一覧の画面などは、Grid Widgetを使用しております。 この動作は、Grid Widetの動作になりますため、スクロールしてもカレントオカレンスは移動されますが、 ハイライトされません。


    Author: richiet (takeuchi@fcs21.jp)
  4. 質問 サーバ側に保管されている、UARファイルをクライアントから参照する方法について 回答 以下の手順を実行する事でクライアントからサーバ側に保管されているUARファイルを参照 する事ができます。 備考 事前にサーバ側にUARファイルが存在する事を前提としています。 [手順] 1. 実行用のアサイメントファイルを作成する。 2. [SETTINGS]セクションに、$SEARCH_RESOURCES を定義する。   $SEARCH_RESOURCES resources_only 3. [PATHS]セクションにファイル参照用のパスを定義する。   例 $TCP tcp:ServerName|userver|userver|wasv 4. [RESOURCES]セクションを追加し、以下のように、パスを指定する。   $パス名:UARファイル名   例 $TCP:test.uar


    Author: richiet (takeuchi@fcs21.jp)
  5. 質問 Uniface 9 のアサイメントファイルにASCII以外の文字を使用する場合の注意点 回答 Uniface Library にも記載されておりますとおり、アサイメントファイルに ASCII以外の文字を使用する場合、アサイメントファイルの保存文字コードは、 Unicode (Unicode もしくは、UTF-8)で保存してください。


    Author: richiet (takeuchi@fcs21.jp)
  6. 質問 Uniface インストール後、「8008 - Assignment statement error」が発生する 回答 SOLIDがインストールされていない場合、Sequentialがデータベースのパスに割り振られます。 この場合、以下のように SEQの後に、コロン(:)が定義されていないため、 Uniface 起動時、"8008 - Assignment statement error"が発生します。   $DBMS SEQ||   $DBMS_SYS SEQ|| [解決策]  次のように、SEQのログオン定義を修正してください。   $DBMS SEQ:||   $DBMS_SYS SEQ:||


    Author: richiet (takeuchi@fcs21.jp)
  7. 質問 warning: 1139 - Structure tables are larger than 64 KBは無視しても問題ないでしょうか? 回答 32ビットバージョンのWindowsを使用されている場合、警告番号1139は、 無視しても問題ないです。 理由:   この警告は、Uniface 61dtなど、16 ビットバージョンのWindows(例: Windows 3.1)を   サポートしておりましたころからの警告になります。  また、警告番号1139をコンパイル時に、表示しないようにする方法はありません。


    Author: richiet (takeuchi@fcs21.jp)
  8. 質問 シンタックス:NGLD, YGLDは、何のためにあるのでしょうか? 回答   シンタックス:NGLD, YGLDは、は、AutoIMEGoldと同じ機能です。   AutoIMEGold = on は、2バイト文字入力中に、Goldキー(テンキーの+)を押す事で   プロファイル文字を入力する事が可能になり、「*」などGoldキーに続く文字列を   入力後、2バイト文字入力を可能にする機能になります。   YGLD は AutoIMEGold = On と同じ設定になります。   NGLD は AutoIMEGold = Off と同じ設定になります。   この機能は、各フィールド毎に設定は可能ですが、障害のため、Uniface 8と同様に、   usys.iniファイルの[UPI]セクションに記述されております、AutoIMEGoldの設定を   読み込まれているため、正しく動作しておりません。


    Author: richiet (takeuchi@fcs21.jp)
  9. 質問 インストール済みのUnifaceバージョンを確認する場合、IDFを利用する以外で、 8.4.05.xxx 等 パッチ適用番号まで確認できる方法(手順)を教えてください。 回答 UNIFACEアプリケーション(UNIFACE.EXE)から適用されております パッチ、もしくはサービスパックは、以下の2つの方法で確認ください。 [確認方法] その1: ログから確認する方法    1. 使用されております、アサイメントファイルを開き、[SETTINGS]セクションに   以下の2行を追加し、UNIFACEアプリケーションを起動します。     $putmess_logfile uniface.log     $ioprint 64    2. 起動されましたら、一旦終了し、生成されたログファイルを開きます。    3. 文字列 「Loaded 'umsw'」を検索し、パッチ、もしくは、サービスパックを確認します。      例:パッチ番号: D506の場合       Loaded 'umsw' from C:\Program Files\Compuware\Uniface\bin\umsw.dll, version: 8.4.5.506 (8.4.05 D506)     その2:PROC関数$Aboutを使用する方法   PROC命令 messageと合わせ、PROC関数$Aboutを使用しメッセージに出力させる。   備考: PROC関数$Aboutは、Uniface内部用に用意されたコマンドであるため、正式には公開        されておりません。 このため、$aboutのサポートはできかねる事を予め        ご了承ください。   例: message/info $about      出力結果:tag= update= track=8.4.05.01 date=September 14, 2007 config=D506 0914_1 platform=WXP version=8.4.05


    Author: richiet (takeuchi@fcs21.jp)
  10. 質問 以下の環境の場合、ACTIVATEすると-50のエラーが発生する  1. アサイメントファイルに、$search_descriptor=file_onlyが定義してある  2. クライアント上に、uana.urrファイルが存在する。  3. ファイルサーバ上に、udesc.urrファイルが存在する。 回答 udesc.urrファイルは、uana.urrファイルの参照に失敗した場合のみ読み込まれます。 呼び出されたコンポーネントのsignature情報をudesc.urrファイルに存在するが、uana.urrファイルに存在しない場合、uana.urrファイルの参照が成功しますと、udesc.urrファイルが読み込まれないため、Activateの結果、-50のエラーが返されます。 この場合、uana.urrファイルを削除して運用ください。 心配であれば、以下のIDF終了後、以下の手順で、udesc.urrファイルにuana.urrファイルの内容を取り組んでください。 [手順]  1. /urr ulana  → uana.urrファイルを作成/更新します。  2. /urr  → udesc.urrファイルを作成/更新します。  3. uana.urrファイルを削除する。


    Author: richiet (takeuchi@fcs21.jp)
  11. 質問 マイグレーション作業にて、V7では起動できるが、V9では起動できないFormが存在します。 調べると、PARAMSの定義で使用されているComponent Variablesのデータ型として$が使用されていました。そのパラメータの形式が問題のようですが、バージョン間の非互換と考えればいいのでしょうか? 回答 データ タイプ:Any($)につきましては、基本データ タイプ(StringやNumericなど)と違い、使用箇所が限定されており、v7、v8、v9 のそれぞれのマニュアル上でも その旨 注釈がございます。 例1) v9のUniface Library の params の項 In addition to the basic data types, it is also possible to specify any as the data type in an entry (either a global or local Proc module) or in a global Proc. 例2) v7のPROC言語 Vol.2の params の項の日本語訳 また、エントリ(グローバルまたはローカルPROC モジュール)やグローバルPROC では、以下のデータ タイプも使用できます。  ・ any よって、エントリ以外(Execute トリガ等)でのデータ タイプ:Any($)の使用につきましては、本来の仕様上は許可されていないということです。 動作の非互換につきましては、v7では便宜上動作してしまっていたものが、v8以降では厳密に これらの制約がチェックされるようになり、activateの動作でエラーとして検出されるようになったということです。 コンポーネント間のパラメータに関してましては、プリミティブ(基本) データタイプの使用を推奨しているとのことですので、お手数ですが お客様の用途に合わせて データ タイプを変更することで対応いただきますようお願い申し上げます。


    Author: richiet (takeuchi@fcs21.jp)
  12. 質問 Uniface メインメニュー画面のメッセージフォントを変更できるのでしょうか? 現在 ピッチが固定できないため、表示されるものと表示されないものがあるので、できればピッチを固定したいと考えています。 回答 開発元へ確認しましたところ、初期化ファイル(*.ini)の設定値を変更することにより、フォントを反映できることが分かりました。 具体的な方法としましては、ご使用の初期化ファイル(デフォルト:usys.ini)の下記の 部分を変更し、動作をご確認ください。   例: [screen]  ・・・(中略)・・・  ;combo=Arial,Japanese,10,regular  combo=MS ゴシック,Japanese,11,regular 上記の例では、MS ゴシックのサイズ11を指定した例となります。 実際に使用される設定値は、お客様の環境に合わせて適宜調整ください。


    Author: richiet (takeuchi@fcs21.jp)
  13. 質問 curocc_video 命令を使ってカレント オカレンスのフィールド色を変えたいのですが、対象のエンティティの内側にあるエンティティ上のフィールド色が変わりません。 マニュアルには、/inner オプションを使用すると、全ての内側エンティティのカレントオカレンスにもビデオプロパティが適用されると書いてありますが、curocc_video /inner を使っても内側エンティティのフィールド色を変えられません。(外側のエンティティ上にあるフィールド色は変わる) 回答 curocc_videoはフォーカスが当たったカレントのオカレンスのVideo属性を変更するコマンドです。 このコマンドの性質上、対象となるエンティティは、マルチオカレンス(複数の行を持った構造)になっている必要があります。対象の内側エンティティが、シングルオカレンスの構造の場合は、残念ですが、このコマンドの動作は無効となってしまします。 申し訳ありませんが、これはUnifaceの仕様ということでご了承ください。


    Author: richiet (takeuchi@fcs21.jp)
  14. 質問 Uniface画面のタイトルバーの文字列はスタートアップシェルにより初期設定が可能ですが、プログラムから動的に変更することは可能でしょうか?可能であれば方法を教えてください。 回答 スタートアップシェルのプロパティ内で定義されるタイトルは、実行時にアプリケーションウィンドウ(1番外枠)のタイトルとして表示されます。このタイトルを動的に変更するには、PROC関数の「$appltitle」を使用することで可能です。  例: $appltitle = "新しいアプリケーションタイトル" もし、内側のフォームウィンドウのタイトルを動的に変更したい場合は、類似の「$formtitle」を使用することで可能です。 これらのPROC関数の実行結果は、既存のプロパティのタイトル設定より優先されます。


    Author: richiet (takeuchi@fcs21.jp)
  15. 質問 Unifaceで作成したモジュールを実行環境に提供する場合、プリントジョブモデルを一括提供する方法を教えてください。dol、urr等のファイル形式で提供できるのでしょうか。 回答 プリントジョブモデル(PRATTテーブル)はdolファイルなどには保存されず、アサイメントファイルに記述されています $SYS のパスまたは [Entities] のセクションにて定義されている参照先を元に動作します。提供方法として、以下2通りがあります。 1.$SYS に割り当てられた先のデータベースに格納する場合 $SYSのPATHを有効にしておいて下さい。 これらを移行するには、移行元環境のコマンドラインパラメータにて下記のようにコマンドを実行することで、TRX形式のファイル (PRATT.TRX) が作業フォルダに出力されます。  /cpy SYS:PRATT.PRINTER TRX: 移行先環境のコマンドラインパラメータにて下記コマンドを実行することで、プリントジョブモデルの移行を行うことができます。  /cpy TRX:PRATT.trx SYS: 2.[Entities] のセクションで指定したローカルファイルを使用する場合 アサイメントに下記設定を行った上で、作業フォルダに作成されたpratt.printerファイルをクライアントにコピーすることでも配布が可能です。 例;SEQドライバを使用する場合 [ENTITIES] pratt.printer $SEQ:pratt.printer [driver_settings] SEQ=U1.0


    Author: richiet (takeuchi@fcs21.jp)
  16. 質問 EDITBOXで、全角文字のみを入力するようにしたいのですができますか? 回答 実装の仕方はいろいろあるかと思いますが、ご参考までに Unifaceのコーディングで行う場合の1例としまして、以下のような方法が考えられます。 <対象フィールドのValidate Field トリガ> if ( ($displaylength(@$fieldname)/2) != $length(@$fieldname))   message/info "全角文字以外は入力できません"   return(-1) endif $displaylengthはフィールドに入力されたByte数を $lengthは文字数を返します。上記の例では、Byte数を2で割った値が文字数を同じであれば、すべて全角文字であると判定しています。 その他詳細につきましては、オンラインヘルプまはたPROC言語のマニュアルを合わせてご参照ください。 なお、これらのコーディング例を実装するに当たっては十分に検証いただき、お客様の責任においてご使用くださいますようお願いいたします。


    Author: richiet (takeuchi@fcs21.jp)
  17. 質問 論理プリンタの定義情報の格納先がどこであるか教えてください。 回答 Unifaceの論理プリンタを使用される場合は、Uniface初期ファイル(usys.ini)とOS内のレジストリ情報の中に論理プリンタの定義が格納されます。


    Author: richiet (takeuchi@fcs21.jp)
  18. [質問]   AS/400を使用した場合、Uniface 9へ移行後、シンタックスエラーが発生するようになった。   以下の環境を使用しています。   サーバ    AS/400    Uniface 9.6   クライアント    Windows OS    Uniface 9.6 [回答]  Windows OSからAS/4000にSJISデータを送信する際  EBCDICへ変換されます。また、受信する際はSJISへ変換されます。  変換の際、ダブルバイト文字とシングルバイト文字を区別するため、  ダブルバイトの文字列のSO/SI(シフトイン/シフトアウト)で囲まれます。  例) SI<ダブルバイト文字列>SO    結果、SI/SOを含むと2バイト多くの領域が使用されます。  Uniface 9とそれ以前バージョンではSI/SOによるチェック方法が  変更されました。 [変更理由]  Uniface 8以前では、フィールド値はSJISコードでチェックしていました。  このため、最大値まで全て2バイト文字がフィールドに入力された場合  シンタックスエラーにはなりませんが、SI/SOによって最後の1文字がかけて  しまいます。   例) Interface : C10   値:     あいうえお     実際に登録される値: あいうえ [旧Unifaceの問題点]   シンタックスエラーが発生しないためユーザからは検索されるまで、この事象に   気づく事がありません。 また登録時、最大長を超えた文字は自働的に切捨てられるため、   サーバ側からエラーは発生しません。 [Uniface 9からの仕様変更]  Uniface 9では、クライアント側でシンタックスチェックの際  SI/SOを含んで計算するように改善されました。  これにより、データがサーバに送信される前に入力値がフィールドの最大長を超えた場合  シンタックスエラー0120されます。   例) 0120 - Error on field FLD; subfield too large.


    Author: richiet (takeuchi@fcs21.jp)
  19. [質問] AS/400に以下手順でDLMをインストールするとライセンスファイルが正しく読めない  <環境> CCSID :930 QLOCALE : *NONE QCCSID : 65535 CCSID : 930 LOCALE : /QSYS.LIB/JA_JP_5026.LOCALE <インストール手順>   1. ロケールを '/QSYS.LIB/JA_JP_5035.LOCALE' に変更する     [理由] DLMが認識している英小文字は CCSID 37のため、930のコードは認識できない CHGPRF LOCALE('/QSYS.LIB/JA_JP_5035.LOCALE') 2.再ログオンする    SIGNOFF   3. DLMをインストールする    CPYFRMSTMF FROMSTMF('/DLMINS/AS400INS.SVF') TOMBR('/QSYS.LIB/QTEMP.LIB/INSTALL.FILE') MBROPT(*REPLACE)    RSTOBJ OBJ(*ALL) SAVLIB(UNIFLIB) DEV(*SAVF) OBJTYPE(*ALL) SAVF(QTEMP/INSTALL) RSTLIB(QTEMP)   <QTEMPの内容> AS400INS *PGM CLE Generic Installer MXCARTET *DTAQ MXCPPNULL *DTAQ AS400INS *FILE DSPF Installer Display file INSTALL *FILE SAVF 4. ロケールを/QSYS.LIB/JA_JP_5026.LOCALEに戻す   CHGPRF LOCALE('/QSYS.LIB/JA_JP_5026.LOCALE') 5.再ログオンする    SIGNOFF 6. 作業ライブラを変更する     chgcurlib dlm452   7. ライセンスを適用する   CALL PGM(QTEMP/AS400INS) PARM('src=/DLMINS') 8. ライセンスを適用する    例) /DLM/license/license.xml 9. Applicationを選択しライセンスFeatureの一覧を表示する   10. Verifyを選択しFeautreを確認する     結果 -7、-6, -1などのエラーが発生する      [回答] ライセンスが存在しないエラーは、930の小文字が認識しない事が原因になっています。   現在のDLMは、仕様によりCCSID 37コードの小文字のみ認識します。   [対応策] Ctrl-F3を押して大文字でライセンスパスを定義してください。    例) /DLM/LICENSE/LICENSE.XML System IDミスマッチエラーも同じく、ライセンスに記述されているうhostidに  小文字が含まれている場合に発生します。 これは、DLMのバグですが現在のところ  改修につきましては未定です。


    Author: richiet (takeuchi@fcs21.jp)
  20. [質問]   MSS SQLサーバで、全てのリポジトリをエクスポートし新規環境にインポートすると、   いくつかのフォームまたは、ライブラリがインポートされない 環境 Windows 2012 R2 Uniface 9.6 MSS SQL server 2014 [回答]  Uniface デフォルトのみロードされている環境でインポート  した場合、SQL Serverの接続時の構成で"xact abort"が有効の 場合に発生します。  [理由] リポジトリインポート時は、レコードの存在確認が事前にされません。   Unifaceはあ、、最初にinsert命令発行後、DBによってエラーが返された   場合は、update命令を発行し既存のデータを上書きします。   xact abortが指定されている場合、重複エラー発生後、   同一トランザクションでの追加されたレコードは 自動的にロールバックがされてしまいます。 [対応策] "xact abort"設定を外してください。


    Author: richiet (takeuchi@fcs21.jp)
  21. 質問  Unifaceからエクスプローラで指定されたフォルダを開く方法を知りたい。 [環境]  OS:Windows 7 (64bit)  UNIFACE:9702 回答 Activate命令もくは、Spawn命令から可能です。 cmd /c start explorer <フォルダ名> 例) activate “oscom”.command(“cmd /c start explorer c:\temp”)


    Author: richiet (takeuchi@fcs21.jp)