How to resolve the algorithm Comma quibbling step by step in the PL/I programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Comma quibbling step by step in the PL/I programming language

Table of Contents

Problem Statement

Comma quibbling is a task originally set by Eric Lippert in his blog.

Write a function to generate a string output which is the concatenation of input words from a list/sequence where:

Test your function with the following series of inputs showing your output here on this page:

Note: Assume words are non-empty strings of uppercase characters for this task.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Comma quibbling step by step in the PL/I programming language

Source code in the pl/i programming language

*process or(!);
 quib: Proc Options(main);
 /*********************************************************************
 * 06.10.2013 Walter Pachl
 *********************************************************************/
   put Edit*process or(!);
 quib: Proc Options(main);
 /*********************************************************************
 * 06.10.2013 Walter Pachl
 * 07.10.2013 -"- change "Oxford comma" to and
 *********************************************************************/
   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 Init('');
   Dcl word(10) 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;
         word(wi)=s;
         s='';
         End;
       Else Do;
         word(wi)=left(s,p-1);
         s=substr(s,p+1);
         End;
       end;
     wn=wi-1;
     result=word(1);
     Do i=2 To wn-1;
       result=result!!', '!!word(i);
       End;
     If wn>1 Then
       result=result!!' and '!!word(wn);
     End;
   Return('{'!!result!!'}');
   End;
 End;

  

You may also check:How to resolve the algorithm Pythagorean quadruples step by step in the Nim programming language
You may also check:How to resolve the algorithm Environment variables step by step in the Scala programming language
You may also check:How to resolve the algorithm Scope modifiers step by step in the Eiffel programming language
You may also check:How to resolve the algorithm File size step by step in the Oforth programming language
You may also check:How to resolve the algorithm Unbias a random generator step by step in the Julia programming language