/**/ /* trace i */ parse arg host input input=translate(input,' ','+') If pos('?',input) > 0 THEN DO parse var input '?' input 'EXEC WHO :ANY 'input' ( OUTPUT STACK' 'PIPE STACK | DROP 1 | STEM _.' ko=0 Do k=1 to _.0 parse var _.k 4 surname 26 27 first 43 44 phone 48 64 div 67 44 rest parse var first fir . parse var div dv . if phone='no p' Then phone='' Else phone=';PH='phone anchor='/WHO/S='space(surname,1,'+')';G='fir';OU='dv||phone';' ko=ko+1;a.ko='
'space(surname,1)', 'space(first,1)'' ko=ko+1;a.ko='
'rest End k; a.0=ko queue '' queue ''input' at CERN ' queue '
' 'PIPE STEM A. | STACK' queue '
' END ELSE DO parse var input '/WHO/S='surname';G='first';OU='div';PH='phone';' If div='' Then Do; queue 'Wrong WHO syntax' input; Call X_ queued();end if phone^='' then phone=':ph 'phone 'EXEC WHO :su 'surname' :fi 'first' :div 'div phone ':all ( OUTPUT STACK' If rc^=0 Then Do; queue 'Not found'; CALL X_ queued(); end 'PIPE STACK | DROP 1 | SPECS 3-* 1 | STEM _.' _.2='Email='_.2 queue ''surname', 'first'' queue '' 'PIPE STEM _. | STACK' queue '' END CALL X_ queued() X_: arg rc /* 'PIPE STACK | SPECS /?/ 1 1-* 2 | CONS' */ Exit rc /* last line */