TITLE ' XMTEXAMP' 00001000 PUNCH ' PHASE XMTEXAMP,*' 00002000 * * 00003000 *********************************************************************** 00004000 *********************************************************************** 00005000 * * 00006000 * N E T W O R K T R A N S M I T T E R E X I T R O U T I N E * 00007000 * * 00008000 *********************************************************************** 00009000 *********************************************************************** 00010000 SPACE 2 00011000 * FUNCTION: * 00012000 * THIS EXIT ROUTINE PROVIDES AN EXAMPLE OF HOW A TRANSMITTER * 00013000 * EXIT CAN BE USED TO * 00014000 * * 00015000 * - INSERT A DATA RECORD INTO THE DATA STREAM * 00016000 * - MODIFY A NETWORK CONTROL RECORD * 00017000 * - PROCESS A DATA RECORD * 00018000 * - PROCESS A CHANGED NETWORK CONTROL RECORD * 00019000 * - STOP THE TRANSMISSION OF A QUEUE ENTRY * 00020000 * * 00021000 * DURING THE TRANSMISSION OF A QUEUE ENTRY TO ANOTHER NODE. * 00022000 * * 00023000 * IT ALSO SHOWS THE USE OF THE TRANSMITTER EXIT WORK AREA, * 00024000 * THE PARAMETER LIST AND HOW MESSAGES CAN BE WRITTEN TO THE * 00025000 * OPERATOR CONSOLE USING VSE/POWER SERVICES. * 00026000 * * 00027000 * * 00028000 * SUPPOSE THE FOLLOWING NETWORKING ENVIRONMENT: * 00029000 * * 00030000 * X---------->A---------->B * 00031000 * * 00032000 * THE TRANSMITTER EXIT IS LOADED AT LOCAL NODE X. * 00033000 * NODE X IS CONNECTED TO NODE A. * 00034000 * NODE A IS CONNECTED TO NODE B. * 00035000 * * 00036000 * * 00037000 * THIS TRANSMITTER EXIT ROUTINE ENSURES THAT ONLY JOBS CAN LEAVE * 00038000 * THE LOCAL NODE X. * 00039000 * OUTPUT IS NOT ALLOWED TO LEAVE NODE X AND WILL BE QUEUED AGAIN * 00040000 * IN THE XMT QUEUE WITH THE CORRESPONDING 'HOLD' DISPOSITION. * 00041000 * * 00042000 * ASSUME THAT SEVERAL JOBS WHICH RESIDE IN THE XMT QUEUE OF NODE X * 00043000 * ARE TO BE TRANSMITTED TO NODE A AND B. FOR JOBS WHOSE JOB HEADER * 00044000 * SECTION CONTAINS NO USER SECTION AND WHOSE FINAL DESTINATION IS * 00045000 * NODE B, THE EXIT ROUTINE PROVIDES A USER SECTION TO THEIR JOB * 00046000 * HEADER RECORD. IN ADDITION, THE VSE/POWER JOB DISPOSITION IS * 00047000 * SET TO 'L' AND A COMMENT RECORD IS INSERTED AFTER THE JOB HEADER * 00048000 * RECORD. * 00049000 * JOBS WHOSE FINAL DESTINATION IS NOT NODE B ARE NOT TOUCHED * 00050000 * BY THE EXIT. * 00051000 * * 00052000 * SINCE THE EXIT ROUTINE REQUIRES A WORK AREA , IT IS VERIFIED * 00053000 * THAT THE WORK AREA WHICH IS SPECIFIED IN THE PLOAD COMMAND OR * 00054000 * IN THE POWER MACRO IS LARGE ENOUGH. * 00055000 * IF A USER SECTION IS TO BE APPENDED TO THE JOB HEADER RECORD * 00056000 * THE EXIT ROUTINE VERIFIES IF THE WORK AREA IS LARGE ENOUGH TO * 00057000 * CONTAIN A COPY THE JOB HEADER RECORD AND THE USER SECTION. * 00058000 * IF IT IS NOT LARGE ENOUGH THE TRANSMISSION OF THE QUEUE ENTRY * 00059000 * IS STOPPED BY SETTING THE RETURN CODE TO 'FLUSH HOLD'. * 00060000 * A MESSAGE IS WRITTEN TO THE OPERATOR CONSOLE, INDICATING THAT * 00061000 * THE EXIT MUST BE LOADED AGAIN WITH THE REQUIRED WORK AREA SIZE. * 00062000 SPACE 2 00063000 * INPUT: * 00064000 * - PARAMETER LIST, WHOSE LAYOUT IS DEFINED IN MACRO IPW$DTX * 00065000 * - SEVERAL REGISTERS WHICH ADDRESS VSE/POWER CONTROL BLOCKS. * 00066000 * SEE REGISTER USAGE BELOW FOR MORE DETAILS. * 00067000 SPACE 2 00068000 * OUTPUT: * 00069000 * - PARAMETER LIST. * 00070000 * THIS EXIT RETURNS TO VSE/POWER WITH RETURN CODES SHOWN BELOW. * 00071000 * * 00072000 * TEXRC: X'00' - PROCESS RECORD * 00073000 * X'08' - INSERT DATA RECORD * 00074000 * X'14' - PROCESS MODIFIED NETWORK CONTROL RECORD * 00075000 * X'18' - FLUSH QUEUE ENTRY WITH 'HOLD' * 00076000 SPACE 2 00077000 * LOCATION: * 00078000 * THIS TRANSMITTER EXIT ROUTINE IS LOCATED WITHIN THE * 00079000 * * 00080000 * - PAGEABLE AREA OF THE VSE/POWER PARTITION WHEN * 00081000 * LOADED AT VSE/POWER INITIALIZATION TIME BY THE * 00082000 * POWER MACRO, OR IN THE * 00083000 * - GETVIS AREA OF THE VSE/POWER PARTITION WHEN * 00084000 * LOADED AFTER INITIALIZATION BY THE 'PLOAD' COMMAND. * 00085000 * * 00086000 * FOR DEBUGGING PURPOSES LOCATE THE PNET EXIT IN STORAGE * 00087000 * BY ITS STORAGE DESCRIPTOR 'TRANSMITTER EXIT' AND BY THE * 00088000 * POINTER 'PNCBTUE' OF THE PNET MASTER CONTROL BLOCK. * 00089000 * THE LATTER IS ANCHORED VIA THE FIELD 'CAPN' IN THE * 00090000 * THE COMMON ADDRESS TABLE (CAT) OF VSE/POWER. * 00091000 SPACE 2 00092000 * REMARKS: * 00093000 * THIS CODE IS AN EXAMPLE TO SHOW, HOW THE INFORMATION * 00094000 * PASSED TO THE EXIT MAY BE USED TO ACCESS CONTROL DATA * 00095000 * BOTH IN VSE/POWER CONTROL BLOCKS AND IN RECORDS * 00096000 * BEING TRANSMITTED. * 00097000 * YOU CAN FIND DSECTS OF OTHER VSE/POWER CONTROL BLOCKS ON THE * 00098000 * OPTIONAL MATERIALS TAPE. PLEASE REFER TO THEIR DESCRIPTION * 00099000 * IN THE OPTIONAL DOCUMENTATION. * 00100000 * FOR DETAILED CONTENTS OF THE NETWORK CONTROL RECORDS AND * 00101000 * THE USAGE BY DIFFERENT NETWORKING COMPONENTS SEE: * 00102000 * 'NETWORK JOB ENTRY FORMATS AND PROTOCOLS' SC23-0070 * 00103000 * * 00104000 * REGISTER USAGE: * 00105000 * R0 WORK REGISTER * 00106000 * R1 ADDRESS OF PARAMETER LIST AT ENTRY * 00107000 * R2-R7 WORK REGISTERS * 00108000 * R8 ADDRESS OF PARAMETER LIST DURING EXIT PROCESSING * 00109000 * R9 ADDRESS OF XMTEXIT WORK AREA * 00110000 * RA ADDRESS OF COMMON ADDRESS TABLE (CAT) * 00111000 * RB ADDRESS OF TRANSMITTER TASK CONTROL BLOCK (TCB) * 00112000 * RC USED FOR VSE/POWER PURPOSES * 00113000 * RD NOT USED * 00114000 * RE RETURN ADDRESS TO VSE/POWER * 00115000 * RF EXIT BASE REGISTER ESTABLISHED BY VSE/POWER * 00116000 * * 00117000 *********************************************************************** 00118000 EJECT 00119000 * ESTABLISH ADDRESSABILITY OF BASE REGISTER AND VSE/POWER 00120000 * CONTROL BLOCKS. DEFINE STORAGE DESCRIPTOR FOR BETTER LOCATING 00121000 * THIS EXIT IN STORAGE. 00122000 SPACE 1 00123000 XMTEXAMP CSECT ESTABL. MAIN CONTROL SECTION 00124000 SPACE 1 00125000 USING *,RF ESTABL. BASE REGISTER 00126000 USING PADS,RA ESTABL. ADDRESSABILITY OF CAT 00127000 USING TCDS,RB ESTABL. ADDRESSABILITY OF TCB 00128000 B TEXSTART BRANCH OVER STORAGE DESCRIPTOR 00129000 SPACE 00130000 DC CL16'TRANSMITTER EXIT' DEFINE STORAGE DESCRIPTOR 00131000 SPACE 2 00132000 * SINCE THIS EXAMPLE USES VSE/POWER MACRO IPW$WTO TO WRITE 00133000 * MESSAGES TO THE OPERATOR CONSOLE AND THE CONTENTS OF REGISTERS 00134000 * R0,R1,R2,R3 ARE DESTROYED BY THIS MACRO, THE ADDRESS OF THE 00135000 * PARAMETER LIST IS SAVED INTO REGISTER 8 00136000 SPACE 1 00137000 TEXSTART DS 0H START OF ROUTINE 00138000 LR R8,R1 SAVE ADDR. OF PARAMETER LIST 00139000 USING TEXDS,R8 ADDRESS PARAMETER LIST 00140000 SPACE 2 00141000 * WHENEVER A WORK AREA IS USED, THE LENGTH OF THIS AREA MUST BE 00141100 * VERIFIED EACH TIME THE EXIT GAINS CONTROL, BECAUSE 00141200 * - THE EXIT MIGHT HAVE BEEN LOADED BY OPERATOR WITH A WRONG 00141300 * LENGTH OF ITS WORK AREA 00141400 * - A NEW VERSION OF THE EXIT MIGHT HAVE BEEN LOADED AND THE 00141500 * PREVIOUSLY DEFINED WORK AREA IS STILL USED UNTIL THE NEXT 00141600 * QUEUE ENTRY BOUNDARY IS REACHED. 00141700 SPACE 2 00141800 * SINCE A WORK AREA IS REQUIRED BY THIS ROUTINE, VERIFY IF ONE 00142000 * IS SPECIFIED. IF NOT, THE TRANSMISSION IS STOPPED. 00143000 SPACE 1 00144000 ICM R9,15,TEXWA WORK AREA SPECIFIED ? 00145000 BZ TEXMS1 ..NO, ISSUE MESSAGE AND 00146000 * FLUSH TRANSMISSION 00147000 SPACE 2 00148000 * THE WORK AREA EXISTS AND CAN NOW BE ADDRESSED. TEST IF 00149000 * THE WORK AREA IS LARGE ENOUGH. IF NOT, THE TRANSMISSION 00150000 * IS STOPPED. 00151000 SPACE 1 00152000 USING WADSECT,R9 MAKE WORK AREA ADDRESSABLE 00153000 L R2,WALNGTH GET SPECIFIED WORK AREA SIZE 00154000 LA R3,WALEN GET REQU. SIZE OF WORK AREA 00155000 CR R2,R3 WORK AREA TOO SHORT ? 00156000 BL TEXMS2 ..YES, GO TO ISSUE MESSAGE 00157000 SPACE 2 00158000 * OUTPUT DATA MUST NOT LEAVE LOCAL NODE X AND THE TRANSMISSION 00159000 * OF THE QUEUE ENTRY IS STOPPED BY SETTING RETURN CODE 00160000 * 'FLUSH HOLD' 00161000 SPACE 1 00162000 TEX050 DS 0H 00163000 CLI WAFLG3,X'00' ENTERED FOR THE FIRST TIME ? 00164000 BNE TEX100 ..NO, BYPASS JOB TEST 00165000 MVI WAFLG3,X'01' SET FIRST TIME BYTE 00166000 TM TEXOT,TEOJOB JOB TYPE DATA STREAM ? 00167000 BO TEX100 ..YES, GO AHEAD 00168000 B TEXMS4 GO TO ISSUE MESSAGE 00169000 SPACE 2 00170000 * PROCESS JOB TYPE DATA STREAM. USE THE EQUATES 00171000 * OF THE PARAMETER LIST. DECIDE WHETHER A NETWORK CONTROL 00172000 * RECORD OR A JOB DATA RECORD IS PASSED TO THIS EXIT 00173000 SPACE 1 00174000 TEX100 DS 0H 00175000 TM TEXRT,TERJHR JOB HEADER RECORD ? 00176000 BO TEXJHR ..YES, BRANCH TO HANDLE IT 00177000 TM TEXRT,TERJTR JOB TRAILER RECORD ? 00178000 BO TEXJTR ..YES, BRANCH TO HANDLE IT 00179000 TM TEXRT,TERDSHR DATA SET HEADER RECORD ? 00180000 BO TEXDSHR ..YES, BRANCH TO HANDLE IT 00181000 SPACE 1 00182000 B TEXDATA PROCESS JOB DATA RECORD 00183000 SPACE 3 00184000 *********************************************************************** 00185000 * PROCESS JOB HEADER RECORD (JHR) * 00186000 *********************************************************************** 00187000 SPACE 1 00188000 TEXJHR DS 0H 00189000 SPACE 2 00190000 * SINCE IT IS NECESSARY TO IDENTIFY THE MESSAGES WRITTEN TO THE 00191000 * OPERATOR CONSOLE, THE MESSAGE PREFIX IS SET UP WITH 00192000 * THE TASK ID, THE NAME AND THE FINAL DESTINATION OF THE 00193000 * CURRENTLY TRANSMITTED JOB. THE INFORMATION IS RETRIEVED FROM 00194000 * THE GENERAL SECTION OF THE JHR WHICH IS THE FIRST SECTION 00195000 SPACE 1 00196000 MVC WAMES(MESL+1),MES MOVE MESSAGE INTO WORK AREA 00197000 MVC WAMTID,TCTI INSERT TASK ID INTO WORK AREA 00198000 L R7,TEXRV LOAD JHR ADDR. INTO R7 00199000 USING NJHDSECT,R7 ADDRESS JHR 00200000 MVC WAMQEN,NJHGJNAM GET NAME OF QUEUE ENTRY 00201000 MVC WAMEX,NJHGXEQN GET EXEC. NODE NAME 00202000 MVC WAEXND,WAMEX COPY EXECUTION NODE NAME 00203000 CLC WAEXND,NODEB JOB FOR NODE B ? 00204000 BNE TEXPRC ..NO, PROCESS JOB DATA 00205000 SPACE 2 00206000 * SET UP REGISTER 1 WITH THE ACTUAL SECTION ADDRESS OF THE JHR 00207000 * AND LET REGISTER 0 POINT TO THE END OF THE JHR 00208000 SPACE 1 00209000 LR R0,R7 COPY ADDRESS OF JHR 00210000 AH R0,NJHLEN POINT BEHIND JHR 00211000 LA R1,NJHG GET FIRST SECTION OF JHR 00212000 DROP R7 RELEASE JHR ADDRESSABILITY 00213000 SPACE 2 00214000 * VERIFY WHETHER A USER SECTION IS ALREADY APPENDED TO 00215000 * THE JHR AND IDENTIFY DIFFERENT KINDS OF JHR SECTIONS. 00216000 * SINCE THE VARIOUS SECTIONS OF THE JHR CAN OCCUR IN AN 00217000 * ARBITRARY SEQUENCE, EXCEPT FOR THE GENERAL SECTION 00218000 * WHICH IS THE FIRST, THE JOB HEADER RECORD IS 00219000 * EXAMINED FROM SECTION TO SECTION. 00220000 * REGISTER 1 CONTAINS ADDRESS OF NEXT JHR SECTION AND 00221000 * REGISTER 0 POINTS BEHIND THE END OF THE JHR 00222000 SPACE 1 00223000 JHRLOOP DS 0H LOOP THROUGH JHR SECTIONS 00224000 CR R1,R0 END OF JHR REACHED ? 00225000 BNL JHREND ..YES, LEAVE LOOP 00226000 SPACE 2 00227000 * DETERMINE KIND OF JHR SECTION USING EQUATES OF IPW$DNR 00228000 SPACE 1 00229000 CLI NJHGTYPE-NJHG(R1),NTYPPOWR POWER SECTION ? 00230000 BE PRCPW ..YES, BRANCH AND PROCESS IT 00231000 TM NJHGTYPE-NJHG(R1),NTYPUSER USER SECTION ? 00232000 BO PRCUS ..YES, BRANCH AND PROCESS IT 00233000 B CONT OTHERWISE PREPARE LOOP 00234000 * CONTINUATION 00235000 SPACE 2 00236000 PRCUS DS 0H PROCESS USER SECTION 00237000 MVI WAFLG2,X'01' INDICATE USER SECTION FOUND 00238000 B CONT PREPARE LOOP CONTINUATION 00239000 SPACE 2 00240000 PRCPW DS 0H PROCESS VSE/POWER SECTION 00241000 LA R2,NJHPDISP-NJHP(R1) GET ADDRESS OF JOB DISPOS. 00242000 ST R2,WAPWRPT SAVE ADDRESS OF JOB DISP. 00243000 L R3,TEXRV GET JHR ADDRESS 00244000 SR R2,R3 COMPUTE OFFSET OF JOB DISP. 00245000 ST R2,WAPWROF SAVE OFFSET OF JOB DISP. 00246000 SPACE 2 00247000 CONT DS 0H PREPARE LOOP CONTINUATION 00248000 AH R1,NJHGLEN-NJHG(R1) GET NEXT SECTION ADDRESS 00249000 B JHRLOOP CONTINUE LOOP 00250000 SPACE 2 00251000 JHREND DS 0H 00252000 CLI WAFLG2,X'01' USER SECTION ALREADY PRESENT? 00253000 BE JHRUPD ..YES, BRANCH AND UPDATE JHR 00254000 SPACE 2 00255000 * SINCE A USER SECTION DID NOT APPEAR AND DESTINATION 00256000 * ADDRESS IS NODE B, A USER SECTION WILL BE APPENDED AT THE 00257000 * END OF THE JHR. FIRST, VERIFY WHETHER THE WORK AREA IS 00258000 * LARGE ENOUGH TO CONTAIN THE EXTENDED JHR. 00259000 SPACE 1 00260000 L R2,TEXRL GET LENGTH OF JHR 00261000 LA R3,NJHULL GET LENGTH OF USER SECTION 00262000 AR R2,R3 COMPUTE NEW JHR LENGTH 00263000 ST R2,WAJHRL SAVE NEW LENGTH OF JHR 00264000 LA R3,WAJHRLEN GET LENGTH OF JHR W.A. 00265000 CR R2,R3 ENOUGH SPACE IN W.A. ? 00266000 BH TEXMS3 ..NO, BRANCH TO FLUSH 00267000 SPACE 2 00268000 * SINCE THE LENGTH OF THE JHR WILL BE ALTERED, THE OLD 00269000 * JHR HAS TO BE COPIED INTO THE WORK AREA 00270000 SPACE 1 00271000 L R2,TEXRV GET FROM ADDRESS OF JHR 00272000 L R3,TEXRL GET FROM LENGTH OF JHR 00273000 LA R4,WANJHR GET TO ADDRESS OF WORK AREA 00274000 LR R5,R3 COPY LENGTH OF JHR 00275000 MVCL R4,R2 COPY JHR INTO WORK AREA 00276000 SPACE 2 00277000 * APPEND USER SECTION TO JHR IN WORK AREA. RESPECT THAT R4 00278000 * POINTS TO FIRST STORAGE LOCATION JUST BEHIND JHR DUE TO 00279000 * THE PRECEDING MVCL INSTRUCTION 00280000 SPACE 1 00281000 LA R2,NJHULN GET ADDRESS OF USER SECTION 00282000 LA R3,NJHULL GET LENGTH OF USER SECTION 00283000 LR R5,R3 COPY LENGTH OF USER SECTION 00284000 MVCL R4,R2 MOVE USER SECTION INTO W.A. 00285000 SPACE 2 00286000 * UPDATE LENGTH OF JHR WITHIN THE COPY AND SET VSE/POWER 00287000 * JOB DISPOSITION TO 'L' 00288000 SPACE 1 00289000 LA R3,WANJHR GET ADDRESS OF WORK AREA 00290000 L R2,WAPWROF GET OFFSET OF JOB DISPOS. 00291000 AR R3,R2 COMPUTE ADDRESS OF JOB 00292000 * DISPOSITION FIELD IN WORK AREA 00293000 MVI 0(R3),C'L' SET VSE/POWER JOB DISP. TO 'L' 00294000 L R2,WAJHRL GET NEW LENGTH OF JHR 00295000 STH R2,WANJHR SET NEW LENGTH OF JHR 00296000 SPACE 2 00297000 * INDICATE THAT AT RECEIPT OF THE NEXT RECORD, A RECORD 00298000 * MUST BE INSERTED. 00299000 * UPDATE PARAMETER LIST; SINCE LENGTH AND ADDRESS OF THE 00300000 * JHR WERE ALTERED, SET UP RETURN CODE 'MODIFY' 00301000 SPACE 1 00302000 MVI WAFLG,X'01' INDICATE: RECORD TO INSERT 00303000 LA R2,WANJHR GET WORK AREA ADDRESS 00304000 ST R2,TEXRV SAVE INTO PARAMETER LIST 00305000 L R3,WAJHRL GET LENGTH OF NEW JHR 00306000 ST R3,TEXRL SAVE INTO PARAMETER LIST 00307000 MVI TEXRC,TERMOD SET RETURN CODE: MODIFY 00308000 B TEXEND GO TO END OF ROUTINE 00309000 SPACE 2 00310000 * A USER SECTION IS ALREADY CONTAINED IN THE JHR. THE 00311000 * VSE/POWER JOB DISPOSITION IS SET TO 'L' WITHIN THE 00312000 * VSE/POWER SECTION OF THE JOB HEADER RECORD 00313000 SPACE 1 00314000 JHRUPD DS 0H UPDATE TOTAL LENGTH OF JHR 00315000 L R2,WAPWRPT GET ADDRESS OF JOB DISP. 00316000 MVI 0(R2),C'L' SET VSE/POWER JOB DISP. TO 'L' 00317000 SPACE 2 00318000 * SINCE LENGTH OR ADDRESS OF THE JHR WAS NOT CHANGED 00319000 * NORMAL PROCESSING IS INDICATED IN THE PARAMETER LIST 00320000 SPACE 1 00321000 B TEXPRC GO TO NORMAL PROCESSING 00322000 SPACE 3 00323000 *********************************************************************** 00324000 * PROCESS DATA SET HEADER RECORD (DSHR) * 00325000 *********************************************************************** 00326000 SPACE 1 00327000 TEXDSHR DS 0H 00328000 SPACE 2 00329000 * SINCE A DSHR MAY APPEAR AFTER A JHR, DETERMINE 00330000 * IF THE PRECEDING JHR HAD BEEN MODIFIED AND IF A COMMENT 00331000 * RECORD HAD BEEN INSERTED ALREADY 00332000 SPACE 1 00333000 CLI WAFLG,X'00' NOTHING ALTERED IN JHR OR 00334000 * RECORD ALREADY INSERTED ? 00335000 BE TEXPRC ..YES, PROCESS DSHR 00336000 BAL R5,INSUB BRANCH TO INSERTION ROUTINE 00337000 B TEXEND GO TO END OF ROUTINE 00338000 SPACE 3 00339000 *********************************************************************** 00340000 * PROCESS JOB TRAILER RECORD * 00341000 *********************************************************************** 00342000 SPACE 1 00343000 TEXJTR DS 0H 00344000 SPACE 2 00345000 * INSERT YOUR CODE IF YOU WANT TO DO SOMETHING 00346000 * WITH A JOB TRAILER RECORD 00347000 SPACE 1 00348000 B TEXPRC PROCESS RECORD 00349000 SPACE 3 00350000 *********************************************************************** 00351000 * PROCESS JOB DATA RECORD * 00352000 *********************************************************************** 00353000 SPACE 1 00354000 TEXDATA DS 0H 00355000 SPACE 2 00356000 * SINCE A JOB RECORD NORMALLY APPEARS AFTER A JHR, DETERMINE 00357000 * IF THE PRECEDING JHR HAD BEEN MODIFIED AND A COMMENT RECORD 00358000 * HAD BEEN INSERTED ALREADY 00359000 SPACE 1 00360000 CLI WAFLG,X'00' NOTHING ALTERED IN JHR OR 00361000 * RECORD ALREADY INSERTED ? 00362000 BE TEXPRC ..YES, PROCESS DATA RECORD 00363000 BAL R5,INSUB BRANCH TO INSERTION ROUTINE 00364000 B TEXEND GO TO END OF ROUTINE 00365000 SPACE 2 00366000 *********************************************************************** 00367000 * PROCESS CURRENT RECORD * 00368000 *********************************************************************** 00369000 SPACE 1 00370000 TEXPRC DS 0H 00371000 MVI TEXRC,TEROK SET RETURN CODE: PROCESS 00372000 B TEXEND GO TO END OF ROUTINE 00373000 SPACE 2 00374000 *********************************************************************** 00375000 * ISSUE MESSAGE TO INDICATE WORK AREA MISSING. TRANSMISSION * 00376000 * OF THE CURRENTLY PROCESSED QUEUE ENTRY IS STOPPED. * 00377000 *********************************************************************** 00378000 SPACE 1 00379000 TEXMS1 DS 0H 00380000 SPACE 1 00381000 LA R7,TXMSG4 GET ADDRESS OF TEXMSG4 00382000 BAL R6,SUBWTO ISSUE TEXMSG4 00383000 SPACE 2 00384000 LA R7,TXMSG2 GET ADDRESS OF TEXMSG2 00385000 BAL R6,SUBWTO ISSUE TEXMSG2 00386000 SPACE 2 00387000 LA R7,TXMSG3 GET ADDRESS OF TEXMSG3 00388000 BAL R6,SUBWTO ISSUE TEXMSG3 00389000 SPACE 1 00390000 MVI TEXRC,TERFLSH SET RETURN CODE: FLUSH HOLD 00391000 B TEXEND GO TO END OF ROUTINE 00392000 SPACE 2 00393000 *********************************************************************** 00394000 * ISSUE MESSAGE TO INDICATE WRONG SIZE OF WORK AREA. * 00395000 * TRANSMISSION OF THE CURRENTLY PROCESSED QUEUE ENTRY IS * 00396000 * STOPPED. * 00397000 *********************************************************************** 00398000 SPACE 1 00399000 TEXMS2 DS 0H 00400000 SPACE 1 00401000 LA R7,TXMSG1 GET ADDRESS OF TEXMSG1 00402000 BAL R6,SUBWTO ISSUE TEXMSG1 00403000 SPACE 2 00404000 LA R7,TXMSG2 GET ADDRESS OF TEXMSG2 00405000 BAL R6,SUBWTO ISSUE TEXMSG2 00406000 SPACE 2 00407000 LA R7,TXMSG3 GET ADDRESS OF TEXMSG3 00408000 BAL R6,SUBWTO ISSUE TEXMSG3 00409000 SPACE 1 00410000 MVI TEXRC,TERFLSH SET RETURN CODE: FLUSH HOLD 00411000 B TEXEND GO TO END OF ROUTINE 00412000 SPACE 2 00413000 *********************************************************************** 00414000 * A JHR APPEARED BUT THE WORK AREA IS NOT LARGE ENOUGH TO * 00415000 * CONTAIN A COPY OF THE EXTENDED JHR. * 00416000 * THE OPERATOR IS INFORMED AND THE TRANSMISSION OF THE * 00417000 * CURRENTLY PROCESSED QUEUE ENTRY IS STOPPED. * 00418000 * THE DSECT OF THE WORK AREA MUST BE EXTENDED TO CONTAIN THE * 00419000 * DATA OF THE EXTENDED JOB HEADER RECORD. * 00420000 * THE EXIT MUST BE ASSEMBLED ANEW AND LOADED AGAIN WITH THE * 00421000 * APPROPRIATE WORK AREA SIZE * 00422000 *********************************************************************** 00423000 SPACE 1 00424000 TEXMS3 DS 0H 00425000 MVC WAMFIELD,TEXMSGA MOVE MESS. INTO MESSAGE FIELD 00426000 L R1,WAJHRL GET LENGTH OF NEW JHR 00427000 LA R2,WALN GET LENGTH OF WORK AREA IN 00428000 * FRONT OF JHR SAVE AREA 00429000 AR R1,R2 COMPUTE REQUIRED W.A. LENGTH 00430000 CVD R1,WAOUTF CONVERT SIZE TO PACKED DECIMAL 00431000 UNPK WAMFIELD+24(5),WAOUTF MAKE IT PRINTABLE 00432000 OI WAMFIELD+28,X'F0' AND REMOVE SIGN 00433000 MVI TEXRC,TERFLSH SET RETURN CODE: FLUSH HOLD 00434000 SPACE 1 00435000 LA R7,WAMES GET ADDRESS OF UPDATED TEXMSGA 00436000 BAL R6,SUBWTO ISSUE TEXMSGA 00437000 SPACE 2 00438000 B TEXEND GO TO END OF ROUTINE 00439000 SPACE 2 00440000 *********************************************************************** 00441000 * TRANSMISSION OF OUTPUT DATA IS NOT ALLOWED. A MESSAGE IS * 00442000 * WRITTEN TO THE OPERATOR CONSOLE AND THE TRANSMISSION OF * 00443000 * THE CURRENTLY PROCESSED QUEUE ENTRY IS STOPPED * 00444000 *********************************************************************** 00445000 SPACE 1 00446000 TEXMS4 DS 0H 00447000 SPACE 1 00448000 LA R7,TXMSG7 GET ADDRESS OF TEXMSG7 00449000 BAL R6,SUBWTO ISSUE TEXMSG7 00450000 SPACE 2 00451000 MVI TEXRC,TERFLSH SET RETURN CODE: FLUSH HOLD 00452000 B TEXEND GO TO END OF ROUTINE 00453000 SPACE 2 00454000 ********************************************************************** 00455000 * SUBROUTINE FOR INSERTION OF DATA RECORDS. THIS ROUTINE IS * 00456000 * CALLED WHEN A DATA RECORD IS TO BE INSERTED AFTER A * 00457000 * PRECEDING JOB HEADER RECORD. REGISTER 5 POINTS BACK TO * 00458000 * THE CALLING ROUTINE. * 00459000 ********************************************************************** 00460000 SPACE 1 00461000 INSUB DS 0H 00462000 SPACE 2 00463000 * A JOB DATA RECORD IS TO BE INSERTED. GET ADDRESS AND LENGTH 00464000 * OF THIS RECORD AND UPDATE PARAMETER LIST 00465000 SPACE 1 00466000 LA R2,TEXIREC GET ADDRESS OF INSERT. RECORD 00467000 ST R2,TEXRV SET RECORD ADDRESS 00468000 MVC TEXRL,TEXIRECL SET RECORD LENGTH 00469000 MVI TEXCC,X'00' SET CARRIAGE CONTROL 00470000 MVI TEXRT,TERNCD SET RECORD TYPE 00471000 MVI TEXDT,TEDJRNC SET DATA RECORD TYPE 00472000 MVI TEXRC,TERINS SET RETURN CODE: INSERT 00473000 MVI WAFLG,X'00' INDICATE: INSERTION DONE 00474000 SPACE 2 00475000 * PREPARATION FOR MESSAGE TEXMSG9 00476000 SPACE 1 00477000 MVC WAMFIELD,TEXMSG9 INSERT MESSAGE 00478000 SPACE 1 00479000 LA R7,WAMES GET ADDRESS OF UPDATED TEXMSG9 00480000 BAL R6,SUBWTO ISSUE TEXMSG9 00481000 SPACE 1 00482000 BR R5 RETURN TO CALLER 00483000 SPACE 2 00484000 *********************************************************************** 00485000 * LEAVE TRANSMITTER EXIT * 00486000 *********************************************************************** 00487000 SPACE 2 00488000 TEXEND DS 0H 00489000 BR RE RETURN TO CALLER 00490000 SPACE 00491000 EJECT 00492000 *********************************************************************** 00493000 * SUBROUTINE TO ISSUE MESSAGE ON OPERATOR CONSOLE * 00494000 * * 00495000 * USAGE OF VSE/POWER MACRO IPW$WTO: * 00496000 * THIS MACRO, TOGETHER WITH SOME INDICATIONS SET IN THE TCB, * 00497000 * CAN BE USED TO DISPLAY A MESSAGE ON THE CENTRAL OPERATOR * 00498000 * CONSOLE. * 00499000 * THE USAGE OF THIS MACRO DESTROYS THE REGISTER R0 - R3. * 00500000 * THE MESSAGE TO BE DISPLAYED SHOULD CONTAIN ALPHAMERIC * 00501000 * CHARACTERS ONLY. * 00502000 * * 00503000 *********************************************************************** 00504000 SPACE 2 00505000 SUBWTO DS 0H 00506000 STCM R7,7,TCMW+1 PASS MESSAGE ADDRESS 00507000 MVI TCMW,X'00' CLEAR OPTION BYTE 00508000 OI TCMW,TCPCOP FORCE MESSAGE TO CONSOLE 00509000 OI TCMW,TCDNMM SUPPRESS MESSAGE MODIFICATION 00510000 SPACE 00511000 IPW$WTO TCMW ISSUE MESSAGE 00512000 SPACE 00513000 MVI TCMW,X'00' CLEAR OPTION BYTE 00514000 BR R6 RETURN TO CALLER 00515000 SPACE 5 00516000 DROP R8,R9,RA,RB RELEASE ADDRESSABILITY 00517000 * OF PARAMETER LIST, WORK AREA, 00518000 * CAT AND TCB 00519000 EJECT 00520000 ********************************************************************** 00521000 * * 00522000 * D A T A D E F I N I T I O N S * 00523000 * * 00524000 ********************************************************************** 00525000 SPACE 2 00526000 ********************************************************************** 00527000 * * 00528000 * M E S S A G E S * 00529000 * * 00530000 * GENERAL FORM: * 00531000 * * 00532000 * TASK-ID!TO-NODE!ENTRYNAME: .................................... * 00533000 * !<--4--1---8---1----8----3>! ! * 00534000 * !<----------25------------>!<----------------40--------------->! * 00535000 * !<----MESSAGE PREFIX------>!<--------------MESSAGE------------>! * 00536000 * * 00537000 ********************************************************************** 00538000 SPACE 1 00539000 * LAYOUT OF MESSAGE PREFIX 00540000 SPACE 1 00541000 MES DC AL1(MESL) LENGTH OF MESSAGE 00542000 MTID DC CL4' ' TASK ID 00543000 DC C'!' SEPARATOR 00544000 DC CL8' ' EXECUTION NODE ID 00545000 DC C'!' SEPARATOR 00546000 DC CL8' ' QUEUE ENTRY NAME 00547000 DC CL3': ' SEPARATOR 00548000 DC CL40' ' MESSAGE FIELD 00549000 MESL EQU *-MTID LENGTH OF MESSAGE DATA 00550000 DS 0F 00551000 TXMSG1 DC AL1(TXMSGL1-TXMSG1-1) 00552000 TEXMSG1 DC CL40'XMTEXIT: WORK AREA SIZE NOT CORRECT Ü' 00553000 TXMSGL1 EQU * 00554000 TXMSG2 DC AL1(TXMSGL2-TXMSG2-1) 00555000 TEXMSG2 DC CL40'XMTEXIT: 670 BYTES OF WORK AREA NEEDED' 00556000 TXMSGL2 EQU * 00557000 TXMSG3 DC AL1(TXMSGL3-TXMSG3-1) 00558000 TEXMSG3 DC CL40'XMTEXIT: LOAD XMTEXIT AGAIN USING PLOAD' 00559000 TXMSGL3 EQU * 00560000 TXMSG4 DC AL1(TXMSGL4-TXMSG4-1) 00561000 TEXMSG4 DC CL40'XMTEXIT: WORK AREA NOT SPECIFIED Ü' 00562000 TXMSGL4 EQU * 00563000 TXMSG7 DC AL1(TXMSGL7-TXMSG7-1) 00564000 TEXMSG7 DC CL40'XMTEXIT: XMISSION OF OUTPUT NOT ALLOWED' 00565000 TXMSGL7 EQU * 00566000 TXMSG9 DC AL1(TXMSGL9-TXMSG9-1) 00567000 TEXMSG9 DC CL40'COMMENT RECORD INSERTED AFTER JHR' 00568000 TXMSGL9 EQU * 00569000 TXMSGA DC AL1(TXMSGLA-TXMSGA-1) 00570000 TEXMSGA DC CL40'NEW WORK AREA REQUIRED (NNNNN BYTES) Ü ' 00571000 TXMSGLA EQU * 00572000 SPACE 2 00573000 *********************************************************************** 00574000 * * 00575000 * U S E R S E C T I O N * 00576000 * OF THE JOB HEADER RECORD * 00577000 * * 00578000 *********************************************************************** 00579000 SPACE 1 00580000 NJHULN DC AL2(NJHULL) LENGTH OF USER SECTION 00581000 DS 0AL2 USER SECTION FLAG 00582000 DC AL1(NTYPU) ID FOR USER SECTION 00583000 DC AL1(NJH$M) MODIFIER 00584000 NTYPU EQU B'11000000' VALUE FOR USERSECTION ID 00585000 NJH$M EQU B'00000000' VALUE FOR MODIFIER 00586000 NJHUDATA DC C'+-----------------------------------------------+' 00587000 DC C'! !' 00588000 DC C'! >> DEPENDS ON YOUR CHOICE << !' 00589000 DC C'! >> DEPENDS ON YOUR CHOICE << !' 00590000 DC C'! !' 00591000 DC C'+-----------------------------------------------+' 00592000 NJHULL EQU *-NJHULN LENGTH OF USER SECTION 00593000 SPACE 2 00594000 *********************************************************************** 00595000 * * 00596000 * L O C A L C O N S T A N T S * 00597000 * * 00598000 *********************************************************************** 00599000 SPACE 1 00600000 DS 0F 00601000 NODEB DC CL8'JEC1' NAME OF NODE B 00602000 TEXIREC DC CL80'* >>>> USER SECTION APPENDED TO JOB HEADER <<<<' 00603000 TEXIRECL DC A(L'TEXIREC) LENGTH OF TEXIREC 00604000 SPACE 2 00605000 EJECT 00606000 *********************************************************************** 00607000 * * 00608000 * LAYOUT OF THE * 00609000 * T R A N S M I T T E R E X I T W O R K A R E A * 00610000 * * 00611000 *********************************************************************** 00612000 SPACE 1 00613000 WADSECT DSECT BEGIN OF WORK AREA 00614000 WALNGTH DS F LENGTH OF WA 00615000 WAJHRL DS F LENGTH OF EXTENDED WORK AREA 00616000 WAFLG DS X RECORD INSERTION INDICATOR 00617000 WAFLG2 DS X USER SECTION FLAG BYTE 00618000 WAFLG3 DS X FIRST TIME FLAG BYTE 00619000 DS X NOT USED 00620000 WAEXND DS CL8 NAME OF EXECUTION NODE 00621000 SPACE 2 00622000 * FIELDS WHICH CONTAIN THE POINTER AND THE OFFSET OF THE 00623000 * JOB DISPOSITION FIELD WITHIN THE VSE/POWER SECTION OF THE JHR 00624000 SPACE 1 00625000 WAPWRPT DS F POINTER TO VSE/POWER JOB DISP. 00626000 WAPWROF DS F OFFSET OF VSE/POWER JOB DISP. 00627000 SPACE 2 00628000 * LAYOUT OF MESSAGE TO BE ISSUED 00629000 SPACE 1 00630000 WAMES DS AL1 LENGTH OF MESSAGE 00631000 WAMTID DS CL4 TASK ID 00632000 DS C SEPARATOR 00633000 WAMEX DS CL8 EXECUTION NODE ID 00634000 DS C SEPARATOR 00635000 WAMQEN DS CL8 QUEUE ENTRY NAME 00636000 DS CL3 SEPARATOR 00637000 WAMFIELD DS CL40 MESSAGE FIELD 00638000 WAOUTF DS D FIELD FOR DATA CONVERSION 00639000 WALN EQU *-WADSECT LENGTH OF WORK AREA IN FRONT OF *00640000 JHR SAVE AREA 00641000 SPACE 2 00642000 * THE FOLLOWING SPACE IS USED TO CONTAIN ALL POSSIBLE SECTIONS 00643000 * OF THE JOB HEADER RECORD. 00644000 SPACE 1 00645000 WANJHR DS 0F BEGIN OF JHR SAVE AREA 00646000 DS 4X ..SPACE FOR PREFIX SECTION 00647000 DS 0F ..BEGIN OF JHR SECTIONS 00648000 ORG *+562 ..SPACE FOR JHR SECTIONS 00649000 WAJHRLEN EQU *-WANJHR LENGTH OF JHR WORK AREA 00650000 WALEN EQU *-WADSECT LENGTH OF ENTIRE WORK AREA 00651000 EJECT 00652000 *********************************************************************** 00653000 * * 00654000 * LAYOUT OF VSE/POWER CONTROL BLOCKS AND * 00655000 * NETWORK CONTROL RECORDS * 00656000 * * 00657000 *********************************************************************** 00658000 SPACE 2 00659000 IPW$DTX TRANSMITTER EXIT PARAMETER LIST 00660000 SPACE 2 00661000 IPW$EQU , REGISTER EQUATES 00662000 SPACE 2 00663000 IPW$DPA , VSE/POWER PERMANENT AREA (CAT) 00664000 SPACE 2 00665000 IPW$DTC NET=YES VSE/POWER TASK CONTROL BLOCK 00666000 SPACE 2 00667000 IPW$DQC , VSE/POWER DISK MANAGEMENT BLOCK 00668000 SPACE 2 00669000 IPW$DQR , LAYOUT OF INTERNAL QUEUE RECORD 00669300 SPACE 2 ADDRESSED BY TCQV OF TCB 00669600 IPW$DPN , VSE/POWER PNET MAST.CNTRL.BLOCK 00670000 SPACE 2 00671000 IPW$DNR JHR=YES,JTR=YES,DHR=YES,OUT=YES NETWORK CONTROL RECS 00672000 SPACE 2 00673000 IPW$DNC , VSE/POWER NODE CONTROL BLOCK 00674000 SPACE 2 00675000 * END NOT REQ. FOR '.A' COPY BOOK 00676000