COBOL论文翻译093303张爽文档格式.docx
《COBOL论文翻译093303张爽文档格式.docx》由会员分享,可在线阅读,更多相关《COBOL论文翻译093303张爽文档格式.docx(11页珍藏版)》请在冰点文库上搜索。
(3)itreducesthetimeittakestomakemodificationsandreducesduplicationofeffort;
ifachangeneedstobemadetoadataentry,itcanbemadejustoneinthelibrarywithouttheneedtoalterindividualprograms;
and(4)libraryentriesareextensivelyannotatedsothattheyaremeaningfultoallusers;
thisannotationresultsinbetter-documentedprogramsandsystems.
Mostoften,theCOPYstatementisusedtocopyFDand01entriesthatdefineanddescribefilesandrecords.Inaddition,standardmodulestobeusedinthePROCEDUREDIVISIONofseveralprogramsmayalsobestoredinalibraryandcopiedasneeded.
Organizationsthathavelargedatabasesorfilesthataresharedmakefrequentuseoflibrariesfromwhichentriesarecopied.Studentsmayalsofindthatfileandrecorddescriptionentriesfortestdataforprogrammingassignmentshavebeenstoredinalibrary,whichmaythenbecopiedwhenneeded.
Eachcomputerhasitsownmachine-dependentoperatingsystemcommandsforcreatingandaccessingalibrary.Youwillneedtocheckyoucomputercenterfortherequiredentries.
2.ENTRIESTHATCANBECOPIED:
WiththeCOPYstatement,youmayincludeprewrittenENVIRONMENT,DATA,orPROCEDUREDIVISIONentriesinyoursourceprogramsasfollows:
ENVIRONMENTDIVISION:
Option1(withintheCONFIGURATIONSECTION)
SOURCE-COMPUTER.COPYtext-name,library-name.
OBJECT-COMPUTER.COPYtext-name,library-name.
SPECIAL-NAMES.COPYtext-name,library-name.
Option2(withintheINPUT-OUTPUTSECTION)
FILE-CONTROL.COPYtext-name,library-name.
I-O-CONTROL.COPYtext-name,library-name.
DATADIVISION:
Option1(withintheFILESECTION)
FDfile-nameCOPYtext-name,library-name.
Option2(withinaFileDescriptionentry)
01data-nameCOPYtext-name,library-name.
PROCEDUREDIVISION:
Paragraph-name.COPYtext-name,library-name.
Thelibrary-nameisanexternal-name.Itshouldbe1to8charactersandincludelettersanddigitsonly.
3.ANEXAMPLE:
SupposewehavecreatedalibraryentrycalledCUSTOMERthatcontainsthefollowing:
01CUSTOMER-REC.
05CUST-NOPICX(5).
05CUST-NAMEPICX(20).
05CUST-ADDRESSPICX(30).
05CUST-BAL-DUEPIC9(4)V99.
TocopytheentriesinCUSTOMERintooursourceprogram,codethefollowingatthepointintheprogramwhereyouwanttheentriestoappear:
COPYCUSTOMER
Thesourcelistingwouldappearasfollows(weuselowercaselettersforthecopiedlibraryentriestodistinguishthemfromthesourceprogramcoding):
TheCfollowingthesourceprogramlinenumbersindicatesthattheseentrieshavebeencopiedfromalibrary.SomesystemsuseanL(forlibrary)oranotherlettertodistinguishcopiedentriesfromprogrammer-suppliedones.
Asnoted,otherprewrittenprogramentriesbesidesfileandrecorddescriptionscanalsobecopied.
4.THEFULLFORMATFORTHECOPYSTATEMENT:
ACOPYstatementcanbeusednotonlytocopyprewrittenentriesbuttomakecertainchangestotheminthesourceprogram.ThefullformatfortheCOPYis:
Format:
COPYtest-name-1,library-name-1
IftheREPLACINGclauseisomittedfromtheCOPYstatement,thelibrarytextiscopiedunchanged.
TheREPLACINGoptionallowsvirtuallyanylibraryentrytobechangedwhenitisbeingcopiedintotheuser’ssourceprogram.ThisincludesCOBOLentriesaswellascommentsorotherelementsthatwouldappearas“pseudo-text.”Literalsandidentifierscanalsobechangedaswellas“words”thatrefertoCOBOLreservedwords.
Example:
UsingthelibraryentrycalledCUSTOMERintheprecedingexample,supposewecode:
COPYCUSTOMERREPLACINGCUST-NOBY
CUST-NUMBER,==X(5)==BY==X(6)==.
Thisresultsinthefollowingchangestothelibraryentrywhenitiscalledintothesourceprogram:
14C01customer-rec.
15C05cust-numberpicx(6).←Data-nameandPICclausehavebeen
changed
16C05cust-namepicx(20).
17C05cust-addresspicx(30).
18C05cust-bal-duepic9(4)v99.
TheREPLACINGclausedoesnotaltertheprewrittenentriesinthelibrary.Thatis,thechangesaremadetotheuser’ssourceprogramonly.
Typically,FDswithlongorcomplexrecorddescriptionsarecopiedintoprograms,asareSCREENSECTIONsandevenmodulesorparagraphsthatarecommontomorethanoneprogram.
Tablesarealsooftencopied.InChapter12,wesawthatsometablesarecodeddirectlyintheWORKING-STORAGESECTIONwithVALUEclauses.Supposethatrecordsinastudentfilecontainacode(01-10)identifyingeachstudent’smajor.Iftheschoolhasonly10majorsandthesemajorsarenotlikelytochange,wecancodetheminaCOBOLprogramas:
02JOR-TABLEVALUE‘ARTHISECOMATCSCPHIBIOENGSOCPSY’.
05EACH-MAJOROCCURS10TIMESPICX(4).
Thetablewouldconsistof10four-positionmajors,whereamajorcodeof1wouldindicateART,amajorcodeof2wouldindicateHIS(forhistory),andsoon.
Itislikelythatmorethanonefilemakesuseofthistableforprocessingstudentinformation.Analumnifile,adepartmentfile,andapersonnelfile,forexample,mayallneedthesetableentries.Itisbest,therefore,tostorethedatainalibraryandallowittobecopiedintoprogramsthatneedit.Moreover,sincethepossibilityexiststhatachangeofmajorcodesmightoccuronrareoccasions,youshouldstorethetabledatainasinglelocationsothatanychangeneedonlybemadeonce.
使用COPY来提高编程效率
目标
让你熟悉一下内容:
COPY语句的作用是:
复制存在于库中的程序的某些部分。
●介绍
●可以被复制的条目
●一个例子
●一个COPY语句的完整格式
1.介绍
COPY语句被用来给一个程序输送一系列已经写好并存放在库中的COBOL条目。
从库中复制条目与编码条目比起来有一下优点:
(1)它会省掉程序员相当一部分的编码和调试时间。
(2)它会提升程序的质量标准因为所有从库中复制的条目都会使用普通的数据名和过程。
(3)它会减少修改的时间并减少重复的工作。
还有(4)库中的条目都有详细的说明,对于所有的使用者来说它们更有意义;
这些说明会让你的程序和系统有更好的文件记录。
一般情况下,COPY语句都被用来复制FD和用来定义和描述文件和记录的01层条目。
此外,在一部分程序的过程部中使用的标准模块也可能被存放在库中,并根据需要被复制。
拥有大型数据库的组织或者被共享的文件都频繁地使用库,在这些库的使用中,条目被复制。
同学们可能也发现了:
编程作业的测试数据中所用到的文件和记录描述的条目已经存在于库中,它们可以在需要时再被复制。
每台计算机都用一个依赖于机器的、用于创建和访问库的操作系统指令。
要得到你需要的条目,你将可能要去检查你的计算机中心。
2.能够被复制的条目:
有了COPY语句,你可能会在你的源程序中用以下格式收入那些写好了的环境部,数据部,或者过程部的条目:
环境部:
选项1(包含配置节)
源计算机COPY文本名,库名。
目标计算机COPY文本名,库名。
特殊名COPY文本名,库名。
选项2(包含输入输出节)
文件控制COPY文本名,库名。
输入输出控制COPY文本名,库名。
数据部:
选项1(包含文件节)
FD文件名COPY文本名,库名。
选项2(包含一个文件描述条目):
01数据名COPY文本名,库名。
过程部:
段落名COPY文本名,库名。
此处的库名为外部名。
它应该是1到8个字符,只包括字母和数字。
3.一个例子:
设想我们创建了一个包含一下内容的叫CUSTOMER的库条目:
01CUSTOMER-REC.
05CUST-NOPICX(5).
将CUSTOMER中的条目复制到我们的源程序中,只需在你想要条目出现的程序顶端,进行一下编码即可:
COPYCUSTOMER
源列表将会如以下出现(我们用小写字母来表示被复制的库条目,一次来和源程序码区分):
跟在源程序行号后的C表示这些条目已经被从库中复制。
一些系统用一个L(对于库)或者另一个字母来区分从程序员提供的条目中被复制的条目。
如上所述,除了文件和记录描述以外的其他预先写好了的程序条目也能够被复制。
4.COPY语句的完整格式
一个COPY语句不仅能够用于复制预先写好的条目,而且可以在源程序中使它们发生特定的变化。
COPY的完整格式为:
格式:
COPY文本名-1,库名-1
如果REPLACING子句被从COPY语句中省略,那么库文本将被没有改变的复制。
REPLACING选项实质上允许任何库条目在被复制到用户的源程序中时被改变。
这包括COBOL条目和注释或者其它可能会被显示为“伪文本”的元素。
文字和标识符也能如那些引用到COBOL保留字的“单词”一样被改变。
例子:
在前面的例子中用到了被称为“CUSTOMER”的库条目,设想我们编了一下代码:
这导致了库中的条目发生一下的变化,当其在源程序内部被访问时:
15C05cust-numberpicx(6).←数据名和PIC子句被改变了
18C05cust-bal-duepic9(4)v99.
REPLACING子句不会改变库中预先写好的条目。
即:
只可能对用户的源程序做出修改。
通常情况下,是那些有着长且复杂的记录描述的FD被复制到程序中,就像条屏甚至模块或段中常见的多个程序一样。
表也能被复制。
在第12章中,我们看到一些表被用VALUE子句直接编码到工作储存节中。
设想一下,学生文件中的一个记录包含一个代码(01-10)以此来区分每个学生的专业。
如果学校只有10个专业,并且这些专业都不大可能发生改变,我们可以在COBOL程序中对其进行如下编码:
02MAJOR-TABLEVALUE‘ARTHISECOMATCSCPHIBIOENGSOCPSY’.
这个表由10个四位长的专业组成,当专业编码为1时表示此专业为艺术专业,当专业编码为2时表示此专业为历史专业,等等。
很有可能不止一个文件在处理学生信息时要使用这张表。
比如:
一个校友文件,一个部门文件,或者是一个个人文件,都有可能需要这些表条目。
因此,最好把数据存放在库中并允许它被复制到需要它程序中去。
此外,因为存在专业编码在极少数情况下发生改变的可能,你需要把表中的数据存放在单一位置以便让任何的改变只发生一次。