BTW: the German mainframe Telefunken TR440 had a machine instruction which did a
binary search on a sorted table of (48 bit) machine words; the instruction was
called TLOG. Of course, there were other instructions for linear search, too.
See page 17 of the instruction set reference (only available in German, sorry):
There were other fancy machine instructions in the TR440 and in the predecessor
Am 26.10.2013 17:11, schrieb Bernd Oppolzer:
> Some hours after I posted this, I got the impressions that it might be better to
> explain some of the hidden secrets that may be still in this code.
> First, the key field is in the records of the table at offset 3, that is the
> reason, why the compares with the search argument SUCHARG are done with 3(R7).
> The length of the compare is derived from the definition of SUCHARG, and the
> type of the compare is CLC or CP; the Structured Programming macro IF selects
> the machine instruction depending on the definition of SUCHARG.
> Then, as you can see, the IF has two conditions, separated by an asterisk; if
> the first condition is true, then control goes to the first THEN, if the second
> condition is true, then control goes to the second THEN, otherwise to the ELSE.
> This is in fact not a simple IF statement - looks more like SELECT ... WHEN ...
> The SP macros are home grown ... originally bought from another company in the
> early 70s, IIRC - long gone history. It's part of my job to keep them running;
> I'm working as a free lancer for this company since 1988.
> The rest should be self explaining ... I hope.
> To generalize this example (for example, to put it into a macro), it is only
> necessary to parameterize some pieces of the code, that is:
> - the number of the elements on entry
> - the size of one element which is multiplied to the index
> - the position of the key field
> - the length of the key field (which goes into the compare instruction)
> - and maybe the type of the compare instruction
> To further generalize it, the compare instruction should be a function call ...
> Kind regards