1인 코볼 재연수~표편~
7273 단어 cobol새로 졸업한 엔지니어
마지막으로 책상을 배우고 싶어요.
테이블 정보
생각은 다른 언어가 말한 배열과 비슷하다.지금까지의 학습 내용이라면 같은 데이터가 여러 번 있을 때 하나하나 정의해야 한다.
예를 들어 표를 사용하지 않고 3개의 데이터 항목을 만들면 이렇게 된다.
3개의 데이터(테이블 미사용)
*---1---------2---------3---------4---------5-----
01 DATA.
03 DATA1 PIC X(10).
03 DATA2 PIC X(10).
03 DATA3 PIC X(10).
나 이거 몇 개만 하고 안 했어.책상 저기 나와.
문법·용법
구문
レベル番号(親) テーブル名.
レベル番号(子) 項目名 PIC 型(文字数) OCCURES 要素数.
표를 정의할 때 데이터 프로젝트를 정의할 때 OCCURES
문장을 사용하고 뒤에 만든 표수를 지정한다.만약 표를 사용한다면 첫 번째 예는 다음과 같다.
3개의 데이터(테이블 사용)
*---1---------2---------3---------4---------5-----
01 TABLE.
03 DATA PIC X(10) OCCURES 3.
이렇게 되면 대량의 건수라도 대응할 수 있다.또 다차원 배열을 하고 싶을 때는 다음과 같이 할 수 있다.테이블 레이아웃(테이블 이름:
PROFILE-TBL
프로젝트 1프로젝트 2
프로젝트 3
DT-NO PIC 9(01)
NICNAME PIC X(10)
COMMENT X(20)
데이터 번호애칭
메모
※ 아이템 1~아이템 3세트
PROFILE
PROFILE-TBL *---1---------2---------3---------4---------5-----
01 PROFILE-TBL.
03 PROFILE OCCURS 3.
05 DT-NO PIC 9(01).
05 NICNAME PIC X(10).
05 COMMENT PIC X(20).
상술한 구성 인상은 이렇다.액세스 데이터 항목
위의 그림에서 보듯이
OCCURES
문장 창설표를 사용하면 같은 항목 이름이 지정한 수량에 따라 접근할 수 있기 때문에 이전의 방법에 따라 접근할 수 없다.액세스하려면 액세스할 색인 번호를 지정해야 합니다.지정하려면, 방문할 항목 이름 뒤에 괄호로 접근하고 싶은 색인 번호를 기재하십시오.예를 들어 두 번째
PROFILE
NICNAME
가'ZAMA8722'
라면 다음과 같다.대입례
MOVE 'ZAMA8722' TO NICNAME(2).
코볼의 주석 번호는 1부터 시작하기 때문에 여러 나라에서 0부터 습관이 된 경우 주의가 필요하다.맨 위에서 다 핥을 때.
사용 가능
PERFORM VARYING
.예를 들어 위에서 만든 표의 모든 항목에 데이터가 있는데 화면을 모두 출력하고 싶을 때 다음과 같이 진행할 수 있다.전체 순환
*---1---------2---------3---------4---------5-----
PERFORM
VARYING IDX FROM 1 BY 1
UNTIL IDX > 3
DISPLAY PROFILE(IDX)
END-PERFORM.
※ IDX
는 9(01)
형의 덧글자테이블에 외부 데이터 배치
읽은 기록을 그대로 두면
MOVE
OK견본
*---1---------2---------3---------4---------5-----
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.
*
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-FILE ASSIGN 'infile.dat'
ORGANIZATION LINE SEQUENTIAL.
*
DATA DIVISION.
FILE SECTION.
FD IN-FILE LABEL RECORD STANDARD
BLOCK CONTAINS 0 RECORDS.
01 IN-REC PIC X(31).
*
WORKING-STORAGE SECTION.
01 PROFILE-TBL.
03 PROFILE OCCURS 3.
05 DT-NO PIC 9(01).
05 NICNAME PIC X(10).
05 COMMENT PIC X(20).
01 IDX PIC 9(01).
01 FLG PIC X(01).
*
PROCEDURE DIVISION.
PGM-FLOW SECTION.
*-- PGM-FLOW SEC
PGM-FLOW-S.
OPEN INPUT IN-FILE.
MOVE SPACE TO FLG.
MOVE ZERO TO IDX.
PERFORM PGM-READ.
PERFORM PGM-MAIN
UNTIL FLG = '1'.
CLOSE IN-FILE.
PGM-FLOW-E.
STOP RUN.
*-- PGM-READ SEC
PGM-READ SECTION.
PGM-READ-S.
READ IN-FILE
AT END
MOVE '1' TO FLG
NOT AT END
COMPUTE IDX = IDX + 1
END-READ.
PGM-READ-E.
EXIT.
*-- PGM-MAIN SEC
PGM-MAIN SECTION.
PGM-MAIN-S.
MOVE IN-REC TO PROFILE(IDX).
PERFORM PGM-READ.
PGM-MAIN-E.
EXIT.
infile.dat1COBOLER001TABLE SAMPLE
2ALICE HELLO EVERYONE
3BOB-001 NICE TO MEET YOU
테이블 재정의하기
재정의하여 다른 레이아웃에서 데이터 항목을 참조할 수 있습니다.예컨대
*---1---------2---------3---------4---------5-----
01 MEMBER-LIST
03 FILLER PIC X(31) VALUE
'1COBOLER001TABLE SAMPLE '.
03 FILLER PIC X(31) VALUE
'2ALICE HELLO EVERYONE '.
03 FILLER PIC X(31) VALUE
'3BOB-001 NICE TO MEET YOU '.
이러한 데이터가 있고 위에서 사용한 표의 레이아웃에서도 사용하고 싶을 때 REDEFINES
구를 사용하여 다시 정의합니다.구문
レベル番号(親) テーブル名 REDEFINES 再定義するデータ項目.
レベル番号(子) 項目名 PIC 型(文字数) OCCURES 要素数.
우선 샘플 절차입니다.견본
*---1---------2---------3---------4---------5-----
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MEMBER-LIST.
03 FILLER PIC X(31) VALUE
'1COBOLER001TABLE SAMPLE '.
03 FILLER PIC X(31) VALUE
'2ALICE HELLO EVERYONE '.
03 FILLER PIC X(31) VALUE
'3BOB-001 NICE TO MEET YOU '.
01 PROFILE-TBL REDEFINES MEMBER-LIST.
03 PROFILE OCCURS 3.
05 DT-NO PIC 9(01).
05 NICNAME PIC X(10).
05 COMMENT PIC X(20).
01 IDX PIC 9(01).
*
PROCEDURE DIVISION.
PGM-MAIN SECTION.
PGM-MAIN-S.
PERFORM
VARYING IDX FROM 1 BY 1
UNTIL IDX > 3
DISPLAY NICNAME(IDX)
END-PERFORM.
PGM-MAIN-E.
STOP RUN.
실행 결과COBOLER001
ALICE
BOB-001
이렇게 하면 고정 길이의 기록이라면 다른 레이아웃으로 데이터를 다시 정의할 수 있다.이번 상황은 다음과 같은 느낌이다.이번에는 표 학습에 재정의를 기재했지만 일반적인 데이터 항목에도 사용할 수 있다.또한 재정의 전의 데이터 항목의 내용을 바꾸면 재정의 후의 데이터도 변경된다.
이만 마치겠습니다.
어쨌든 연수 교과서를 쉽게 방영할 수 있게 됐다.연수 시간 이외에 이렇게 복습하면 한가한 시간에도 새로운 지식을 배울 수 있다는 것을 더욱 깊이 기억할 수 있다.
지금부터 배분을 시작해서 매번 교과서를 가지고 갈 수는 없기 때문에 출퇴근 시간을 이용해 내가 쓴 기사를 다시 한번 살펴보고 싶다.
감사의 말
이곳을 찾아주신 여러분과 지적 등의 댓글을 남겨주신 여러분께 감사드립니다.
Reference
이 문제에 관하여(1인 코볼 재연수~표편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/zama_8722/items/1e98148d1278c450c469텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)