Comma quibbling: Difference between revisions
Content deleted Content added
No edit summary |
Walterpachl (talk | contribs) PL/I added |
||
Line 117: | Line 117: | ||
Input: ['ABC', 'DEF', 'G', 'H'] -> Output: '{ABC, DEF, G and H}' |
Input: ['ABC', 'DEF', 'G', 'H'] -> Output: '{ABC, DEF, G and H}' |
||
>>> </lang> |
>>> </lang> |
||
=={{header|PL/I}}== |
|||
<lang pli>*process or(!); |
|||
quib: Proc Options(main); |
|||
/********************************************************************* |
|||
* 06.10.2013 Walter Pachl |
|||
*********************************************************************/ |
|||
put Edit(quibbling(''))(Skip,a); |
|||
put Edit(quibbling('ABC'))(Skip,a); |
|||
put Edit(quibbling('ABC DEF'))(Skip,a); |
|||
put Edit(quibbling('ABC DEF G H'))(Skip,a); |
|||
return; |
|||
quibbling: proc(s) Returns(Char(100) Var); |
|||
Dcl s Char(*); |
|||
Dcl result Char(100) Var; |
|||
Dcl (wi,p) Bin Fixed(31); |
|||
If s='' Then result=''; |
|||
Else Do; |
|||
Do wi=1 By 1 While(s^=''); |
|||
p=index(s,' '); |
|||
If p=0 Then Do; |
|||
If wi>1 Then |
|||
result=result!!' and '!!s; |
|||
else |
|||
result=s; |
|||
s=''; |
|||
End; |
|||
Else Do; |
|||
If wi=1 Then |
|||
result=left(s,p-1); |
|||
Else |
|||
result=result!!', '!!left(s,p-1); |
|||
s=substr(s,p+1); |
|||
End; |
|||
End; |
|||
End; |
|||
Return('{'!!result!!'}'); |
|||
End; |
|||
End;</lang> |
|||
{{out}} |
|||
<pre> |
|||
{} |
|||
{ABC} |
|||
{ABC, DEF} |
|||
{ABC, DEF, G, H} |
|||
</pre> |
|||
=={{header|Rexx}}== |
=={{header|Rexx}}== |