请问,COBOL中关键字REDEFINES的用法是什么?我无法理解手册的定义.
以下代码是什么意思?
 01 WS_CHARGE_TXT_8X                             PIC X(08) VALUE "10000000".  
 01 WS_CHARGE_NUM_8 REDEFINES WS_CHARGE_TXT_8X.  
     05 WS_CHARGE_8                               PIC 9(05)V9(03).  
谢谢!
我在一个企业环境中工作,在这个环境中,开始使用COBOL IMS和CICS进行编程的人主导着思维模式.今天,他们中的大多数都使用Java等更现代的语言编程.但是,如果你看看他们的代码和设计决策没有太大的改变
这些人并不笨,他们大多数都很聪明.但向他们解释现代编码实践感觉就像为盲人描述颜色.您是否有任何经验或技巧可以教他们更现代的方法而不会冒犯他们?
我在德国的一家大公司工作,并且得到了创建它的主要网站的工作,其中包括:
我决定使用COBOL来完成工作,它可能会被低估,但它是一种非常强大的语言,特别是对于商业应用程序,正如我的同事所说的那样,web(2.0)开发也是如此.
我还需要使用COBOL,因为公司的所有后端和交易系统都在其中编程(一些小部件也在LISP中编程,我不确切知道为什么).我还收到了一个API,可以轻松地将COBOL与MySQL结合使用.
这是一个大项目,可能需要2个多月的编程时间.
提前致谢
我是计算机科学专业的研究生.我的部门使用Java教授大部分课程(虽然我确实参加了一门关于系统架构的课程,该课程使用C来演示处理器调度,内存管理等等......但我离题了).
我想了解更多有关COBOL的信息,但我无法访问大型机系统.任何人都可以推荐一个免费的Windows COBOL编译器,使我能够通过一些基本的COBOL教程?
免责声明:是的,我已经用Google搜索过了,所以希望有些有经验的人能够提供更多信息.
谢谢!
我对COBOL数据类型感到困惑.像在许多采访中一样,要求解释COMP-3和COMP之间的区别......具体的区别是什么?COBOL中使用模式的含义是什么?它与数据类型有什么关系?
谢谢和问候,Manasi Kulkarni
很抱歉打扰你,但我被困在COBOL的作业上.我做了两次尝试,但都没有按预期工作.
下面显示了两次尝试及其输出,然后是最终结果.我感谢你们的帮助.
第一次尝试:
IDENTIFICATION DIVISION.
PROGRAM-ID. MAIL-LABEL.
*
******************************************************************
* This program prints duplicate side by side mailing labels.
******************************************************************
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT LABEL-FILE-IN
ASSIGN TO 'MAIL-LABEL.SEQ'
ORGANIZATION IS LINE SEQUENTIAL.
SELECT LABEL-FILE-OUT
ASSIGN TO 'MAIL-LABEL.RPT'
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD LABEL-FILE-IN.
01 LABEL-RECORD-IN.
05 NAME-IN PIC X(20).
05 ADDRESS-IN PIC X(20).
05 CITY-STATE-ZIP-IN PIC X(20).
FD LABEL-FILE-OUT.
01 LABEL-RECORD-OUT.
05 LEFT-LABEL-OUT PIC X(20).
05 BLANK-OUT PIC X(15).
05 RIGHT-LABEL-OUT PIC X(20).
05 …所以我应该使用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();
    }
}
文件描述如下:
 02 KDGEX.
      05 B1-LENGTH PIC S9(04) USAGE IS COMP.
      05 B1-CODE PIC S9(04) USAGE IS COMP. …是否可以在不提供输入文件的情况下执行COBOL代码?我正在使用cobc.
