男生女生之间的不同:COBOL POINT
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 15:07:39
编译-就是将源程序翻译为机器代码,机器代码一般以
*.obj文件保存。
链接-就是将上一步产生的obj文件与操作系统动态库组合
为可执行的exe文件。
COMPILE LIKE-EDIT
//COBOL EXEC PGM=IGYCRCTL
//STEPLIB DD DSN=IGY330.SIGYCOMP,DISP=SHR -> COMPILER
//SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR
// DD DSN=SYS1.MODGEN,DISP=SHR
// DD DSN=SYS1.CEE.SCEEMAC,DISP=SHR
// DD DSN=©LIB,DISP=SHR ->copy book
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT2 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT3 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT4 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT5 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT6 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT7 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS), -> Compile out put obj file
// UNIT=3390,SPACE=(TRK,(1,1)),DCB=(LRECL=80,BLKSIZE=2300)
//SYSIN DD DSN=LUOBIC.TEST.COBOL(MAINPRO),DISP=SHR -> source program
//*****************************//
//*STEP2:LINK-EDITE LOADMODULES //
//*****************************//
//LKED EXEC PGM=HEWL,COND=(8,LT,COBOL),REGION=1024K
//SYSLIB DD DSN=CEE.SCEELKED,DISP=SHR
// DD DSN=LUOBIC.TEST.LOAD,DISP=SHR -> where subprobram exist
//SYSPRINT DD SYSOUT=*
//SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) ->link-edit input from compiling
// DD DDNAME=SYSIN
//SYSLMOD DD DSN=LUOBIC.TEST.LOAD(MAINPRO),DISP=SHR ->link edit output .exe file
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(1,1))
Run:
//LUOBICA JOB NOTIFY=LUOBIC
//*****************************
//* STEP3: RUN *
//*****************************
//GO EXEC PGM=MAINPRO,
// REGION=1024K
//STEPLIB DD DSN=CEE.SCEERUN,DISP=SHR
// DD DSN=LUOBIC.TEST.LOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//CEEDUMP DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
1.Cobol-PERFORM UNTIL END-PERFORM
PERFORM UNTIL CONDITION
END-PERFORM
MOVE 1 TO I
PERFORM 00010-PROCESS THRU 00010-EXIT UNTIL I > 3
Concusion:agnose condition first and the excute loop.
PERFORM WITH TEST BEFORE/AFETR UTIL CONDITION
END PERFORM
Note a. defaut is withe test before
b. check condition before or after first time execute
2.date /time
2.1 get current date from DB2Format
EXEC SQL
SET :WS-CURRENT-DATE = DATE(DAYS(CURRENT_DATE)) yyyy-mm-dd
END-EXEC
SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1 INTO :VARHH:MM:SS(15:48:45)
2.2 get current date from cobol
ACCEPT VARIABLE FROM DATEyymmdd
ACCEPT VARIABLE FROM DATE YYYYMMDD.YYYYMMDD
ACCEPT VARIABLE FROM TIMEHHMMSSss(ss is hundredths of the second)
2.3 get timestamp from DB22011-04-14 18:17:12.810517
EXEC SQL EXEC SQL SAME
SELECT CURRENT_TIMESTAMP INTO :VARSELECT CURRENT TIMESTAMP INTO :VAR
from SYSIBM.SYSDUMMY1from SYSIBM.SYSDUMMY1
END-EXEC END-EXEC
2.4.INSERT CURRENT DATE TO DB2
EXEC SQL
INSERT INTO TABLE
:VAR,
CURRENT_DATEcan't be CURRENT DATE
END-EXEC
3.movot char to position
MOVE '***** END OF REPORT *****'
TO PRT-REC1 (50:35)
4.change page Sample
01 WS-MAX-LINE pic s9(3) comp -3 value +56.SERS.MSI.RABIL.SRC.COBOL(ELTEST06)
01 WS-LINE-CTR pic s9(3) comp -3 value +60.
00000-MAIN.
Loop - read data file until eof(just a snario)
IF WS-LINE-CTR >= WS-MAX-LINE
WRITE RPT-REC FROM RPT-HEADER1
WRITE RPT-REC FROM RPT-HEADER2
MOVE 2 TO WS-LINE-CTR
END-IF
WRITE RPT-REC FROM RPT-DETAIL
ADD +1 TO WS-LINE-CTR
end-loop
5 .pass data to cobol from jcl
1. accept from sysin
accept variable
2. via parm when execute pgm
JCL- EXEC PGM=SRCNAME ,PARM='STRING'
cobol-
linkage section.
01 parm-buffer.
05 parm-length pic s9(04).
05 parm-data pic x(20).
Procedure division using parm-buffer.if need pass servel parmeters, then can put
together as one to pass. Then divided in the
program.
6.main program & sub program.
main program
DATA DIVISION
WORKING-STORAGEN SECTION.
01 X
01 Y
01 Z
PROCEDURE DIVISION.
call subprogram using x,y,z
SUBPROGRAM
DATA DIVISION.
LINKAGE-SECTION.
01 a pic
01 B pic
01 C pic
PROCEDURE DIVISION.
7.continuation Diffence
hypen - in line 7
7.1
DISPLAY 'ELBGBCRG - INSERT SUCCESSFUL. continue -contains blanks between column 72
- 'PLEASE CHECK REPORT LOG.'
7.2
DISPLAY 'ELBGBCRG - INSERT SUCCESSFUL.' continue - don't contains blanks
- 'PLEASE CHECK REPORT LOG.'
8. covert a Alpha to num
8.1 function UNCTION NUMVAL
01 WS-MAX-AO-NO PIC X(5)
01 WS-AO-NO PIC 9(5)
COMPUTE WS-AO-NO = FUNCTION NUMVAL(WS-MAX-AO-NO) + 1
8.2 using table to do
9. a string contains single quote- using 2 single quoutes
KEY ''A'' OR ''B''. PRESS CLEAR TO EXIT.'- using 2 single quotes
10. Static and Dynamic call
how to specifylinkedit
Static- call literal, and program is link-edited with cobol NODYNAMmuste be like-edited with caller
Dynamic1.call variable regardless DYNAM/NO DYNAM option
2.call literal, + like-edit(parm DYNAM)separate loaded modules, can be share by multiple callsers.
11. DCLGEN
DECIMAL(9,2) -> 05 FLDNAME PIC S9(7)V9(2).
12.CONTINUE & NEXT SENTENCE
CONTINUE-> TO NEXT STATEMENT
NEXT SENTENCE-> TO EXECUTE THE STATEMENT AFER A periord '.'
13. OPEN Modle PSKSDSESDS
OPEN INPUT
OPEN OUTPUT REPLACE EXIST REOCRDS IF FILE EXISTREPLACE EXIST REOCRDS IF FILE EXISTREPLACE EXIST REOCRDS IF FILE EXIST
OPEN I-O REWRITE(UPDATE RECORD)ADD NEW RECORD/REWRITE(UPDATE RECORD)REWRITE (UPDATE REOCRD),CAN'T use it add new rec
OPEN EXTEND ADD NEW RECORD AT END OF FILE Don't use it Add new record at end
14. ESDS SELECT STATEMENT
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO AS-EMPFIL the file name [ASSIGN TO] must prefix with 'AS-'
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-EMPFIL-STATUS.
in JCL CODE LIKE below:
//EMPFILE DD DSN=FILENAME,DISP=SHR
15. USAGE - DATA YTPE
A. USAGE IS DISPLAY(外部十进制)
B. COMP - 二进制
C. COMP-1 - 单精度浮点
D. COMP-2 - 双精度浮点
E. COMP-3 - 缩合十进制
value usage display comp-3
+12 F1F2 (OR F1C2) |01|2F|
-12 F1D2 |01|2D|
16. Initialize
X- spaces A-spaces 9- 0
17. REPLACE
REPLACE ==MDSBFLOG:== BY ==MDSBFLOG-==. /*replace string 'MDSBFLOG:' with 'MDSBFLOG-'
COPY MDSBFLOG.
REPLACE OFF.
*.obj文件保存。
链接-就是将上一步产生的obj文件与操作系统动态库组合
为可执行的exe文件。
COMPILE LIKE-EDIT
//COBOL EXEC PGM=IGYCRCTL
//STEPLIB DD DSN=IGY330.SIGYCOMP,DISP=SHR -> COMPILER
//SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR
// DD DSN=SYS1.MODGEN,DISP=SHR
// DD DSN=SYS1.CEE.SCEEMAC,DISP=SHR
// DD DSN=©LIB,DISP=SHR ->copy book
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT2 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT3 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT4 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT5 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT6 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSUT7 DD UNIT=3390,SPACE=(TRK,(1,1))
//SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS), -> Compile out put obj file
// UNIT=3390,SPACE=(TRK,(1,1)),DCB=(LRECL=80,BLKSIZE=2300)
//SYSIN DD DSN=LUOBIC.TEST.COBOL(MAINPRO),DISP=SHR -> source program
//*****************************//
//*STEP2:LINK-EDITE LOADMODULES //
//*****************************//
//LKED EXEC PGM=HEWL,COND=(8,LT,COBOL),REGION=1024K
//SYSLIB DD DSN=CEE.SCEELKED,DISP=SHR
// DD DSN=LUOBIC.TEST.LOAD,DISP=SHR -> where subprobram exist
//SYSPRINT DD SYSOUT=*
//SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) ->link-edit input from compiling
// DD DDNAME=SYSIN
//SYSLMOD DD DSN=LUOBIC.TEST.LOAD(MAINPRO),DISP=SHR ->link edit output .exe file
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(1,1))
Run:
//LUOBICA JOB NOTIFY=LUOBIC
//*****************************
//* STEP3: RUN *
//*****************************
//GO EXEC PGM=MAINPRO,
// REGION=1024K
//STEPLIB DD DSN=CEE.SCEERUN,DISP=SHR
// DD DSN=LUOBIC.TEST.LOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//CEEDUMP DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
1.Cobol-PERFORM UNTIL END-PERFORM
PERFORM UNTIL CONDITION
END-PERFORM
MOVE 1 TO I
PERFORM 00010-PROCESS THRU 00010-EXIT UNTIL I > 3
Concusion:agnose condition first and the excute loop.
PERFORM WITH TEST BEFORE/AFETR UTIL CONDITION
END PERFORM
Note a. defaut is withe test before
b. check condition before or after first time execute
2.date /time
2.1 get current date from DB2Format
EXEC SQL
SET :WS-CURRENT-DATE = DATE(DAYS(CURRENT_DATE)) yyyy-mm-dd
END-EXEC
SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1 INTO :VARHH:MM:SS(15:48:45)
2.2 get current date from cobol
ACCEPT VARIABLE FROM DATEyymmdd
ACCEPT VARIABLE FROM DATE YYYYMMDD.YYYYMMDD
ACCEPT VARIABLE FROM TIMEHHMMSSss(ss is hundredths of the second)
2.3 get timestamp from DB22011-04-14 18:17:12.810517
EXEC SQL EXEC SQL SAME
SELECT CURRENT_TIMESTAMP INTO :VARSELECT CURRENT TIMESTAMP INTO :VAR
from SYSIBM.SYSDUMMY1from SYSIBM.SYSDUMMY1
END-EXEC END-EXEC
2.4.INSERT CURRENT DATE TO DB2
EXEC SQL
INSERT INTO TABLE
:VAR,
CURRENT_DATEcan't be CURRENT DATE
END-EXEC
3.movot char to position
MOVE '***** END OF REPORT *****'
TO PRT-REC1 (50:35)
4.change page Sample
01 WS-MAX-LINE pic s9(3) comp -3 value +56.SERS.MSI.RABIL.SRC.COBOL(ELTEST06)
01 WS-LINE-CTR pic s9(3) comp -3 value +60.
00000-MAIN.
Loop - read data file until eof(just a snario)
IF WS-LINE-CTR >= WS-MAX-LINE
WRITE RPT-REC FROM RPT-HEADER1
WRITE RPT-REC FROM RPT-HEADER2
MOVE 2 TO WS-LINE-CTR
END-IF
WRITE RPT-REC FROM RPT-DETAIL
ADD +1 TO WS-LINE-CTR
end-loop
5 .pass data to cobol from jcl
1. accept from sysin
accept variable
2. via parm when execute pgm
JCL- EXEC PGM=SRCNAME ,PARM='STRING'
cobol-
linkage section.
01 parm-buffer.
05 parm-length pic s9(04).
05 parm-data pic x(20).
Procedure division using parm-buffer.if need pass servel parmeters, then can put
together as one to pass. Then divided in the
program.
6.main program & sub program.
main program
DATA DIVISION
WORKING-STORAGEN SECTION.
01 X
01 Y
01 Z
PROCEDURE DIVISION.
call subprogram using x,y,z
SUBPROGRAM
DATA DIVISION.
LINKAGE-SECTION.
01 a pic
01 B pic
01 C pic
PROCEDURE DIVISION.
7.continuation Diffence
hypen - in line 7
7.1
DISPLAY 'ELBGBCRG - INSERT SUCCESSFUL. continue -contains blanks between column 72
- 'PLEASE CHECK REPORT LOG.'
7.2
DISPLAY 'ELBGBCRG - INSERT SUCCESSFUL.' continue - don't contains blanks
- 'PLEASE CHECK REPORT LOG.'
8. covert a Alpha to num
8.1 function UNCTION NUMVAL
01 WS-MAX-AO-NO PIC X(5)
01 WS-AO-NO PIC 9(5)
COMPUTE WS-AO-NO = FUNCTION NUMVAL(WS-MAX-AO-NO) + 1
8.2 using table to do
9. a string contains single quote- using 2 single quoutes
KEY ''A'' OR ''B''. PRESS CLEAR TO EXIT.'- using 2 single quotes
10. Static and Dynamic call
how to specifylinkedit
Static- call literal, and program is link-edited with cobol NODYNAMmuste be like-edited with caller
Dynamic1.call variable regardless DYNAM/NO DYNAM option
2.call literal, + like-edit(parm DYNAM)separate loaded modules, can be share by multiple callsers.
11. DCLGEN
DECIMAL(9,2) -> 05 FLDNAME PIC S9(7)V9(2).
12.CONTINUE & NEXT SENTENCE
CONTINUE-> TO NEXT STATEMENT
NEXT SENTENCE-> TO EXECUTE THE STATEMENT AFER A periord '.'
13. OPEN Modle PSKSDSESDS
OPEN INPUT
OPEN OUTPUT REPLACE EXIST REOCRDS IF FILE EXISTREPLACE EXIST REOCRDS IF FILE EXISTREPLACE EXIST REOCRDS IF FILE EXIST
OPEN I-O REWRITE(UPDATE RECORD)ADD NEW RECORD/REWRITE(UPDATE RECORD)REWRITE (UPDATE REOCRD),CAN'T use it add new rec
OPEN EXTEND ADD NEW RECORD AT END OF FILE Don't use it Add new record at end
14. ESDS SELECT STATEMENT
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO AS-EMPFIL the file name [ASSIGN TO] must prefix with 'AS-'
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-EMPFIL-STATUS.
in JCL CODE LIKE below:
//EMPFILE DD DSN=FILENAME,DISP=SHR
15. USAGE - DATA YTPE
A. USAGE IS DISPLAY(外部十进制)
B. COMP - 二进制
C. COMP-1 - 单精度浮点
D. COMP-2 - 双精度浮点
E. COMP-3 - 缩合十进制
value usage display comp-3
+12 F1F2 (OR F1C2) |01|2F|
-12 F1D2 |01|2D|
16. Initialize
X- spaces A-spaces 9- 0
17. REPLACE
REPLACE ==MDSBFLOG:== BY ==MDSBFLOG-==. /*replace string 'MDSBFLOG:' with 'MDSBFLOG-'
COPY MDSBFLOG.
REPLACE OFF.
cobol教程
cobol编译器
cobol 1~100 합
COBOL将来有用吗
求一份COBOL文档......
COBOL教程 下载地址
COBOL高手请进!!!!
求助COBOL编译器
cobol中小数显示
求COBOL谭浩强版教材
cobol调用子程序
point at&point to
请问以下 ,COBOL难吗?>
cobol同时打开两个数据库
哪里有cobol电子教程
急求一份COBOL文档......
一个关于COBOL的问题
cobol编程问题......高手进
Power Point
Power Point
point 是什么意思?
point sprite
cobol与db2的连接怎么弄?
COBOL是什么东西? 谁能告诉我?