On 20 Jul 2007 07:48:03 -0700, in bit.listserv.ibm-main you wrote: >On Fri, 2007-07-20 at 06:31 -0700, Ray Mullins wrote: >> In something as compute-intensive as SMF triplets, every little bit >> helps. > >The nasty part is testing bit fields in COBOL. The LE bit test routines >are expensive to run. (I haven't looked recently at COBOL to see if >there are native ways to do this that don't involve standing on one's >head.)
I have done it (probably snitched from someone else) by moving the switch byte to the low order byte of a half word, setting up a table of 8 1 byte fields initialized to zero and then using the following code. IF SWITCH-BINARY > 127 SUBTRACT 128 FROM SWITCH-BINARY MOVE 1 TO SWITCH-BYTE (1) END-IF IF SWITCH-BINARY > 63 SUBTRACT 64 FROM SWITCH-BINARY MOVE 1 TO SWITCH-BYTE (2) END-IF IF SWITCH-BINARY > 31 SUBTRACT 32 FROM SWITCH-BINARY MOVE 1 TO SWITCH-BYTE (3) END-IF IF SWITCH-BINARY > 15 SUBTRACT 16 FROM SWITCH-BINARY MOVE 1 TO SWITCH-BYTE (4) END-IF IF SWITCH-BINARY > 7 SUBTRACT 8 FROM SWITCH-BINARY MOVE 1 TO SWITCH-BYTE (5) END-IF IF SWITCH-BINARY > 3 SUBTRACT 4 FROM SWITCH-BINARY MOVE 1 TO SWITCH-BYTE (6) END-IF IF SWITCH-BINARY > 1 SUBTRACT 2 FROM SWITCH-BINARY MOVE 1 TO SWITCH-BYTE (7) END-IF IF SWITCH-BINARY = 1 MOVE 1 TO SWITCH-BYTE (8) END-IF Of Course, IBM could just implement the 2002 standard for binary characters and bit manipulation and eliminate this happy horse manure. Incidentally, the process can be reversed to build a bit switch. I have used this plus the reference modified move statements to handle SMF 30 records. > > CALL 'CEESITST' USING WORD-VALUE BIT-SELECT FC BIT-VALUE > IF NOT CEE000 THEN > CALL "CEE3ABD" USING U0300, CLEANUP-CODE > END-IF. ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html