我试图将代码传递给cobc进程:
$ cat my-input.cbl | cobc
cobc: No input files
要编译文件并运行它,我会这样做:
cobc -x di.cbl -o a && ./a
假设我没有文件,我只有代码(可能在变量中,作为字符串),我可以传递给它cobc吗?它会比创建文件然后编译并运行它更好.
在我的例子中,用户输入COBOL程序的源代码,这是一个字符串变量.目前,我将代码保存在一个文件中,我编译它然后执行它.如果cobc支持在stdin中管道代码片段甚至cli选项,并生成二进制文件甚至直接显示结果(不确定这是好还是坏),那将是很好的.例如,node有-p选项:node -p'console.log(1)' - 这将输出1 \nundefined.g ++有这个功能 -
关于Cobol编程语言在这个论坛上的相关性有一些线索,例如这个线程链接到它们的集合.我对此感兴趣的是基于Gartner 1997年的一项研究经常重复的声明:当时有大约2000亿行代码正在使用中!
我想问一些问题来验证或伪造几个相关点.我的目标是了解这个陈述是否有任何真相,或者它是否完全不切实际.
我提前道歉是因为我对我不确定的事情表达我的思路和自己的看法有点冗长,但我认为这可能有助于把事情放在上下文中,从而突出我做出的任何错误的假设和结论.
有时候,"2000亿行"数字伴随着增加的声称,这相当于所有正在使用的语言中所有编程代码的80%.其他时候,80%只是指所谓的"商业代码"(或者其他一些模糊的短语,暗示读者不会算上主流软件,嵌入式系统或其他任何Cobol几乎不存在的东西).在下面我假设代码不包括对同一软件的多个安装的重复计算(因为这是作弊!).
特别是在y2k问题之前的时间,已经注意到许多Cobol代码已经有20到30年的历史了.这意味着它写于60年代末和70年代.那时,市场领导者是IBM和IBM/370大型机.IBM 在他的网站上公布了价格,配置和可用性的历史性公告.根据该表,对于具有高达半兆字节内存的机器,价格约为一百万美元.
问题1:实际销售了多少台大型机?
那段时间我没有找到任何数字; 的最新数据由Gartner对于2000年,再次.:^(
我猜想实际数字是数百或数千; 如果2000年的市场规模是500亿,并且市场像其他任何技术一样成倍增长,那么1970年可能仅仅几十亿.自IBM/370销售二十年以来,将产生二十万的二十倍在几万台机器中(这非常乐观)!
问题2:代码行中的程序有多大?
我不知道该架构上的一行源代码产生了多少字节的机器代码.但由于IBM/370是一台32位机器,所以任何地址访问都必须使用4个字节加上指令(2个,可能是3个字节?).如果算上该程序的操作系统和数据,那么有多少行代码可以放入半兆字节的主内存中?
问题3:没有标准软件吗?
每台售出的机器都运行一个独特的手动编码系统而没有任何标准软件吗?说真的,即使每台机器都是从头开始编程而没有重用遗留代码(等等......没有违反我们从一开始就开始使用的索赔之一),我们可能有O(50,000 loc/machine)*O(20,000台机器)= O(1,000,000,000 loc).
那仍然远远超过200亿!我错过了一些明显的东西吗?
问题4:我们需要多少程序员编写2000亿行代码?
我真的不确定这个,但如果我们平均每天10个位置,我们需要5500万人年来实现这一目标!在20到30年的时间范围内,这意味着必须有200到300万程序员不断编写,测试,调试和记录代码.那将是和我们今天在中国一样多的程序员,不是吗?
编辑:有几个人提出了自动模板系统/代码生成器等.有人可以详细说明这个吗?我有两个问题:a)我需要告诉系统它应该为我做什么; 因为我需要与计算机通信,计算机将输出代码.这正是编程语言的编译器所做的.所以基本上我使用不同的高级编程语言来生成我的Cobol代码.我不应该使用其他高级语言而不是Cobol吗?为什么中间人?b)在70年代和80年代,最珍贵的商品是记忆.因此,如果我有一个编程语言输出的东西,它应该更简洁.编辑结束
问题5:比赛怎么样?
到目前为止,我在这里提出了两件事:
1)IBM有自己的编程语言,PL/I.上面我假设大部分代码都是使用Cobol专门编写的.然而,在所有其他条件相同的情况下,我想知道IBM营销是否真的将自己的开发推向了市场,而不是Cobol在他们的机器上.PL/I真的没有相关的代码库吗?
2)有时候(也在上面引用的主题中的这个板上)我遇到了"2000亿行代码"对于"政府,银行......"(以及诸如此类)之外的任何人都是不可见的说法.实际上,国防部已经资助了他们自己的语言,以提高成本效益并减少编程语言的扩散.这导致他们使用Ada.如果他们主要使用Cobol,他们真的会担心拥有这么多不同的编程语言吗?如果在主流计算感知之外的"政府和军事"系统上运行任何语言,那么这种语言不会是阿达吗?
我希望有人可以指出我的假设和/或结论中的任何缺陷,并阐明上述声明是否有任何真相.
为什么COBOL必须缩进,因为在每个源文件中都有额外的间距?
考虑这段代码(注意额外的空格):
  IDENTIFICATION DIVISION.
  PROGRAM-ID. HELLO-WORLD.
  PROCEDURE DIVISION.
      DISPLAY 'Hello, world'.
      STOP RUN.
在Fortran代码中可以看到类似的格式:
   program hello
      print *, "Hello World!"
   end program hello
但为什么COBOL和Fortran需要这个空白?什么原因?