SENDAPPI CSECT SEN00010 *********************************************************************** SEN00020 *********************************************************************** SEN00030 *** *** SEN00040 *** (C) COPYRIGHT IBM CORP. 1990 *** SEN00050 *** *** SEN00060 *** SENDAPPI *** SEN00070 *** *** SEN00080 *** This batch program is an example of a user program which *** SEN00090 *** uses the NetView Program-to-Program interface. SENDAPPI *** SEN00100 *** sends a data buffer to RECVAPPI and then terminates. *** SEN00110 *** *** SEN00120 *** Installation: *** SEN00130 *** *** SEN00140 *** 1. Assemble and linkedit code *** SEN00150 *** *** SEN00160 *** Operation: *** SEN00170 *** *** SEN00180 *** 1. Run as a batch job or started task *** SEN00190 *** *** SEN00200 *** // EXEC PGM=SENDAPPI *** SEN00210 *** //STEPLIB DD DSN=your-load-library,DISP=SHR *** SEN00220 *** *** SEN00230 *** Gary Forghetti *** SEN00240 *** IBM Corporation *** SEN00250 *** Network Mgmt Products Field Support *** SEN00260 *** Research Triangle Park, North Carolina *** SEN00270 *** *** SEN00280 *********************************************************************** SEN00290 *********************************************************************** SEN00300 R0 EQU 0 SEN00310 R1 EQU 1 SEN00320 R2 EQU 2 SEN00330 R3 EQU 3 SEN00340 R4 EQU 4 SEN00350 R5 EQU 5 SEN00360 R6 EQU 6 SEN00370 R7 EQU 7 SEN00380 R8 EQU 8 SEN00390 R9 EQU 9 SEN00400 R10 EQU 10 SEN00410 R11 EQU 11 SEN00420 R12 EQU 12 SEN00430 R13 EQU 13 SEN00440 R14 EQU 14 SEN00450 R15 EQU 15 SEN00460 USING *,R15 SEN00470 B PROLOG SEN00480 DC C'SENDAPPI &SYSDATE. AT &SYSTIME. ' SEN00490 DC C'COPYRIGHT IBM CORPORATION ' SEN00500 DC C'NO WARRANTY EXPRESSED OR IMPLIED ' SEN00510 PROLOG DS 0H SEN00520 STM R14,R12,12(R13) SAVE CALLING PGMS REGISTERS SEN00530 LR R12,R15 GET ENTRY POINT ADDR FOR BASE REG SEN00540 DROP R15 SEN00550 USING SENDAPPI,R12 R12 IS MODULE BASE REGISTER SEN00560 ST R13,SAVEAREA+4 SAVE CALLING PGMS SAVEAREA ADDRESS SEN00570 LR R10,R13 SAVE CALLING PGMS SAVEAREA ADDRESS SEN00580 LA R13,SAVEAREA R13 IS ADDR OF THIS PGMS SAVEAREA SEN00590 ST R13,8(R10) STORE ADDR IN CALLING PGMS SAVEAREA SEN00600 XC RETCODE,RETCODE CLEAR RETURN CODE SEN00610 * SEN00620 MVC TYPE,=H'1' QUERY NETVIEW SUBSYSTEM STATUS SEN00630 MVC WORKADDR,=A(WORKAREA) SEN00640 * SEN00650 CALL CNMCNETV,RPB INVOKE NETVIEW APPI SEN00660 CLC RETCODE,=F'10' NETVIEW SUBSYSTEM ACTIVE? SEN00670 BE MAINRTN1 YES, CONTINUE SEN00680 * SEN00690 MVC WTOERR+28(2),=C'01' INDICATE REQUEST TYPE 1 FAILED SEN00700 BAL R14,ERRRTN GO DISPLAY ERROR MESSAGE SEN00710 B MODEXIT EXIT SEN00720 * SEN00730 MAINRTN1 EQU * SEN00740 * SEN00750 MVC TYPE,=H'2' QUERY A RECEIVERS STATUS SEN00760 MVC RECVERID,=C'RECVAPPI' ID OF RECEIVER SEN00770 * SEN00780 CALL CNMCNETV,RPB INVOKE NETVIEW APPI SEN00790 CLC RETCODE,=F'14' RECEIVER PROGRAM ACTIVE? SEN00800 BE MAINRTN2 YES, SEND DATA BUFFER SEN00810 CLC RETCODE,=F'15' RECEIVER PROGRAM INACTIVE? SEN00820 BE MAINRTN2 YES, SEND DATA BUFFER FOR QUEUEING SEN00830 * SEN00840 MVC WTOERR+28(2),=C'02' INDICATE REQUEST TYPE 02 FAILED SEN00850 BAL R14,ERRRTN GO DISPLAY ERROR MESSAGE SEN00860 B MODEXIT EXIT SEN00870 * SEN00880 MAINRTN2 EQU * SEN00890 * SEN00900 MVC TYPE,=H'14' SEND A DATA BUFFER SEN00910 MVC SENDERID,=C'SENDAPPI' ID OF SENDER SEN00920 MVC RECVERID,=C'RECVAPPI' ID OF RECEIVER SEN00930 MVC BUFFADDR,=A(SENDBUFR) SEN00940 MVC BUFFLEN,=F'80' LENGTH OF DATA IN BUFFER IS 80 SEN00950 CALL CNMCNETV,RPB INVOKE NETVIEW APPI SEN00960 CLC RETCODE,=F'0' RECEIVER ACTIVE/SEND SUCCESSFUL? SEN00970 BE MODEXIT YES, EXIT SEN00980 CLC RETCODE,=F'4' RECEIVER INACTIVE/SEND SUCCESSFUL? SEN00990 BE MODEXIT YES, EXIT SEN01000 * SEN01010 MVC WTOERR+28(2),=C'14' INDICATE REQUEST TYPE 14 FAILED SEN01020 BAL R14,ERRRTN GO DISPLAY ERROR MESSAGE SEN01030 * SEN01040 MODEXIT EQU * SEN01050 L R15,RETCODE GET RETURN CODE SEN01060 L R13,SAVEAREA+4 RESTORE CALLING PGMS SAVEAREA SEN01070 RETURN (14,12),RC=(15) RESTORE CALLING PGMS REGS & RETURN SEN01080 ERRRTN EQU * SEN01090 ST R14,RERRRTN SAVE RETURN ADDRESS SEN01100 LA R2,RETCODE+3 GET ADDRESS OF RETURN CODE SEN01110 LA R3,WTOERR+59 GET OUTPUT AREA ADDRESS SEN01120 LA R4,1 INPUT FIELD IS 1 BYTES SEN01130 BAL R14,HEXCONV CONVERT RETURN CODE TO PRINTABLE X SEN01140 WTO MF=(E,WTOERR) DISPLAY THE MESSAGE SEN01150 ERRRTNX EQU * SEN01160 L R14,RERRRTN RESTORE RETURN ADDRESS SEN01170 BR R14 SEN01180 *********************************************************************** SEN01190 * CONVERTS A BYTE TO PRINTABLE "HEX". * SEN01200 * ON INPUT: R2 HAS ADDRESS OF INPUT FIELD TO BE CONVERTED * SEN01210 * R3 HAS ADDRESS OF OUTPUT FIELD * SEN01220 * R4 HAS LENGTH OF INPUT FIELD * SEN01230 *********************************************************************** SEN01240 HEXCONV EQU * SEN01250 ST R14,RHEXCONV SAVE RETURN ADDRESS SEN01260 HEXCONV1 EQU * SEN01270 SLR R1,R1 CLEAR R1 SEN01280 IC R1,0(R2) GET BYTE SEN01290 SRL R1,4 SHIFT OVER 4 BITS SEN01300 O R1,=X'000000F0' OR IN SIGN SEN01310 C R1,=X'000000F9' GREATER THAN 9- SEN01320 BNH HEXCONV2 NO, CONTINUE SEN01330 S R1,=F'249' YES, SUBTRACT 9 SEN01340 O R1,=X'000000C0' MAKE IT PRINTABLE SEN01350 HEXCONV2 EQU * SEN01360 STC R1,0(R3) STORE CHARACTER SEN01370 LA R3,1(R3) INCREMENT TO NEXT OUTPUT BYTE SEN01380 SLR R1,R1 CLEAR R1 SEN01390 IC R1,0(R2) GET BYTE SEN01400 N R1,=X'0000000F' CLEAR ALL BUT LAST 4 BITS SEN01410 O R1,=X'000000F0' OR IN SIGN SEN01420 C R1,=X'000000F9' GREATER THAN 9- SEN01430 BNH HEXCONV3 NO, CONTINUE SEN01440 S R1,=F'249' YES, SUBTRACT 9 SEN01450 O R1,=X'000000C0' MAKE IT PRINTABLE SEN01460 HEXCONV3 EQU * SEN01470 STC R1,0(R3) STORE CHARACTER SEN01480 LA R3,1(R3) INCREMENT TO NEXT OUTPUT BYTE SEN01490 LA R2,1(R2) INCREMENT TO NEXT INPUT BYTE SEN01500 BCT R4,HEXCONV1 PROCESS NEXT BYTE SEN01510 HEXCONVX EQU * SEN01520 L R14,RHEXCONV RESTORE RETURN ADDRESS SEN01530 BR R14 RETURN SEN01540 LTORG SEN01550 SAVEAREA DS 18F SEN01560 RHEXCONV DS F BRANCH RETURN ADDRESS SEN01570 RERRRTN DS F BRANCH RETURN ADDRESS SEN01580 SAVETCB DS F TCB ADDRESS SAVEAREA SEN01590 SAVEASCB DS F ASCB ADDRESS SAVEAREA SEN01600 SAVEECB DS F ECB ADDRESS SAVEAREA SEN01610 * SEN01620 WTOERR WTO 'SENDAPPI - REQUEST TYPE XX FAILED WITH A RETURN CODE X'*SEN01630 'XX''',ROUTCDE=11,MF=L SEN01640 * SEN01650 RPB DS 0F,0XL52 SEN01660 DC F'52' SEN01670 TYPE DS H SEN01680 RECOPT DS H SEN01690 RETCODE DC F'0' SEN01700 WORKADDR DS F SEN01710 SENDERID DS 0CL8 SEN01720 ASCBADDR DS F SEN01730 ECBADDR DS 0F SEN01740 BUFFQL DS F SEN01750 RECVERID DS CL8 SEN01760 AUTHIND DS 0H SEN01770 BUFFLEN DS F SEN01780 BUFFADDR DS 0F SEN01790 TCBADDR DS F SEN01800 * SEN01810 DS CL28 SEN01820 * SEN01830 WORKAREA DS CL128 SEN01840 * SEN01850 SENDBUFR DC CL80'SENDAPPI: ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789' SEN01860 END SEN01870