我是一位非常有经验的 C 程序员,但最近我在大型机上遇到了一些具有局部变量的代码。这是在一个简单的 C 函数中声明此变量,然后strcpy将strcat两个字符串放入其中,然后尝试使用fopen.
char foo(|10|);
Run Code Online (Sandbox Code Playgroud)
这段代码很旧了。甚至可能是 K&R C 旧的。我想知道这是否是一些晦涩的编译器扩展或对没有 [] 或类似内容的键盘的适应。
有人知道这个声明是否“特殊”吗?
这是一个标准的 Z/OS 大型机。我不确定使用什么编译器。
我有一个从EBCDIC转换为ASCII的文件.以前有新行的地方现在有字符显示为<85>(表示单个字符的符号,而不是它看起来的四个字符),整个文件在一行上.我想搜索它们并再次用新行替换它们,但我不知道如何.
我尝试将光标放在一个上并使用*来搜索下一个匹配项,希望它可能显示在我的/搜索历史记录中.那没用.它只搜索了<85>字符后面的单词.
我搜索了一些,但没有看到任何明显的东西.
我的目标是建立一个搜索和替换字符串,如:
:%s/<85>/\n/g
Run Code Online (Sandbox Code Playgroud)
目前只给了我:
E486: Pattern not found: <85>
Run Code Online (Sandbox Code Playgroud)
谢谢!
我需要编写一个'简单'的工具来从ASCII转换为EBCDIC?
Ascii来自Java,Web和AS400.我有一个谷歌周围,似乎找不到一个简单的解决方案(也许因为没有一个:().我希望有一个开源工具或支付已经编写的实用工具.
也许这样吗?
Converter.convertToAscii(String textFromAS400)
Converter.convertToEBCDIC(String textFromJava)
Run Code Online (Sandbox Code Playgroud)
谢谢,
斯科特
所以我应该使用Java将EBCDIC文件转换为ASCII.到目前为止,我有这个代码:
public class Migration {
InputStreamReader reader;
StringBuilder builder;
public Migration(){
try {
reader = new InputStreamReader(new FileInputStream("C:\\TI3\\Legacy Systemen\\Week 3\\Oefening 3\\inputfile.dat"),
java.nio.charset.Charset.forName("ibm500") );
} catch(FileNotFoundException e){
e.printStackTrace();
}
builder = new StringBuilder();
}
public void read() throws IOException {
int theInt;
while((theInt = reader.read()) != -1){
char theChar = (char) theInt;
builder.append(theChar);
}
reader.close();
}
@Override
public String toString(){
return builder.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
文件描述如下:
02 KDGEX.
05 B1-LENGTH PIC S9(04) USAGE IS COMP.
05 B1-CODE PIC S9(04) USAGE IS COMP. …Run Code Online (Sandbox Code Playgroud) 我们的要求是将EBCDIC文本发送到大型机.我们有一些中文字符,因此UTF8格式.那么,有没有办法将UTF-8字符转换为EBCDIC?
谢谢,Raj Mohan
是否有除EBCDIC之外的字符集不是7位ASCII的超集?
我有一个EBCDIC格式"000000 {"的值.我想将其转换为.Net Int32类型.任何人都可以让我知道我能做些什么吗?所以我的问题是给出一个字符串,其中包含EBCDIC中的带符号数字,我应该怎么做才能将它转换为.NET Int32.
非常感谢提前!
我正在制作一个C#程序,它能够动态读取用COBOL编写的IBM HOST Copybook,并生成一个SQL表.生成表后,我可以将文件上传到我的程序中,它将读取,从IMB-37转换并将文件插入到该sql表中.到目前为止,我几乎可以处理任何事情,尽管我遇到了REDEFINES的一些问题.
例如:
10 SOME-FIELD PIC 9(3) COMP-3. SCRRB205
4117 10 SOME-OTHER-FIELD REDEFINES 3041-17
4117 SOME-FIELD PIC X(2). 3041-17
Run Code Online (Sandbox Code Playgroud)
我理解在这种情况下重新定义取代了它上面的字段,虽然我不明白的是编译器如何知道它是否应该使用重新定义.我假设在这种情况下,它将是因为第一个是第二个是一个字符的数字,尽管在下面的例子中它们都使用了字符.
05 STREET-ADDRESS.
10 ADDRESS-LINE-1 PIC X(20).
10 ADDRESS-LINE-2 PIC X(20).
05 PO-BOX REDEFINES STREET-ADDRESS PIC X(40).
Run Code Online (Sandbox Code Playgroud)
我试图忽略重新定义,因为它总是占用相同的空间,但是在原始字段被打包并且重新定义的字段不是的情况下,我需要知道何时解压缩字段.
对此有任何帮助将是惊人的家伙!
我在.NET中使用Jon Skeet的EBCDIC实现来读取从大型机系统使用FTP以二进制模式下载的VSAM文件.它在这种编码中非常适合读/写,但它没有任何东西可以读取压缩十进制值.我的文件包含这些,我需要解压缩它们(显然是以更多的字节为代价).
我怎样才能做到这一点?
我的字段定义为 PIC S9(7)V99 COMP-3.
在代码中,开关用于将字母转换为连续值。优化编译器通常不会像切换前的简单连续数字条件那样完成这项工作。如何检测使用了哪个执行字符集和/或得出结论认为字母是连续的以用简单的条件替换它?
static long digit_value(char c)
{
if (c >= '0' && c <= '9')
return (c-'0');
switch(c) {
case 'a':
case 'A':
return 10;
case 'b':
case 'B':
return 11;
case 'c':
case 'C':
return 12;
case 'd':
case 'D':
return 13;
case 'e':
case 'E':
return 14;
case 'f':
case 'F':
return 15;
case 'g':
case 'G':
return 16;
case 'h':
case 'H':
return 17;
case 'i':
case 'I':
return 18;
case 'j':
case 'J':
return 19;
case 'k': …Run Code Online (Sandbox Code Playgroud)