タイトル : COMP-3の変換につて 投稿日 : 2017/09/20(Wed) 17:40 投稿者 : Naruse
はじめまして。Naruseと申します。 早速ですが、データのほとんどがパック形式のシーケンシャルファイルから SQL-Serverに一括登録するプログラムを作っています。 内部十進を外部十進に変換するにあたり、いろいろな情報からデータの変換が 可能になりましたが、0x80以降のデータで正しく変換できたりできなかったり しています。 下記の変換方法以外も試しましたが解決に至らず、投稿させていただくことに しました。 開発はVB6.0、OSはWindowsServer2008です。 VB素人のプログラムですが、下記に抜粋します。 変換結果も書いておきます。 どうかよろしくお願いします。 Private Sub DataSet1() MOTO = GT.W_200 'StrToBin (MOTO) MOTO = StrConv(GT.W_200, vbFromUnicode) ' システムコードに変換 COMP3_CNV_RTN MOTO, 5 W21_200 = Val(W_SIGN & Result) End Sub Private Sub COMP3_CNV_RTN(C3 As String, CNT As Integer) Dim W_ASC As String Dim W_HEX As String Result = "" W_SIGN = "" For X = 1 To CNT W_VAL = MidB(C3, X, 1) W_ASC = CStr(AscB(W_VAL)) W_HEX = (Hex(AscB(W_VAL))) If Len(CStr(Hex(AscB(W_VAL)))) = 1 Then Result = Result & "0" & CStr(Hex(AscB(W_VAL))) Else Select Case CStr(Hex(AscB(W_VAL))) Case "0c", "0C", "0d", "0D", "c", "C", "d", "D" Result = Result & "0" Exit For Case "1c", "1C", "1d", "1D" Result = Result & "1" Exit For Case "2c", "2C", "2d", "2D" Result = Result & "2" Exit For Case "3c", "3C", "3d", "3D" Result = Result & "3" Exit For Case "4c", "4C", "4d", "4D" Result = Result & "4" Exit For Case "5c", "5C", "5d", "5D" Result = Result & "5" Exit For Case "6c", "6C", "6d", "6D" Result = Result & "6" Exit For Case "7c", "7C", "7d", "7D" Result = Result & "7" Exit For Case "8c", "8C", "8d", "8D" Result = Result & "8" Exit For Case "9c", "9C", "9d", "9D" Result = Result & "9" Exit For Case Else Result = Result & CStr(Hex(AscB(W_VAL))) End Select End If Next X 'Select Case CStr(Hex(AscB(W_VAL))) Select Case W_HEX Case "c", "C", "0c", "1c", "2c", "3c", "4c", "5c", "6c", "7c", "8c", "9c", "0C", "1C", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C" W_SIGN = "+" Case Else W_SIGN = "-" End Select End Sub 正常値例 0x00 04 89 94 4c --> +000489944 0x00 00 09 83 4c --> +000009834 異常値例 0x00 00 15 04 8c --> -0000150481 0x00 00 07 98 2c --> -0000078145 0x00 00 11 43 9c --> -0000114381 ここから分かることは 0x83、0x89、0x94は正しく変換 0x98、0x8c、0x9cは81に変換 間違った変換の後の値も異常値になる(0x2cが45) |