Good News Everybody!
The new search engine is LIVE!
Please report any problems to david (at) midrange.com.
|
From: Steve Richter <srichter@AutoCoder.com> > Leif, > I find your solution intriguing, but I cant think anymore today unless I get > paid for it. So I cant verify it. > Could you show how it would work with Harry's data: > > "As an example. I start reading the bits, and if I > read 00110101 then I translate it to the number 0. If I read 000111 I > translate it to 1, 0111 translates to 2, 1000 goes to 3, 10011 is 8, > ..... 0100111 translates to 18. There is about 100 of these codes." > > And Harry, could you post more of the codes and their resulting values ? > here is a sketch, it need be fleshed out with more values. Also, there need be some code to shift the bits over and to get new bits from the source: DCL DD BITS CHAR(12); DCL DD NBR BIN(2); TOP: TSTBUM(B) BITS, X'80'/ONES(L1); L0: TSTBUM(B) BITS, X'40'/ONES(L01); L00: TSTBUM(B) BITS, X'20'/ONES(L001); L000: TSTBUM(B) BITS, X'10'/ONES(L0001); L0000: /* ... */ L0001: TSTBUM(B) BITS, X'08'/ONES(L00011); L00010: /* ... */ L00011: TSTBUM(B) BITS, X'04'/ONES(L000111); L000110: /* ... */ L000111: CPYNV(B) NBR, 1/POS(DONE); L01: TSTBUM(B) BITS, X'20'/ONES(L011); L010: TSTBUM(B) BITS, X'10'/ONES(L0101); L0100: TSTBUM(B) BITS, X'08'/ONES(L01001); L01000: /* ... */ L01001: TSTBUM(B) BITS, X'04'/ONES(L010011); L010010: /* ... */ L010011: TSTBUM(B) BITS, X'02'/ONES(L0100111); L0100110: /* ... */ L0100111: CPYNV(B) NBR, 18/POS(DONE); L001: TSTBUM(B) BITS, X'20'/ONES(L0011); L0010: /* ... */ L0011: TSTBUM(B) BITS, X'08'/ONES(L00111); L00110: TSTBUM(B) BITS, X'04'/ONES(L001101); L00001: /* ... */ L001101: TSTBUM(B) BITS, X'02'/ONES(L0011010); L0011010: TSTBUM(B) BITS, X'01'/ONES(L00110101); L00110100: ... L00110101: CPYNV(B) NBR, 0/ZER(DONE); /* ... */ L1: TSTBUM(B) BITS, X'40'/ONES(L11); L10: TSTBUM(B) BITS, X'20'/ONES(L101); L100: TSTBUM(B) BITS, X'10'/ONES(L1001); L1000: CPYNV(B) NBR, 3/POS(DONE); L1001: TSTBUM(B) BITS, X'08'/ONES(L10011); L10010: /* ... */ L10011: CPYNV(B), NBR, 8/POS(DONE); /* ... */ DONE: Another fast way would be to have a table with 2^12 entries in it. Then simply use the 12 bits as an index to get the number (and the shift).
This mailing list archive is Copyright 1997-2026 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.