Type ASSEMBLE
Source Lines : 732
Fixes Applied : 4
Most Recent Version : Saturday, December 9, 1978
Last Fix ID : [HRC101DK]
Module
DMKCFT
Function
TO ALLOW THE USER TO SPECIFY OPTIONS FOR HIS TERMINAL.
Attributes
REENTRANT, PAGEABLE, CALLED VIA SVC
Operation
1. CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT IN THE COMMAND LINE. IF NONE FOUND AND NO PREVIOUS SET OF ARGUMENTS HAVE BEEN PROCESSED, CALL DMKERMSG TO SEND DMKCFT026E ERROR MESSAGE. IF NO ARGUMENT FOUND AND PREVIOUS PROCESS- ING HAS BEEN DONE, CALL DMKQCNWT TO OUTPUT 'COMMAND COMPLETE' MESSAGE AND EXIT. 2. SAVE THE LENGTH AND ADDRESS OF THE FIRST ARGUMENT OF THE SET, SET A FLAG TO INDICATE THIS, AND CALL DMKSCNFD TO LOCATE THE SECOND ARGUMENT OF THE SET. IF NONE FOUND, CALL DMKERMSG TO SEND DMKCFT026E ERROR MESSAGE. 3. COMPARE THE FIRST ARGUMENT AGAINST A LIST OF VALID ARGUMENTS. IF GET NO MATCHES, CALL DMKERMSG TO SEND DMKCFT002E ERROR MESSAGE. 4. IF MATCH IS FOUND, CHECK THE ARGUMENT FOR VALID ABREV- IATION. IF NOT THE PROPER ABREVIATION, GO BACK TO STEP 3 TO CONTINUE SCAN OF THE LIST. IF GOOD ,GO TO THE PROPER SUBROUTINE TO HANDLE THE REQUEST. 5. APL - TEST IF THE TERMINAL IS A TTY. IF SO, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFT006E. IF TERMINAL IS OTHER THAN A TTY, GO TO STEP 12 TO INTERROGATE THE SECOND ARGUMENT. IF ARGUMENT IS 'ON', RETURN TO STEP 5B. IF 'OFF' RETURN TO STEP 5C. IF NEITHER, RETURN TO STEP 5A. 5A. CALL DMKERMSG TO SEND DMKCFT002E ERROR MESSAGE. 5B. CHECK IF 'APL' ALREADY ON. IF IT IS, GO TO STEP 1. IF NOT, TURN THE 'APL' BIT IN THE RDEVTMCD FIELD OF THE TERMINAL RDEVBLOK ON AND THE 'TEXT' BIT OFF. GO TO STEP 1. 5C. CHECK IF 'APL' ALREADY OFF. IF SO, GO TO STEP 1. IF NOT, SUBTRACT '8' FROM THE RDEVTMCD FIELD AND GO TO STEP 1. 5D. TEXT - TEST IF THE TERMINAL IS A 3277. IF NOT, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFT006E. IF TERMINAL IS A 3277, GO TO STEP 12 TO THE SECOND ARGUMENT. IF ARGUMENT IS 'ON', RETURN TO STEP 5E. IF 'OFF', RETURN TO STEP 5F. IF NEITHER, GO TO STEP 5A. 5E. CHECK IF 'TEXT' ALREADY ON. IF IT IS, GO TO STEP 1. IF NOT, TURN TO 'TEXT' BIT IN THE RDEVTMCD FIELD OF THE TERMINAL RDEVBLOK ON AND THE 'APL' BIT OFF. GO TO STEP 1. 5F. CHECK IF 'TEXT' ALREADY OFF. IF SO, GO TO STEP 1. IF NOT, TURN OFF THE 'TEXT' BIT IN THE RDEVTMCD FIELD AND GO TO STEP 1. 6. CHARDEL - GO TO STEP 12 TO INTERROGATE SECOND ARGUMENT. IF 'ON', RETURN TO STEP 6B. IF 'OFF', RETURN TO STEP 6C. IF 'CHAR', RETURN TO STEP 6A. 6A. MOVE THE SPECIFIED CHARACTER INTO THE RDEVCDEL FIELD OF THE TERMINAL RDEVBLOK AND GO TO STEP 1. 6B. MOVE THE SYSTEM DEFAULT CHARDEL CHARACTER FROM DMKSYSCD IN SYSLOCS TO THE RDEVCDEL FIELD AND GO TO STEP 1. 6C. ZERO OUT THE RDEVCDEL FIELD AND GO TO STEP 1. 7. LINEDEL - GO TO STEP 12 TO INTERROGATE THE SECOND ARGUMENT.IF 'ON' RETURN TO STEP 7B--IF 'OFF' RETURN TO STEP 7C--IF A CHARACTER ,RETURN TO STEP 7A. 7A. MOVE THE ENTERED CHARACTER INTO THE RDEVLDEL FIELD OF THE RDEVBLOK AND GO TO STEP 1. 7B. MOVE THE SYSTEM DEFAULT LINE DELETE CHARACTER FROM THE DMKSYSLD FIELD IN SYSLOCS TO RDEVLDEL AND GO TO STEP 1. 7C. ZERO OUT THE RDEVLDEL FIELD AND GO TO STEP 1. 8. LINEND - GO TO STEP 12 TO INTERROGATE THE SECOND ARGUMENT. IF 'ON' RETURN TO STEP 8B -- IF 'OFF', RETURN TO STEP 8C AND IF CHARACTER, RETURN TO STEP 8A. 8A. MOVE THE SPECIFIED CHARACTER INTO THE RDEVLEND FIELD OF THE TERMINAL RDEVBLOK AND GO TO STEP 1. 8B. MOVE THE SYSTEM DEFAULT LINE END CHARACTER FROM THE DMKSYSLE FIELD OF SYSLOCS AND GO TO STEP 1. 8C. ZERO OUT THE RDEVLEND FIELD AND GO TO STEP 1. 9. ESCAPE - GO TO STEP 12 TO INTERROGATE THE SECOND ARGUMENT. IF 'ON', RETURN TO STEP 9B-- IF 'OFF' RETURN TO STEP 9C AND IF A CHARACTER, RETURN TO STEP 9A. 9A. MOVE THE SPECIFIED CHARACTER INTO THE RDEVESCP FIELD OF RDEVBLOK FOR THE TERMINAL AND GO TO STEP 1. 9B. MOVE THE SYSTEM DEFAULT ESCAPE CHARACTER FROM THE DMKSYSES FIELD OF SYSLOCS TO THE RDEVESCP FIELD OF THE TERMINAL RDEVBLOK AND GO TO STEP 1. 9C. ZERO OUT THE RDEVESCP FIELD IN THE RDEVBLOK AND GO TO STEP 1. 9.1. TABCHAR - INVOKE STEP 12 TO DETERMINE WHETHER 'ON', 'OFF', OR 'CHAR' WAS SPECIFIED AS THE ARGUMENT FOR THE TABCHAR. IF 'ON' RETURN TO STEP 9.1B, IF 'OFF' RETURN TO STEP 9.1C, OR IF A CHARACTER RETURN TO STEP 9.1A. 9.1A. CHECK THAT THE SPECIFIED CHARACTER IS NOT ALPHABETIC, NUMERIC, OR A 3270 CONTROL CHARACTER; IF SO, MOVE IT INTO THE VMGRFTAB FIELD OF THE USER'S VMBLOK, OTHERWISE, DON'T CHANGE VMGRFTAB AND SEND AN INVALID OPERAND MESSAGE. 9.1B. MOVE THE SYSTEM DEFAULT TAB CHAR (X'6A') INTO THE USER'S VMGRFTAB AND GO TO STEP 1. 9.1C. ZERO OUT THE USER'S VMGRFTAB FIELD OF THE VMBLOK AND THEN GO TO STEP 1. 10. LINESIZE - CALL DMKCVTDB TO CONVERT THE SECOND ARGUMENT TO BINARY. IF THE CONVERT FAILS, CALL DMKERMSG TO SEND DMKCFT002E ERROR MESSAGE.THEN CHECK IF A LINESIZE OF ZERO WAS SPECIFIED. IF SO , CALL DMKERMSG TO SEND DMKCFT002E ERROR MESSAGE. IF NUMBER IS OK, STORE THE NEW LINESIZE INTO THE RDEVLLEN FIELD OF THE TERMINAL RDEVBLOK AND GO TO STEP 1. 11. MASK - GO TO STEP 12 TO INTERROGATE THE SECOND ARGUMENT. IF 'ON' RETURN TO STEP 11B -- IF 'OFF' , RETURN TO STEP 11C -- AND IF NEITHER, RETURN TO STEP 11A. 11A. CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFT002E. 11B. TURN OFF THE RDEVPSUP FLAG IN THE RDEVFLAG FIELD OF THE TERMINAL RDEVBLOK AND GO TO STEP 1. 11C. TURN ON THE RDEVPSUP FLAG IN THE RDEVFLAG FIELD OF THE TERMINAL RDEVBLOK AND GO TO STEP 1. 12. THIS IS A SUBROUTINE TO CHECK SECOND ARGUMENT OF A SET. CHECK IF 'OFF'. IF IT IS RETURN ON REGISTER 7. IF NOT CHECK FOR 'ON'. IF IT IS, RETURN ON REGISTER 6. IF NEITHER OF THESE, RETURN ON REGISTER 14. 13. MODE OPTION, CHECK FOR VALID ARG, CP OR VM. SET THE APPROPRIATE VMBLOK STATUS OR ISSUE ERROR MSG
Calls to Other Routines
DMKSCNFD - TO LOCATE THE NEXT ARGUMENT DMKQCNWT - TO SEND RESPONSE MESSAGE TO TERMINAL DMKERMSG - TO SEND ERROR MESSAGES TO TERMINAL