거의 모든 IBM 제품 및 기술 문서는 인터넷에서 사용할 수 있습니다. IT는 Language Environment Programming Reference는 당신이 적 LE에 대해 알아야 할 모든 것을 알려줍니다, 분류하지만, 특정 질문에 대한 답을 Book Manger
좀보고 기계에 의존 조금 될 수 있습니다. 익스포트하려는 메모리 관리 루틴은 CEEGTST (메모리 할당)과 CEEFRST (여유 메모리)입니다.
다음은 약간 길지만 LE를 사용하여 간단한 메모리 관리 작업을 수행하는 완전한 IBM Enterprise COBOL 프로그램입니다. 몹시 흥분하지
0001
0002
0003
0004
0005
LIST HAS BEEN FREED.
을하지만 어떻게 함께 문자열을 몇 가지에 보여 않습니다
***************************************************
** **
** DEMONSTRATION FOR LINKED LIST HANDLING **
** **
***************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. LINKLST.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 RET-CDE PIC 9(3).
01 HEAD-OF-LIST POINTER.
LINKAGE SECTION.
01 LINK GLOBAL.
02 DATA-PART PIC 9(4).
02 NEXT-PTR POINTER.
PROCEDURE DIVISION.
CALL "BULDLST" USING HEAD-OF-LIST,
RET-CDE
IF RET-CDE = ZERO THEN
CALL "SHOWLST" USING HEAD-OF-LIST
CALL "FREELST" USING HEAD-OF-LIST
IF HEAD-OF-LIST = NULL THEN
DISPLAY "LIST HAS BEEN FREED."
END-IF
END-IF
GOBACK
.
***************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID BULDLST.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 I PIC 9(4).
LINKAGE SECTION.
01 HEAD-OF-LIST POINTER.
01 RET-CDE PIC 9(3).
PROCEDURE DIVISION USING HEAD-OF-LIST, RET-CDE.
MAINLINE SECTION.
CALL "MEMALOC" USING BY REFERENCE HEAD-OF-LIST,
BY CONTENT LENGTH OF LINK,
BY REFERENCE RET-CDE
IF RET-CDE = ZERO THEN
SET ADDRESS OF LINK TO HEAD-OF-LIST
PERFORM VARYING I FROM 1 BY 1
UNTIL I > 4
OR RET-CDE > ZERO
MOVE I TO DATA-PART OF LINK
CALL "MEMALOC" USING BY REFERENCE NEXT-PTR OF LINK,
BY CONTENT LENGTH OF LINK,
BY REFERENCE RET-CDE
IF RET-CDE = ZERO THEN
SET ADDRESS OF LINK TO NEXT-PTR OF LINK
END-IF
END-PERFORM
IF RET-CDE = ZERO THEN
MOVE I TO DATA-PART OF LINK
SET NEXT-PTR OF LINK TO NULL
END-IF
END-IF
GOBACK
.
END PROGRAM BULDLST.
***************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID SHOWLST.
DATA DIVISION.
LINKAGE SECTION.
01 HEAD-OF-LIST POINTER.
PROCEDURE DIVISION USING HEAD-OF-LIST.
MAINLINE SECTION.
SET ADDRESS OF LINK TO HEAD-OF-LIST
PERFORM UNTIL ADDRESS OF LINK = NULL
DISPLAY DATA-PART
SET ADDRESS OF LINK TO NEXT-PTR OF LINK
END-PERFORM
GOBACK
.
END PROGRAM SHOWLST.
***************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID FREELST.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NXT-PTR POINTER.
01 RET-CDE PIC 9(3).
LINKAGE SECTION.
01 HEAD-OF-LIST POINTER.
PROCEDURE DIVISION USING HEAD-OF-LIST.
MAINLINE SECTION.
MOVE ZERO TO RET-CDE
PERFORM UNTIL HEAD-OF-LIST = NULL OR
RET-CDE NOT = ZERO
SET ADDRESS OF LINK TO HEAD-OF-LIST
SET NXT-PTR TO NEXT-PTR OF LINK
CALL "MEMFREE" USING HEAD-OF-LIST, RET-CDE
SET HEAD-OF-LIST TO NXT-PTR
END-PERFORM
GOBACK
.
END PROGRAM FREELST.
***************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID MEMALOC COMMON PROGRAM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 HEAPID PIC S9(9) BINARY.
01 FC.
02 CONDITION-TOKEN-VALUE.
COPY CEEIGZCT.
03 CASE-1-CONDITION-ID.
04 SEVERITY PIC S9(4) BINARY.
04 MSG-NO PIC S9(4) BINARY.
03 CASE-2-CONDITION-ID
REDEFINES CASE-1-CONDITION-ID.
04 CLASS-CODE PIC S9(4) BINARY.
04 CAUSE-CODE PIC S9(4) BINARY.
03 CASE-SEV-CTL PIC X.
03 FACILITY-ID PIC XXX.
02 I-S-INFO PIC S9(9) BINARY.
LINKAGE SECTION.
01 PTR-TO-MEM POINTER.
01 NBR-OF-BYTES PIC S9(9) BINARY.
01 RET-CDE PIC 9(3).
PROCEDURE DIVISION USING PTR-TO-MEM, NBR-OF-BYTES, RET-CDE.
MOVE 0 TO HEAPID
CALL "CEEGTST" USING HEAPID,
NBR-OF-BYTES,
PTR-TO-MEM,
FC
IF CEE000 OF FC THEN
MOVE ZERO TO RET-CDE
ELSE
DISPLAY "CEEGTST FAILED WITH: " MSG-NO OF FC
MOVE 1 TO RET-CDE
SET PTR-TO-MEM TO NULL
END-IF
GOBACK.
END PROGRAM MEMALOC.
***************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID MEMFREE COMMON PROGRAM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 HEAPID PIC S9(9) BINARY.
01 FC.
02 CONDITION-TOKEN-VALUE.
COPY CEEIGZCT.
03 CASE-1-CONDITION-ID.
04 SEVERITY PIC S9(4) BINARY.
04 MSG-NO PIC S9(4) BINARY.
03 CASE-2-CONDITION-ID
REDEFINES CASE-1-CONDITION-ID.
04 CLASS-CODE PIC S9(4) BINARY.
04 CAUSE-CODE PIC S9(4) BINARY.
03 CASE-SEV-CTL PIC X.
03 FACILITY-ID PIC XXX.
02 I-S-INFO PIC S9(9) BINARY.
LINKAGE SECTION.
01 PTR-TO-MEM POINTER.
01 RET-CDE PIC 9(3).
PROCEDURE DIVISION USING PTR-TO-MEM, RET-CDE.
MOVE 0 TO HEAPID
CALL "CEEFRST" USING PTR-TO-MEM,
FC
IF CEE000 OF FC THEN
MOVE ZERO TO RET-CDE
ELSE
DISPLAY "CEEFRST FAILED WITH: " MSG-NO OF FC
MOVE 1 TO RET-CDE
END-IF
GOBACK.
END PROGRAM MEMFREE.
END PROGRAM LINKLST.
***************************************************
이 프로그램은 기록합니다.
. [CEEGTST - 힙 스토리지 확보] (http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/CEEA3160/2.2.5.38?DT=20050629120436) - 첫 번째 매개 변수는 힙 ID이고, 세 번째 매개 변수는 힙 ID입니다. 12 바이트의 결과 토큰 첫 번째 매개 변수로 0을 전달하면 사용자 힙에서 메모리 할당이 요청됩니다. [CEEFRST - 무료 힙 저장] (http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/CEEA3160/2.2.5.32?DT=20050629120436)의 경우와 마찬가지로 마지막 (두 번째) 매개 변수는 결과 토큰입니다 . – NealB
사실, 나는 heapid와 fc parms를 섞었다. CEEGTST에 대한 올바른 서명은 CEEGTST (힙, 크기, 주소, fc)이며, 비정상 종료가 발생할 경우 FC를 생략 할 수 있습니다. –
또한 CEEFRST에 대한 올바른 서명은 (주소, fc)입니다. 죄송합니다. –