基于IBM大型机的COBOL语言的数据类型
- 格式:pdf
- 大小:99.60 KB
- 文档页数:2
cobol 语法COBOL语法COBOL(Common Business-Oriented Language)是一种面向商业应用的编程语言,特别适用于处理大型数据和事务处理。
本文将介绍COBOL语法的一些关键要点,并展示其在实际应用中的一些特性。
一、程序结构在COBOL中,程序由多个部分组成,包括IDENTIFICATION DIVISION、ENVIRONMENT DIVISION、DATA DIVISION、PROCEDURE DIVISION等。
IDENTIFICATION DIVISION用于声明程序的名称和作者信息,ENVIRONMENT DIVISION用于定义程序的运行环境,DATA DIVISION用于定义数据,PROCEDURE DIVISION用于编写程序逻辑。
二、数据类型COBOL提供了多种数据类型,包括数字、字符、日期等。
数字类型可以是整数或浮点数,字符类型可以是单个字符或字符串。
日期类型可以表示年、月、日或日期和时间。
在使用数据类型时,需要声明变量的名称和类型,并为其分配初始值。
三、变量和常量在COBOL中,变量和常量都需要使用特定的关键字进行声明。
变量用于存储和处理数据,而常量是固定的数值或字符串。
变量和常量的名称必须符合特定的命名规则,并且需要在使用之前进行定义和初始化。
四、条件语句COBOL提供了多种条件语句,用于根据条件执行不同的程序逻辑。
其中最常用的是IF语句,可以根据条件判断是否执行某个程序块。
在条件语句中,可以使用比较运算符(如等于、大于、小于)和逻辑运算符(如AND、OR)进行条件的组合和判断。
五、循环语句COBOL提供了多种循环语句,用于重复执行某个程序块。
最常用的是PERFORM UNTIL和PERFORM VARYING语句。
PERFORM UNTIL语句会在满足条件之前一直执行程序块,而PERFORM VARYING语句会在指定的范围内重复执行程序块,并可以根据循环变量的值进行控制。
COBOL简易教程主要内容1.COBOL语言的基本概念及程序的结构•一个例子●COBOL程序的结构●COBOL源程序的书写格式2.COBOL数据表示•常量•层次的概念•PICTURE语句•数据在内存中的各种形式3.算术运算●变量赋值 (MOVE, MOVE CORR)●算术运算(ADD, SUB, MUL, DIV, COMPUTE等)●内部函数4.字符串处理●合并、分离、取子串、替换等5.程序逻辑控制•条件的分类•IF、EVALUATE●PERFORM6.表处理定义、赋值、引用、查询7.读、写多格式记录文件8.常用语句小结9.子程序1.关于COBOL的初步知识◆COBOL是Common Business Oriented Language (通用商业语言,或称管理语言)的缩写◆最适用于数据处理◆比较接近于自然语言(英语)◆COBOL的结构严谨,层次性强◆COBOL的缺点是比较烦琐。
1.1 一个例子:***************************************************************** * * COBOL TRAINING PROGRAM * * VERSION 2.1.0 COPYRIGHT (C) 2004 * * WISTRON DALIAN SOFTWARE CO., LTD. * * ALL RIGHTS RESERVED. * * * **************************************************************** IDENTIFICATION DIVISION.PROGRAM-ID. EXERCIS6.AUTHOR. QXLU (WISTRON DALIAN).DATE-WRITTEN. 04-06-23.DATE-COMPILED. 04-06-23.*----------------------------------------------------------------* * COMMENT : * * * *----------------------------------------------------------------* ENVIRONMENT DIVISION.CONFIGURATION SECTION.SOURCE-COMPUTER. IBM-3084.OBJECT-COMPUTER. IBM-3084.INPUT-OUTPUT SECTION.FILE-CONTROL.SELECT DDI01 ASSIGN TO "DDI01".SELECT DDO01 ASSIGN TO "DDO01".*DATA DIVISION.FILE SECTION.*FD DDI01 LABEL RECORD IS STANDARD DATA RECORD AREIN-AREA0, IN-AREA1.01 IN-AREA0.05 IN-YEAR-NUM PIC 9(2).05 IN-PRINCIPAL PIC 9(4)V99.05 FILLER PIC X(07).05 RMARK PIC X(01) VALUE X"0A".01 IN-AREA1.05 IN-INTEREST-RATE OCCURS 5 TIMES PIC V999.05 RMARK PIC X(01) VALUE X"0A".FD DDO01 BLOCK 0 RECORDS LABEL RECORD STANDARD RECORDING F.01 PRT-REC.05 FILLER PIC X(79).**===============================================================* WORKING-STORAGE SECTION.01 IN-FILE-DATA.05 YEAR-NUM PIC 9(2).05 PRINCIPAL PIC 9(4)V99.05 INTEREST-RATE-TABLE.15 INTEREST-RATE OCCURS 5 TIMES PIC V999.*01 HEADER0 PIC X(79) VALUE' TABLE OF SIMPLE INTEREST'.01 HEADER1 PIC X(79) VALUE' ************************************'.01 HEADER2 PIC X(79) VALUE' PRINCIPAL 4,000.00 FOR 10 PERIODS'.01 HEADER3 PIC X(79) VALUE SPACE.01 HEADER4 PIC X(79) VALUE' PERIOD INTEREST RATE'.01 HEADER5.05 OUT-I-R OCCURS 5 TIMES PIC BBBBBBBBB.999.01 DETAIL0.05 OUT-PERIOD PIC ZZZ.05 OUT-P-I-S-ITEM OCCURS 5 TIMES.10 FOURSPACES PIC X(04) VALUE SPACE.10 OUT-P-I-SUM PIC 9,999.99.01 CNT-YEAR-NUM PIC 9(2).01 I-R-INDEX PIC 9.01 P-I-SUM PIC 9(6)V99.****************************************************************** * P R O C E D U R E D I V I S I O N * ***************************************************************** PROCEDURE DIVISION.*INPUT-DATA SECTION.OPEN INPUT DDI01.OPEN OUTPUT DDO01.READ DDI01.MOVE IN-YEAR-NUM TO YEAR-NUM.MOVE IN-PRINCIPAL TO PRINCIPAL.READ DDI01.MOVE IN-AREA1 TO INTEREST-RATE-TABLE.*PROCESS-OUTPUT-DATA SECTION.*PRINT HEADERWRITE PRT-REC FROM HEADER0 BEFORE 1.WRITE PRT-REC FROM HEADER1 BEFORE 1.WRITE PRT-REC FROM HEADER2 BEFORE 1.WRITE PRT-REC FROM HEADER3 BEFORE 1.WRITE PRT-REC FROM HEADER4 BEFORE 1.* PRINT INTEREST RATEPERFORM TEST BEFORE VARYING I-R-INDEXFROM 1 BY 1 UNTIL I-R-INDEX > 5MOVE INTEREST-RATE( I-R-INDEX ) TO OUT-I-R( I-R-INDEX )END-PERFORM.WRITE PRT-REC FROM HEADER5 BEFORE 1.*PROCESS & PRINT DETAILSPERFORM PRINT-DETAILVARYING CNT-YEAR-NUM FROM 1 BY 1UNTIL CNT-YEAR-NUM > YEAR-NUM.*CLOSE-FILES SECTION.CLOSE DDI01.CLOSE DDO01.*STOP RUN.**---------------------------------------------------------------** PRINT-DETAIL **---------------------------------------------------------------*PRINT-DETAIL SECTION.*MOVE CNT-YEAR-NUM TO OUT-PERIOD.PERFORM PROCESS-DETAILVARYING I-R-INDEX FROM 1 BY 1 UNTIL I-R-INDEX > 5.WRITE PRT-REC FROM DETAIL0 BEFORE 1.*PRINT-DETAIL-RTN.EXIT.**---------------------------------------------------------------** PROCESS-DETAIL **---------------------------------------------------------------*PROCESS-DETAIL SECTION.*COMPUTE P-I-SUM = PRINCIPAL *( INTEREST-RATE( I-R-INDEX ) * CNT-YEAR-NUM + 1 ).MOVE P-I-SUM TO OUT-P-I-SUM( I-R-INDEX ).*PROCESS-DETAIL-RTN.EXIT.** *** END OF CODING EXERCIS6 ***1.2 COBOL 程序的结构(1/p4)部(Division) 一部可包括若干节节(Section) 一节可包含若干段段(Paragraph) 一段可包含若干句子句子(Sentence) 一个句子可包含若干语句语句(Statement) 制定计算机完成一定的操作子句(Clause) 制定完成某一方面的功能每个程序应包含四个部IDENTIFICATION DIVISION (标识部)主要用来指定源程序名字,也可以写入其他用作备忘的某些信息(如日期、作者等)。
浅谈cobol的几种数据类型COBOL中使用PICTURE子句来定义数据类型. 主要的数据类型有以下几类, 我将分几篇文章分别讲述他们的使用和注意的地方.类型示例说明字母形 A(2) 只能使用26个字符和空格.字符形 X(2) 可以使用字符集定义的字符和数字数字形 S9V99 数字形有三个类型, binary, packed decimal, zoned decimal.数字编辑 -zz9.99 用于格式化数值输出其他如DBCS类型, 浮点形在COBOL使用很少.对于字符,字母形都比较好理解, 所占字符数, 就是其定义的个数. 对于数字编辑形,仅仅用于格式化数值, 不能进行数值运算和布尔比较. 计算字符数需要如下计算:eg: -zz99.99 所占字符数就是计算所有定义字符数, 1(-)+2(zz)+2(99)+1(.)+2(99)=8. 其中-号表示负数显示-号, 正数不显示+号. zz表示前导0, 就是不显示前面的0.eg:PICTURE Value of Data Edited Result-ZZ99.99 +123.45 123.45-ZZ99.99 -123.456 - 123.45至于详细的各类符合和数值编辑的使用, 将会专门写一章来讲述.我们详细说一下数值形,按照带不带符合,可以区分符合形, 非符合形. 安装存储类型分为binary, packed decimal, zoned decimal.以下举例详细说明,zone decimal 一般称9型. eg 9(4)V99或者s9(4)V99, 每个9占一位,符号和V不占位. 示例就分别是6. 如果这个值是1234.56,在内存存储分别是'F1F2F3F4F5F6','F1F2F3F4F5C6'. 对于无符号,就是123456的EBCDIC码,对于带符号,对于正数,最后的F为C表示正,负数为D表示负.示例就是'C6'.packed decmial 也是COMP-3型. 9(4)V99 COMP-3或者s9(4)v99 comp-3型.存储长度计算为[x/2]+1,[x/2]+1表示9的总个数+1/2的取整, 原因是做了压缩存储,这个示范就是4. 如果这个值是123456, 在内存存储分别是'0123456F'和'0123456C', 对于无符号,最后补个F表示无符合,对于带符合,如果是正数就是C,负数就是D.所有总长度就是[x/2]+1.使用的时候, 数值型之间都可以直接进行各类操作. 但需要注意的是, 如果对于未赋值的COMP-3型, 在赋值前做任何计算操作, 将会导致数据例外, 但对于zoned decimal就会才有缺省值,不会有数据例外.还有, 若是作为db2的hv, 就必须类型与DB2的类型匹配, 如果一个9型的来接受,也会造成错误.COMP型的变量常用于表示半个字或者整个字(主机一个字是4个字节), 比如半个字也就是16BIT, 对于有符合的数来说就是-32767~+32767, 所以可以用S9(5) COMP来表示, 当然也可以用S9(4) COMP来表示(因为S9(4)表示的范围是-9999到+9999, 一个字节存不下, 也需要2个自己存储), 对于一个字就是S9(8)或者S9(9).详细可以自己计算.。
第1章 COBOL简介COBOL是Common Business Oriented Language的缩写,即公用面向商业语言的意思。
在系统地学习COBOL程序设计语言之前,有必要首先对COBOL有一个大致的了解。
本章将分别从背景知识、语法格式、以及实际创建COBOL程序3个方面对其进行简要介绍。
1.1 背景知识在介绍COBOL之前,首先需要了解一下大型机的概念。
大型机也叫主机、大机、mainframe等,属于一种商用高端服务器。
目前大型机主要由IBM公司所生产,最新型号为z系列大型机。
COBOL便是用于大型机上应用软件开发的最主要的程序设计语言。
大型机上的工作大体上可以分为两类,分别为系统方向和开发方向。
系统方向的分工很多,包括使用Tivoli监控系统;使用RACF进行安全管理;使用SMS进行存储管理等等。
开发方向的市场需求相对系统方向则要大得多。
对于开发方向,主要需要掌握以下知识。
❑COBOL:最主要的程序设计语言。
❑JCL:作业控制语言,调用由COBOL编写的程序。
❑VSAM:程序中通常用到的文件类型。
❑DB2:大型机上最主要的数据库,通常以COBOL语言为宿主语言。
❑CICS:用于联机交易的中间件,通常也是以COBOL语言为宿主语言。
对于以上知识,在本书中都有详细介绍。
此外,对于大型机底层的开发,还需要掌握大型机上的汇编语言。
对于大型机汇编语言,在本书中也有具体讲解。
COBOL作为大型机上最主要的程序设计语言,迄今已有40多年的历史。
然而,经过40多年的沧桑,COBOL不仅没有被淘汰,反而在当今愈加流行起来。
关于这一点,主要应该是由以下3个因素所决定的。
❑COBOL广泛应用于广泛应用于银行业、信用卡业、保险业、制造业、航空业等等。
这些领域对于稳定性的要求都是十分高的,因此从很大程度上也保证了COBOL的不可取代性。
❑COBOL自身也在不断发展和更新中。
例如,COBOL本身主要属于面向过程的语言。
CHAPTER 1 COBOL 概述COBOL 是Common Business Oriented Language 的缩写。
它不仅是商业数据处理的理想语言,而且广泛用于数据管理领域,因此COBOL 语言也被称为“用于管理的语言”。
一。
COBOL 语言的特点最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定的逻辑关系,大量的分类排序;COBOL比较接近英语,容易懂;通用性强,易移植,COBOL结构严谨,层次分明。
二。
COBOL的组成部分:1。
标识部(IDENTIFICATION DIVIS ION):用于标识程序名。
2。
环境部(ENVIRONMENT DIVISION):用于说明程序运行的环境。
3。
数据部(DATA DIVISION):用于说明程序中涉及的所有数据。
4。
过程部(PROCEDURE DIVIS ION):是程序的核心部分,它决定计算机应进行什么操作。
三。
最简单的COBOL 程序举例:COL 1 ---6 7 8 12---72 73---80IDENTIFICATION DIVIS ION。
PROGRAM-ID。
PSAMPLE1。
ENVIRONMENT DIVISION。
DATA DIVISION。
PROCEURE DIVIS ION。
DISPLAY …THIS IS A COBOL PROGRAM.‟STOP RUN。
四。
COBOL 源程序的书写格式:第1 至6 列为“标号区”。
第7列为“续行标志区”第8至此11列,称为“A区”。
程序中有些内容如部头,节头,段头,层号01,层号77 及文件描述符FD等应从A区开始写。
第12至此72列,称为“B区”。
写程序中的正文部分。
如过程部中的句子只能从B区开始写。
第73至80列,称为“注释区”。
五。
COBOL字符集包括:数字0 --- 9 ,字母A--- Z ,a --- z , 专用字符:+ - * / = , . ; … ( ) < > $ 及空格。
COBOL语言介绍相对地,科学计算方面的问题往往原始数据较少,但算法复杂;而数据处理方面的问题却常常需要面对大量的初始数据进行加工,加工过程是一些极其简单的运算(有时甚至不执行计算)或逻辑判断,但需要重复许多次,最后输出大量的结果数据,这些数据还往往是一些表格,这种数据的大量和可组织性及加工过程的简单和重复性构成了这类问题的主要特性。
在数据处理领域中,对数据的加工流程可能是成批的,也可能是零星或随机的,数据通常以记录为处理单位和以块为传输单位构成,文件和记录在数据处理中具有很重要的地位。
COBOL(COmmon Business Oriented Language)——是数据处理领域最为广泛的程序设计语言。
COBOL历史COBOL(COmmon Business Oriented Language)是第一个广泛使用的高级编程语言。
在企业管理中,数值计算并不复杂,但数据处理信息量却很大。
为专门解决经企管理问题,于1959年,由美国的一些计算机用户组织设计了专用于商务处理的计算机语言COBOL,并于1961年美国数据系统语言协会公布。
经不断修改、丰富完善和标准化,已发展为多种版本。
COBOL重视数据项合输入/输出记录的处理,对具有大量数据的文件提供了简单的处理方式。
从名字可以看出,它主要用于解决商业和企业管理等领域的大量数据处理问题,又称为企业管理语言、数据处理语言等。
Cobol语言的研制始于50年代末,当时计算机的生产已进入第二代,计算机应用领域开始从数值计算扩大到数据处理。
商业和企业事务管理中需要进行处理的数据量急剧增加,迫切需要有适用于这个领域的程序设计语言,以提高编制程序的质量和速度。
Cobol语言就是在这种社会背景下应运而生的。
也就是说,Cobol已经年过半百了。
Cobol正式发布于1960年4月,称为Cobol-60。
现在最新的版本应该是Cobol -2002了,而且还在不断改进中,未来的Cobol将支持XML等Web时代的新技术。
等。
目前,这些工作大多数是在IBM ES9000主机的SAFE应用系统平台上进行,该系统联机程序和联机计息程序是用IBM 370汇编语言实现的。
为方便汇编语言读写,在VSAM文件存储的数据中,数据存放格式进行了特殊的定义。
如日期存放采用X(3)型,01年03月15日,存入EBCD码为X‘010315’。
在进行年度计息时,为了实现各种复杂的运算工作,一般采用COBOL语言来实现各种运算。
而采用COBOL语言读取X(3)型数据时,读出的是字符型数据,不能直接进行运算,必须转换为COBOL数据类型的数据后才能进行相应处理。
如刚才的X‘010315’,需要转换为内部十进制数据X‘0010315C’。
本文介绍一种用COBOL语言实现字符型X(3)与内部十进制数据相互转换的方法。
由X(3)型转换为内部十进制由于日期数据总是大于零,在COBOL语言的工作单元节定义变量DATE-FIRST 后,再追加定义COBOL语言的最小数据单元X‘000C’,即十进制12。
由于重定义DATE-CASE为DATE-CHANGE后,DATE-CHANGE是原日期数据的1000倍,于是要在过程部将DATE-CHANGE除以1000。
首先,在COBOL程序WORKING-STORAGE SECTION. 中定义如下内容:WORKING-STORAGE SECTION.01 DATE-CASE.02 DATE-FIRST PIC X(3).02 DATE-SIGN PIC 9(4) COMP VALUE 12.;定点二进制数01 DATE-CHANGE REDEFINES DATE-CASE PIC 9(9) COMP-3. ;内部十进制数据01 DATE-HEX PIC X(3). ;转换前数据01 DATE-DEC PIC S9(7)COMP-3 . ;转换后数据然后,在过程部PROCEDURE DEVISION.中加入如下语句:PROCEDURE DEVISION.MOVE DATE-HEX TO DATE-FIRST .COMPUTE DATE-CHANGE = DATE-CHANGE / 1000.MOVE DATE-CHANGE TO DATE-DEC.由内部十进制转换为X(3)型在进行相反的转换时,要消除因COBOL语言数据类型标志“C”引起的原日期数据前多加的一个0,所以需要将转换数据乘以10,再取出前6位数据即可。
COBOL培训教程-11COBOL是一种过程型编程语言,最初由美国联邦政府财政部和IBM公司共同开发,主要应用于商业和金融领域。
随着计算机技术的不断发展和商业需求的变化,COBOL确立了其在企业信息系统中的重要地位。
而为了满足企业对COBOL程序员的需求,也为有志成为COBOL开发人员的IT专业人士提供了学习机会,许多培训机构开始提供COBOL培训教程,其中包括“COBOL培训教程-11”。
一、“COBOL培训教程-11”是什么?“COBOL培训教程-11”是一个专门为COBOL初学者或想深入学习COBOL的人提供的培训教程。
本教程涵盖了COBOL的基本语法、程序结构、数据类型、数据处理、文件处理、子程序等内容,同时还涉及到企业级COBOL程序的编写和调试。
本教程注重实践操作,通过编写实际的程序来帮助学习者更好地理解和掌握COBOL编程。
二、为什么要学习COBOL?COBOL是一种非常稳定、安全、高效的编程语言,被广泛应用于金融、制造、保险、医疗等行业的业务处理和管理系统。
许多企业的信息系统至今仍在使用COBOL编写的程序,需要维护和升级。
因此,学习COBOL开发有非常广阔的就业前景。
除此之外,COBOL还有以下优点:1. 语法简单易懂,学习门槛不高。
2. 可以处理大型数据,并有效地组织和管理数据。
3. 可以与其他编程语言或工具集成,提供灵活性。
4. 可以从源代码的角度审计系统,保证信息安全。
三、“COBOL培训教程-11”的学习流程1. 熟悉COBOL开发环境学习COBOL之前,需要熟悉COBOL开发环境。
现有的主流开发环境包括微软Windows、Linux、UNIX等,还需要安装COBOL编译器和调试器等开发工具。
在学习过程中需要熟练掌握开发环境的基本使用方法。
2. 学习COBOL基本语法COBOL的基本语法包括程序结构、基本语句、数据类型、运算符等。
学习者需要熟悉这些基本语法,从而能够编写简单的COBOL程序。
大型机面试,COBOL面试试题经过IBM大型机培训,IBM大型机学习后,我们将面临着面试,面临着企业选择。
下面我们推出大型机面试试题供大家学习训练:Q1) Name the divisions in a COBOL program ?.A1) IDENTIFICATION DIVISION, ENVIRONMENT DIVISION, DATA DIVISION, PROCEDURE DIVISION. Q:列举COBOL的DEVISIONA:标识部,环境部,数据部,过程部Q2) What is the LINKAGE SECTION used for?A2) The linkage section is used to pass data from one program to another program or to pass data from a PROC to a program.Q:LINKAGE SECTION有什么用A:LINKAGE SECTION是用来将数据从一个程序传到另一个程序或者从一个过程(PROCEDURE)传到一个程序Q3) How do you define a sort file in JCL that runs the COBOL program?A3) Use the SORTWK01, SORTWK02,….. dd names in the step. Number of sort datasets depends on the volume of databeing sorted, but a minimum of 3 is required.Q:怎么在JCL中定义一个排序文件来跑这个COBOL程序A:用SORTWK01, SORTWK02,…..作为DATA SET NAME。
用多少取决于你要排序的数量,但是至少3个。
Q4) What is 77 level used for ?A4) Elementary level item. Cannot be subdivisions of other items (cannot be qualified), nor can they be subdivided themselves.Q:77层有什么作用A:基本层数据项,不能用做细分别的层,也不能被细分Q5) What is the difference between performing a SECTION and a PARAGRAPH? - GSA5) Performing a SECTION will cause all the paragraphs that are part of the section, to be performed. Performing a PARAGRAPH will cause only that paragraph to be performed.Q:执行一个区和一个段有什么区别A:简单来说的话就是区的概念比段大,执行一个区就要执行其内部所有段,执行段的话只执行该段。