情人节……郁闷的节日
刚刚独立在ThinkPad R400上的Vista Basic中配置了Hercules,基本还算顺利。记录一下前几天在家的工作——把IBMUSER.HAVE.FUN(TESTDATA)这个80列的MEMBER复制并新建一个叫IBMUSER.HAVE.SEX的PS数据集。
COBOL源码。师傅说A区就不用缩进了。


1 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
2 *
3 IDENTIFICATION DIVISION.
4 PROGRAM-ID. CODE01.
5 AUTHOR. VEJ.
6 *
7 ENVIRONMENT DIVISION.
8 INPUT-OUTPUT SECTION.
9 FILE-CONTROL.
10 SELECT FIN ASSIGN TO INFILE.
11 SELECT FOUT ASSIGN TO OUTFILE.
12 *
13 DATA DIVISION.
14 FILE SECTION.
15 FD FIN
16 BLOCK CONTAINS 0 RECORDS
17 RECORD CONTAINS 80 CHARACTERS
18 LABEL RECORDS ARE STANDARD
19 RECORDING MODE IS F
20 DATA RECORD IS FIN-STRING.
21 01 FIN-STRING PIC X(80).
22 FD FOUT
23 BLOCK CONTAINS 0 RECORDS
24 RECORD CONTAINS 80 CHARACTERS
25 LABEL RECORDS ARE OMITTED
26 RECORDING MODE IS F
27 DATA RECORD IS FOUT-STRING.
28 01 FOUT-STRING PIC X(80).
29 WORKING-STORAGE SECTION.
30 01 END-OF-FILE PIC X VALUE 'N'.
31 *
32 PROCEDURE DIVISION.
33 *
34 000-MAIN-LOGIC.
35 OPEN INPUT FIN
36 OUTPUT FOUT.
37 PERFORM 100-READ-FILE THRU 100-READ-FILE-END.
38 PERFORM 200-WRITE-FILE THRU 200-WRITE-FILE-END
39 UNTIL END-OF-FILE = 'Y'.
40 CLOSE FIN
41 FOUT.
42 STOP RUN.
43 000-MAIN-LOGIC-END.
44 *
45 100-READ-FILE.
46 READ FIN
47 AT END MOVE 'Y' TO END-OF-FILE.
48 100-READ-FILE-END.
49 *
50 200-WRITE-FILE.
51 MOVE FIN-STRING TO FOUT-STRING.
52 WRITE FOUT-STRING.
53 PERFORM 100-READ-FILE THRU 100-READ-FILE-END.
54 200-WRITE-FILE-END.
55 *
2 *
3 IDENTIFICATION DIVISION.
4 PROGRAM-ID. CODE01.
5 AUTHOR. VEJ.
6 *
7 ENVIRONMENT DIVISION.
8 INPUT-OUTPUT SECTION.
9 FILE-CONTROL.
10 SELECT FIN ASSIGN TO INFILE.
11 SELECT FOUT ASSIGN TO OUTFILE.
12 *
13 DATA DIVISION.
14 FILE SECTION.
15 FD FIN
16 BLOCK CONTAINS 0 RECORDS
17 RECORD CONTAINS 80 CHARACTERS
18 LABEL RECORDS ARE STANDARD
19 RECORDING MODE IS F
20 DATA RECORD IS FIN-STRING.
21 01 FIN-STRING PIC X(80).
22 FD FOUT
23 BLOCK CONTAINS 0 RECORDS
24 RECORD CONTAINS 80 CHARACTERS
25 LABEL RECORDS ARE OMITTED
26 RECORDING MODE IS F
27 DATA RECORD IS FOUT-STRING.
28 01 FOUT-STRING PIC X(80).
29 WORKING-STORAGE SECTION.
30 01 END-OF-FILE PIC X VALUE 'N'.
31 *
32 PROCEDURE DIVISION.
33 *
34 000-MAIN-LOGIC.
35 OPEN INPUT FIN
36 OUTPUT FOUT.
37 PERFORM 100-READ-FILE THRU 100-READ-FILE-END.
38 PERFORM 200-WRITE-FILE THRU 200-WRITE-FILE-END
39 UNTIL END-OF-FILE = 'Y'.
40 CLOSE FIN
41 FOUT.
42 STOP RUN.
43 000-MAIN-LOGIC-END.
44 *
45 100-READ-FILE.
46 READ FIN
47 AT END MOVE 'Y' TO END-OF-FILE.
48 100-READ-FILE-END.
49 *
50 200-WRITE-FILE.
51 MOVE FIN-STRING TO FOUT-STRING.
52 WRITE FOUT-STRING.
53 PERFORM 100-READ-FILE THRU 100-READ-FILE-END.
54 200-WRITE-FILE-END.
55 *
编译用的JCL。


