PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
23666 10/03/24 16:11:22 RE(4):PB7.0: Unicodeで出力したLDIFファイルのASCII変換 By GREENS
23656 10/02/16 20:40:56 RE(3):PB7.0: Unicodeで出力したLDIFファイルのASCII変換 By Pos
23655 10/02/05 09:04:03 RE(2):PB7.0: Unicodeで出力したLDIFファイルのASCII変換 By GREENS
23652 10/02/04 14:09:45 RE(1):PB7.0: Unicodeで出力したLDIFファイルのASCII変換 By Pos
23650 10/01/29 10:44:24 PB7.0: Unicodeで出力したLDIFファイルのASCII変換 By GREENS

カテゴリ:スクリプトの記述
日付:2010年01月29日 10:44 発信者:GREENS
題名:PB7.0: Unicodeで出力したLDIFファイルのASCII変換

ADサーバよりldifdeコマンドでuserファイルをエクスポートしたもの(日本語があるのでunicode指定)をP
Bにてoracleへ取り込みたいのですが、当方のPBのversionではそのまま読み取る事ができません。

仕方が無いので、一旦ファイルをASCII形式に変換して保存してから処理しようと以下のようなロジックを作っ
たのですが、
\"ls_readtext = FromUnicode(lbb_b)\"
の部分でデータの最後の方が欠損してしまいます(string文字数制限の為かと)。

いろいろと考えてみたのですが、何かいい方法がありましたらご教授いただければ幸いです。

**********************************************************
Blob lbb_readtext, lbb_b, lbb_total
int li_FileNum, li_FileNum2
string ls_readtext, ls_wk_readtext
String ls_入力ファイル, ls_出力ファイル
Long ll_処理件数, ll_rtn, ll_Flen, ll_loops, ll_i, ll_bytes_read

ls_入力ファイル = as_infile
ls_出力ファイル = as_infile + \'.cnv\'

//ファイルオープン(入力ファイル)
ll_Flen = FileLength(ls_入力ファイル)
li_FileNum = FileOpen(ls_入力ファイル, StreamMode!, Read!, LockRead!)
IF li_FileNum = -1 THEN
  RETURN -2
END IF

//ファイル読込回数確認
FileSeek(li_FileNum, 2)
IF ll_Flen > 32765 THEN
  IF Mod(ll_Flen, 32765) = 0 THEN
    ll_loops = ll_Flen/32765
  ELSE
    ll_loops = (ll_Flen/32765) + 1
  END IF
ELSE
  ll_loops = 1
END IF

//ファイルオープン(出力ファイル)
li_FileNum2 = FileOpen(ls_出力ファイル, StreamMode!, Write!)

//ファイル読込
FOR ll_i = 1 to ll_loops
  ll_bytes_read = FileRead(li_FileNum, lbb_b)

  ls_readtext = FromUnicode(lbb_b)

  FileWrite(li_FileNum2, ls_readtext)
NEXT

FileClose(li_FileNum)
FileClose(li_FileNum2)

RETURN 0


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows XP
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.