Metal C의 WTO 명령을 사용하여 작업 로그에 "Hello World"를 인쇄하려고합니다. 이것은 z/OS V1R10.0 Metal C Programming Guide and Reference의 1.2.3.5 절에있는 예제를 기반으로합니다. WTO를 사용할 때 나타납니다. 0 또는 ASCII에서 EBCDIC 로의 변환을 포함하는 버퍼에 문제가 있습니다. 내 작업 로그의 관련 섹션을 아래에 붙여 넣은 다음 코드와 IBM 예제의 코드를 붙여 넣습니다.이 코드는 컴파일 할 수 없습니다. 작업 로그WTO를 사용하여 금속 C로 인쇄하십시오.
09.01.56 J0686275 IEF403I IMIJWS0G - STARTED - TIME=09.01.56 09.01.56 J0686275 +...0....... 09.01.56 J0686275 - --TIMINGS (MINS.)-- ----PAGING COUNTS--- 09.01.56 J0686275 -IMIJWS0G GO 00 6 .00 .00 .00 1292 0 0 0 0 0 1 09.01.56 J0686275 IEF404I IMIJWS0G - ENDED - TIME=09.01.56
내 코드
int main() { struct WTO_PARM { unsigned short len; unsigned short code; char text[80]; } wto_buff = { 4+11, 0, "hello world" }; __asm(" WTO MF=(E,(%0)) " : : "r"(&wto_buff)); return 0; }
+1 구조체를 수정하십시오 –
두 구조체의 "메모리의 레이아웃"은 동일합니다 - 다른 구조체입니다. 하나는 포인터를 가지고 있고 (이 포인터는 구조체의 다른 곳을 가리 킵니다), 다른 하나는 배열을 가지고 있습니다 (배열은 함수, 구조체 등에서 선언 된 곳에 _ 포함되어 있습니다). –