如何从COBOL中的国家数据类型中删除 @字符



我在将Unicode数据转换为国家字符时面临问题。当我使用全国功能将UNICODE数据转换为国家时,某些垃圾字符之类的字符串之后是 @

例如WS-UNICODE PIC X(200(WS-National Pic N(600(

- 让ws-unicode中的值为これらのは。从Java结束。

移动功能国民(WS-Unicode,1208(到WS-National。

- 转换后的值大约是これらは @。

我不希望转换后添加额外的 @字符。

请帮助我找出可能的解决方案,我尝试使用Inspect子句用空间替换N'@'。它运行良好,但在某些特定情况下失败了,例如我们从用户端输入中有 @。在这种情况下

下面是我用来将EBCDIC转换为UTF的代码段。在捕获字符串长度之前,我还得到 @符号:

STRING                                                       
   FUNCTION DISPLAY-OF (                                     
      FUNCTION NATIONAL-OF (                                 
         WS-EBCDIC-STRING(1:WS-XML-EBCDIC-LENGTH)
         WS-EBCDIC-CCSID                                     
      )                                                      
      WS-UTF8-CCSID                                          
   )                                                         
   DELIMITED BY SIZE                                         
INTO WS-UTF8-STRING
     WITH POINTER WS-XML-UTF8-LENGTH                         
END-STRING                                                   
SUBTRACT 1 FROM WS-XML-UTF8-LENGTH    

该代码的作用是将EBCIDIC字符串的UTF8表示形式字符串到另一个变量中。带有指针子句将捕获字符串 1的新长度( 1,因为指针在字符串结束后位于下一个位置(。

使用此方法,您应该能够确切知道第二个字符串的时间,并使用该字符串,并具有确切的长度。

应该删除不需要的@s。

编辑:

我忘了提到的一件事,就我而言, @符号实际上是EBCDIC低值,当查看大型机上的实际十六进制

相关内容

  • 没有找到相关文章

最新更新