어셈블러로 작성된 외부 서브 루틴에서 매개 변수를 전달하려고합니다. 호출 루틴은 COBOL에,이 같은 외부 어셈블러 루틴 모양에 매개 변수 :어떻게 외부 어셈블러 서브 루틴에서 파라미터를 cobol 프로그램으로 다시 전달합니까?
01 CALCSHRS-PARMS.
05 CS-DEPOSIT-AMT PIC 9(5)V99 COMP-3.
05 CS-SHARE-PRC PIC 9(3)V99 COMP-3.
05 CS-SHARE-AMT PIC 9(9)V99 COMP-3.
호출은 다음과 같습니다
CALL 'CALCSHRS' USING CS-DEPOSIT-AMT
CS-SHARE-PRC
CS-SHARE-AMT.
루틴은 CS-예금 AMT 및 사용 CS-SHARE-PRC를 사용하여 CS-SHARE-AMT를 계산합니다.
CALCSHRS CSECT
*
PRINT NOGEN
*
STM 14,12,12(13) SAVE ENTRY REGS
LR 12,15 SET BASE REG
USING CALCSHRS,12 ESTABLISH ADDRESSABILITY
*
LA 14,SUBPSAVE STANDARD
ST 13,4(,14) SAVE
ST 14,8(,14) AREA
LR 13,14 LINKAGE
*
LM 2,4,0(1) LOAD THE PARAMETERS
*
ZAP DEPOSITP,0(2,4) GET THE DEPOSIT AMOUNT
ZAP SHAREPCK,0(3,3) GET THE SHARE PRICE
*
ZAP SHARESP(9),DEPOSITP INITIALIZE SHARES
*
MP SHARESP,=P'10000' MULTIPLY BY 1000
DP SHARESP,SHAREPCK DIVIDE BY SHARE PRICE
ZAP SHARESPR,SHARESP(6) MOVE THE FIRST 5 BYTES
*
SRP SHARESPR(6),(64-1),5 SHIFT TO ROUND
SRP SHARESPR(6),2,5 SHIFT AGAIN
*
MVC 0(6,4),SHARESPR ME ATTEMPTING TO RETURN SHARESPR...
*
L 13,4(,13) STANDARD SAVE
LM 14,12,12(13) AREA LINKAGE
SR 15,15 SET RETURN CODE TO 0
BR 14
*
LTORG
*
SUBPSAVE DC 18F'0'
*
SHAREPCK DS PL3 SHARE PRICE PACKED
DEPOSITP DS PL5 DEPOSIT IN PACKED DECIMAL
SHARESP DS PL9 SHARES IN PACKED DECIMAL
SHARESPR DS PL6 SHARES ROUNDED
*
END CALCSHRS
난 그냥 SHARESPR를 반환하고 다시 내 COBOL 프로그램에서 CS-SHARE-AMT에 이동이 필요합니다 다음은 어셈블러 루틴입니다. 다른 모든 것은 내가 원하는대로 작동합니다. 누구든지 내가 어떻게해야하는지 알지? 어떤 도움이라도 대단히 감사합니다.
이 정확히 어떤 플랫폼입니다. 시스템/36? –
z/OS. 이것은 제가 택할 수있는 수업입니다. 우리는 Marist 시스템을 사용합니다. – KateMak