DIP:
PUBLIC
PROC [pin: [1..120], size: [1..120] ← 120, pin1: [1..60] ← 1]
RETURNS [Channel] =
BEGIN
realPin: [1..120] = pin+(IF 2*pin<=size THEN pin1-1 ELSE 121-pin1-size);
side: [0..1] = IF realPin<=60 THEN 0 ELSE 1;
index: [1..60] = IF side=0 THEN realPin ELSE 121-realPin;
RETURN[
(
SELECT index
FROM
<7 => index-1+6*side,
<55 => 5+index+8*((index-7)/8)+8*side,
ENDCASE => 53+index+6*side)
];
END;