1 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
2 //IBMUSERC JOB ACCT#,IBMUSER,CLASS=A,
3 // MSGCLASS=H,MSGLEVEL=(1,1),
4 // NOTIFY=&SYSUID
5 //COBCL EXEC IGYWCL
6 //COBOL.SYSLIB DD DISP=SHR,DSN=IBMUSER.HAVE.FUN
7 //LKED.SYSLMOD DD DISP=SHR,DSN=IBMUSER.COBOL.LOAD(C01)
8 //SYSPRINT DD SYSOUT=*
9 //COBOL.SYSIN DD DISP=SHR,DSN=IBMUSER.HAVE.FUN(CODE01)
10 //
2 //IBMUSERC JOB ACCT#,IBMUSER,CLASS=A,
3 // MSGCLASS=H,MSGLEVEL=(1,1),
4 // NOTIFY=&SYSUID
5 //COBCL EXEC IGYWCL
6 //COBOL.SYSLIB DD DISP=SHR,DSN=IBMUSER.HAVE.FUN
7 //LKED.SYSLMOD DD DISP=SHR,DSN=IBMUSER.COBOL.LOAD(C01)
8 //SYSPRINT DD SYSOUT=*
9 //COBOL.SYSIN DD DISP=SHR,DSN=IBMUSER.HAVE.FUN(CODE01)
10 //
执行用的JCL。文件读写的重点啊。


1 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
2 //IBMUSERR JOB ACCT#,IBMUSER,CLASS=A,MSGCLASS=A,
3 // MSGLEVEL=(1,1),NOTIFY=&SYSUID
4 //RUN EXEC PGM=C01
5 //STEPLIB DD DSN=IBMUSER.COBOL.LOAD,DISP=SHR
6 //SYSPRINT DD SYSOUT=*
7 //SYSOUT DD SYSOUT=*
8 //INFILE DD DSN=IBMUSER.HAVE.FUN(TESTDATA),DISP=SHR
9 //OUTFILE DD DSN=IBMUSER.HAVE.SEX,DISP=(NEW,CATLG,DELETE),
10 // DCB=(RECFM=FB,LRECL=80,BLKSIZE=6400,DSORG=PS),
11 // SPACE=(TRK,1)
12 //
2 //IBMUSERR JOB ACCT#,IBMUSER,CLASS=A,MSGCLASS=A,
3 // MSGLEVEL=(1,1),NOTIFY=&SYSUID
4 //RUN EXEC PGM=C01
5 //STEPLIB DD DSN=IBMUSER.COBOL.LOAD,DISP=SHR
6 //SYSPRINT DD SYSOUT=*
7 //SYSOUT DD SYSOUT=*
8 //INFILE DD DSN=IBMUSER.HAVE.FUN(TESTDATA),DISP=SHR
9 //OUTFILE DD DSN=IBMUSER.HAVE.SEX,DISP=(NEW,CATLG,DELETE),
10 // DCB=(RECFM=FB,LRECL=80,BLKSIZE=6400,DSORG=PS),
11 // SPACE=(TRK,1)
12 //