COBOLⅠ-第4章 数据の印刷(中文翻译版).doc_第1页
COBOLⅠ-第4章 数据の印刷(中文翻译版).doc_第2页
COBOLⅠ-第4章 数据の印刷(中文翻译版).doc_第3页
COBOLⅠ-第4章 数据の印刷(中文翻译版).doc_第4页
COBOLⅠ-第4章 数据の印刷(中文翻译版).doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章,数据的印刷 41数据打印应该考虑的问题点 在数据打印上,应该考虑以下几点:(a) 大标题,小标题的打印(b) 行间距(c) 编辑(让打印的数据比较容易看清)去掉有效数字前不需要的0每三位加一个逗号加上通货记号编集前:打印什么还不知道。编集后:有大标题行,小标题行,数据也有货币符号和逗号,看起来更方便一些。 第4章,第5章学习可以打印日本文字的打印方法 汉字打印机,EBCDIK编码文字(英文,数字,假名,特殊文字等文字)以及KEIS编码文字(日文文字),可以打印。打印时,KEIS编码文字是EBCDIK编码文字的2倍。42 例题2 - 1 将从文件中输入的数据做成输入表。 输入输出数据形式(a) 输入数据形式 采购文件(b) 输出数据形式 采购清单处理标准 作为输入文件的记录的明细,1页上印刷25项 每一页,打印大标题和小标题 行与行之间空一行 单价,采购数量,总额,去掉有效数字前的0,3位一个豆号 单价采购额等有效数字前加注通货符号。4.3打印处理的顺序及PAD4.3.1 处理所需要的区域 输入区和输出区进货清单的输出区域,打印机的输出区域最大值只能保证384个字节。进货清单中的大小标题,明细行,这些要在作业区域中定义。 作业区域 (a)大标题行,小标题行的作业区域 大标题行,小标题行,要事前在作业区域中定义。打印时要把它传到输出区域打印。标题行的向出力领域移动的时候,用WRITE文。 (b)明细行的区域把要打印的一条输入数据,移动到明细行区域,再经由输出区域打印。(c) 与行数区域为判定采购文件是否已读完、要使用区域,还要把打印了的明细行计数、所已行数区域定义是必须的。432 主结构和前处理 主结构 文件打开的处理 前处理 变成1之前,进行循环处理 关闭文件处理 前处理 将设为0 输入采购文件的第一个记录433 主处理 明细行的打印 输入区域的各项目移到明细行区域,再经由输出区域打印明细行后,隔一行打印一行。明细行的移动,隔行打印处理,使用WRITE文进行。这种处理一直持续到输入数据没有为止。 行数计数及改页 每次打印明细行,加一行,如果行数计数到25,则换页。换页之后,行数(计数)又返回到0。标题的打印 改页后,打印大标题,小标题。 改页处理和打印大标题的处理,都使用WRITE语句来做。 为了打印出第一页的标题,要在前处理当中把行数的初期值设置为25。434 输入处理 输入采购文件中的记录 文件结束后,设为1 46 435 完成例题的PAD例题1、 在COBOL中,可以将作业区域的内容直接输出吗?答 不可以, 在WRITE之后,必须指定输出文件。 也就是说,一定要用输出区域指名的数据名(来写文), 因此,作业区域的数据一旦被传到输出区域后才能进行输出。4.4 IDENTIFICATION DIVISION 和 ENVIRONMENT DIVISION4.5 DATA DIVISION (FILE SECTION) 4.5.1 DATA DIVISION 的构成 在FILE SECTION中 记述输入文件与输出文件的文件和记录,在WORKING-STORAGE SECTION 中记述了处理必要的作业区域。4、5、2 FILE SECTION (1) 输入输出数据形式 (a) 输入数据形式 采购文件 文件名 记录名 (b)输出数据形式 采购清单 非模块纪录 文件名 记录名 汉字打印机的输出区域,要保有384字节的区域,即用英数文项目表示保有分成384位的区域4、6 DATA DIVISION 4、6、1 WORKING-STORAGE SECTION 作业区域要在WORKING-STORAGE SECTION中定义()层号 0149表示从属关系 01 从第8位开始写()FILLER 是对处理中不使用的项目起的约定名,可以省略()PICTURE形式指定项目的形式、长度及编集形式()VALUE定数 在定义的区域里,放入特定的数字或值,指定定数,定数有文字定数、数字定数、数学定数、日文定数、表意定数等。 不能指定与数据形式矛盾的定数。VALUE只能在WORKING-STORAGE SECTION中指定462 、行数区域的定义 是英数字项目1位,因为行数从025 ,所以行计数器要定义为数字项目2位用 PACK形式。463 标题区域和设定初始值(1)控制文字用区域 为了在打印机上打印数据时,能控制打印纸的走纸,所以在输出数据的前头的第1列是控制走纸用的控制文字,这个控制文字可以叫打印控制文字,根据WRITE中的空行、换页,系统自动设定。因此,控制文字要在输出数据开始的1列定义。但是,控制文字的内容不打印。(2)CHARACTER TYPE KEIS 像例题中的采购清单一样,打印的数据中包括日语项目时,在记录中,应该指定CHARACTER TYPE KEIS。()在打印控制文字的项目,不能指定在CHARACTER TYPE KEIS中。(3)保大标题行的区域 为大标题行全体起的数据名,叫做HI-大行标题,因为各项目不使用数据名来处理,写入约定用语的FILE 因为FILLER 可以被省略,本书中将其省略。 除了输出数据以外、在开始的地方,要确保1列的送纸的控制文字的区域。 特别是当大标题行包括日语时,必须指定CHARACTER TYPE KEIS 将送纸控制文字项目以后的项目总结形成集团项目,这个集团项目被指定为CHARACTER TYPE KEIS。(4)初始值的设定 在大标题行,小标题行的区域中都要事先指定标题文字的初期值,在保区域中,标题文字和值做为初始值被事前设定,用VALUE指定定数(关于定数在第3章已经学习过)。(a) 文字定数 被指定的定数,同英数字项目的移动相同,从区域的左端开始进入,剩余的部分为空格。 设空格为定数时,只需在左端的第一位指定空格,其他剩余部分都为空格,即只在一个位数指定空格,区域全体都可以变成空格。(b)数字定数 被指定的定数,同数字项目的移动相同以小数点为基准进入,其他部分填入0,当定数没有指定符号(+、)时,被认为是正数(c) 日语定数 被指定的定数同日语项目的移动相同,从左端开始写入,剩余部分为空白(d)表意定数 所谓表意定数,就是那些为了表示特定文字和值而事先决定好了拼写方式的预约用语。 指定表意ZERO 同指定数字定数0结果完全相同。 指定的表意定数为SPACE时,与文字定数中指定空格的结果一样。(5)大标题行的初始值设定(6)小标题区域和初始值设定 这个编程中,标题文字和除此之外的空白是分别加以记述,但是在文字定数和日语定数的时候,文字从指定区域的左端进入,多余的部分为空格,所以标题文字和右侧的空白可以在一起记述。这时,右侧空白及文字都要被作为日语项目,日语项目1位相当于有2个字节,10位的英数字项目变成5位的日文项目小标题的编程如下所示练习题: 在下面编程的VALUE的指定中,书写方式正确的,写出项目中的内容,错误的说明理由。问题1、 在打印时,输出数据的控制文字的1个字节中,不可以指定VALUE SPACE吗? 可不可以与右侧的空白合在一起定义?答可以指定,但是控制文字的1个字节的内容,并不是由程序员设定,而是根据WRITE文的空行及换页的指示,由系统自动设定的,只要保留了这个区域,内容是什么都没有问题。可以将右侧的空白合在一起定义。问题2、 WORKING-STORAGE SECTION 中,按照大标题行、小标题行,明细行这样的顺序来定义区域,必须按这一顺序进行记述吗?答:以什么样的顺序记述都没关系。问题3、 文字定数和日语定数的位数较多,在一行写不下的情况下如何处理? 答 首先,要尽量保证文字定数和日语定数的完整性,将VALUE以后的内容尽可能,写在一行(如编程例1),还可以将该项目分开(如编程例2)记述。 在引用符开始和引用符结束之间进行换行的时候,要用续行符来指示接续。接续的方法 第1行用72位第2行的第7位写上续行符第2行从12位以后写引用符,然后写出文字定数和日语定数问题4、 本书中的关于标题行的例子中,是将日语项目的标题和它右侧的空格结合在一起记述的,在此,右侧的空格的大小以2个字节换算成1位的日文项目的位数来记述。如某右侧的空白的大小为奇数位时,该如何记述?答 空白的区域为奇数位时,不能将日语的标题文字和空白结合记述。 这时标题文字和空格分别加以记述。问题5、 在作业区域中定义标题行和明细行的区域的时候,有效文字右侧的空格不用定义吗? 答 不必定义。用WRITE 文打印数据时,首先将作业区域行的内容移动到输出区域,这时,根据集团项目的移动规则,剩余的地方为空白,所以没有必要定义右侧的空白区域。另外,输出区域的数据在打印机上打印的时候, 对超过打印用纸1行长度的空格不打印。问题6 数字定数0和表意定数ZERO相类似,那文字定数0和表意定数ZERO是否完全相同?答:不同。4.6.4 明细行区域与编集输入记录的各项目在明细行中打印。同时,在各项目间事先用初始值填入空白,然后,将单价、数量、购进额等数据每三位用逗号隔开,在前面添上货币记号等这样的编集处理。(1) 编集 英数字项目原封不动地移动到明细行中打印就可以,但是数字项目为了看起来更方便,要进行编集处理。 编集要做到以下事情: 清除有效数字前无效的0 每3位插入逗号 插入小数点 增加货币符号 追加符号 在指定编集形式的项目中、如果移动数据,就能进行数据的编集。(2) 编集形式的指定()形式 数值数据的编集形式用以下的编集文字来指定。9 表示数字1位Z 去掉有效数字前不要的0, 插入逗号. 插入小数点¥ 追加货币符号、 追加符号(a) 数字原封不动打印时(编集数字9)(b) 编集文字9,表示有一位数字原封不动的打印 没有指定小数点时,假定小数点在最右端,以小数点为基础进行移动、编集(b)除去有效数字前不要的0 编集文字Z表示有一位数字,把有效数字前的0 转换为空格来表示。例:的0消去,然后再打印。(c) 插入逗号编集文字 在想插入逗号的位置上指定编集文字“,”指定了逗号,数字的表示位数也同时加长了。在指定的地方加入逗号,有效数字前面逗号以及0都被置换为空白。(d)追加货币符号(编辑文字:¥) 货币符号的编集分为固定编集和浮动编集2种。 固定编集在数据前面同样位置打印编集文字。 浮动编集在数据的有效数字的前一位打印编集文字。 总之,根据值得不同,编集文字的位置有所移动。()固定编集在固定编集中,在开始的地方指定一个通货符号。接受方只增加了一个符号位的长度。()浮动编集 在浮动编集中,指定二个以上连续的通货符号。接受方增加了指定的符号位数的长度。例:有效数字的前面加通货符号打印 关于固定编集的例子Z的部分,全部用¥来替换。货币符号,添加在有效数字前面,有效数字前的0或逗号,用空格置换。 (e)增加小数点时(编辑文字:、) 指定编辑文字“”(同终止符一样的符号)。接受方的数位只增长相应的长度。例:打印小数点有两位的数据 (f)符号的编集(编辑文字:+,-) 在被指定的位置上打印符号 ,接受方,只增长了符号位的长度。 ()使用编辑文字“+”时 正值移动时打印的符号 负值移动时打印的符号 ()使用编集文字“”时 正值移动时不打印符号,用空格补足。 负值移动时打印的符号。例:数据是负的时候,打印号 符号分为固定编集和浮动编集2种。上面的例子是固定编集,浮动编集时,连续2次以上的符号。本书所使用的作业区域的数据名的命名方法。本书中,作业区域的数据由于WORKING-STORAGE SECTION,在前头加上W-。而且,像标题行,明细行等用于打印输出的数据,以及其他,在数据名之前,为明确数据的位置加注文字。因为他们使用的都是日文文字,HI-,D-等,因此在编程用纸上1个文字,占2位。 练习题4-2 1下面的文章,是关于到现在为止学到的内容。请在()种填入适当的语句。 打印数值时,为便于阅读,每3位插入1个逗号,去除有效数字前不用的0,插入小数点,加上货币符号,这叫做()。以()来指定编集的形式,用()语句移动数据是进行编集。 追加货币符号有2种方式,经常在指定的位置加入货币符号的(),和在有效数字的前一位加入货币符号的()。 追加货币符号,正负符号,插入小数点时,接受方仅增长货币符号和逗号等文字数的相同的位数,比如,在7位的数值中,每3位插入一个逗号,加上货币符号,整体上占()位的区域。 2下面是MOVE语句实行时接受方的数据,或者说为了出现如下图的显示,该如何指定PICTURE?问题1 插入逗号,必须每3位才可以吗? 答:不,不是3位也可以。作为金额编集印刷时,通常是每3位插入一个逗号的。但仅仅作为数字列加以区分时,每两位,每四位,可以在任何位置插入。 问题2:关于带有2位小数部分的数据,可以象下面这样,指定编集,除去0吗? 答:不能。编辑文字Z,对数字位置的全部,或者只能对小数点左侧的数字可以指定。 关于货币符号或符号的浮动编集是一样的。问题3 编辑用的文字,也可以用括号围起来进行循环吗? 答:可以,但是,编集用的文字按原样记述更容易理解。例:能够做像下图所示的循环指定 问题4 6位的数字项目,每3位插入逗号,进行货币符号的浮动编集,要写成¥,¥,¥9。 答:不对。这是在6位的¥,¥9,在前面追加1位编辑文字,指定为¥,¥9。不能指定¥,123,456这样的编集。 问题5 虽然编集文字的和能用浮动编集表示,但要怎样指定呢? 答:同货币符号一样,或要连续指定2次,可以在有效数字的前一位打印符号。 数据是正的时候为空格(符号不打印)47 PROCEDURE DIVISION(主过程) 在主过程中,打开文件,实行前处理,直到变成1为止一直进行主处理的循环。然后关闭文件,程序终了。48 PROCEDURE DIVISION(前处理) 在前处理中,设定为0,行数设定为25,指示实行输入处理,输入第1件记录。设定时0是文字定数,所以必须要用引用符。4.9 PROCEDURE DIVISION(主处理)4.9.1 数据的比较(IF文) 比较2个数据,根据结果选择不同处理。 IF文 ()条件 比较计算结果,加以表示。 ()THEN语句 条件成立时,实行的语句。 可以为多条语句。 ()ELSE语句 条件不成立时,实行语句。 ()CONTINUE 不论条件是否成立,当没有应该实行的语句时,记述约定用语CONTINUE、它表示实行IF语句的下一条语句。 ()ENT-IF 表示IF语句结束。 条件 条件是指,比较项目与被比较项目用比较计算符连接起来的式子。 在第3章学习PERFORM语句的条件时,也记述了同样的规则。 (a)比较计算符 比较计算符(,=,=,=)的前后,要有1字以上的空格。 比较的种类 比较分为英数字项目,数字项目,日文项目等比较。(a) 数字项目比较 当比较数据位数字项目或数字定数时,考虑符号,小数点的位置,用数值的大小来比较。和比较时,判定大(b) 英数字项目比较 比较数据为英数字项目或文字定数时,从数据的左端开始,一个一个文字比较,根据EBCDIK表的顺序决定大小。大小的顺序,空格特殊文字假名英文数字。比如说,英文A与B比较,B较大,Z同1比较,1较大。例1比较项目同被比较项目位数相同时 从左侧起按顺序比较,判断数据4大于数据3。例2比较项目与被比较项目位数不同时位数相异时,将短的一方的右侧用空格补足,与长的进行比较。在这个例子中,数据3与数据5相等。 日文项目的比较 比较数据为日本项目或日文定数时,从数据的左侧开始一个一个文字,参照KEIS表的顺序决定大小。 大小的顺序,特殊文字数字英文平假名片假名汉字。 KEIS表,因为文字的种类很多,本书没有具体记录。从左面开始比较数据,按照KEIS表比较的话,那么,大。 PAD与IF语句(a) 当条件成立,或条件不成立时,都有执行的命令语句。 条件成立时(数据1数据2时)实行1处理,IF语句的下一条语句,即转移到H处理。 条件不成立时(数据1数据2时)实行2处理,IF语句的下一条语句,即转移到H处理。(b) 条件不成立时,没有执行语句。 条件成立时(数据1数据2时) 实行1处理,IF语句的下一条语句,即转移到H处理。 条件不成立时(数据1数据2时)根据CONTINUE指定,IF语句的下一条语句,即转移到H处理。行数等于25的时候,也就是说条件成立的时候,进行打印大标题行小标题行的和行数设0的处理。行数不等于25的时候,也就是说不满足条件的时候,不进行任何处理,所以进行指定CONTINUE.THEN 和ELSE要错位些,这样更容易看。 问题1 在IF语句中,可以(嵌入)写IF语句吗? 答:可以。但是,一个IF语句的结束时,一定有一个END-IF语句对应。 问题2 在例题中,行数的25是用MOVE语句传入的,与此相对,是不是也可以在WORKING-STORAGE SECTION中的VALUE中定义?答:没关系。也就是说,在WORKING-STORAGE SECTION中指定的VALUE,在程序运行之前,要先代入数值。然后,在这一区域内的内容,有可能在PROCEDURE DIVISION中被变更。 编程如下。4、9、2数据的打印打印数据。 WRITE语句 ()记录名 指定输出的记录名(输出区域的名称)。 ()数据名 打印的内容,从指定的数据名(作业区域中定义的数据)装入输出区域 ()AFTER 只能在用打印机输出时加以指定,表示转行,换页之后的打印。 *整数 指定换行数 换行数099之间 *PAGE 换页时,要指定约定用语PAGE,而不是整数。 ()WRITE语句是指,将在FROM后指定的数据名的内容,转移到记录名指定的输出区域,然后打印。 ()根据被AETER指定的换行,换页的情况,控制文字被自动放入输出区域的最开始的1列,根据这个控制文字进行打印大标题行换页打印,小标题行和明细行隔行打印、打印明细行前,要把输入区域中的数据移动到明细行中,明细行中的必要数据齐了之后打印、打印完毕之后,行数加1。 410 PROCEDURE DIVISION(输入处理) 输入处理,从输入文件中输入记录。输入文件的记录被读完后,设置成1。总结 换页处理 每次印刷明细行时,行数加1。 行数为25时,换页,印刷标题。 换页后,行数回到0。 行数在初始值时被设定为25。 打印机的输出区域 能打印日文文字(KEIS编码)的打印机,设定384个字符的区域。 标题行,明细行的作业区域 在输出数据开始的1个字符,定义为打印机控制文字用的区域。 打印包括日文项目在内的数据时,指定CHARACTER TYPE KEIS。 用VALUE预先设定标题文字以及项目间的空格的初始值。 对数值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论