Bij de unstring-opdracht is de delimited-by-clausule niet verplicht. Als er geen scheiding is opgegeven, vult de computer alle velden achtereenvolgend. Het is moeilijk om hiervoor een zinvol voorbeeld te verzinnen. Daarom volgt nu een nonsensvoorbeeld.
In dit voorbeeld ontbreekt delimited by. Nieuw in dit voorbeeld is tallying, dat we kunnen gebruiken om het aantal velden te tellen waarin de unstring-opdracht een resultaat heeft geplaatst.
01 zin pic x(20), value "naderekolagenudiruba". 01 twee pic x(02). 01 vier pic x(04). 01 zes pic x(06). 01 acht pic x(08). 01 veldteller pic 9. 01 startpunt pic 9. move zero to veldteller accept startpunt unstring zin into twee vier zes acht with pointer startpunt tallying in veldteller
onthoud
De computer verhoogt het veld achter tallying met één, telkens als er een veld is afgehandeld gedurende de unstring-opdracht. De computer zet het veld niet vooraf op nul, dat moeten we, indien nodig, zelf doen.
In het voorbeeld krijgt de variabele veldteller de initiële
waarde nul. Daarna volgt een accept-opdracht waarmee de variabele startpunt
een waarde krijgt.
Stel dat de invoer 4 is. Wat is dan het resultaat? Het losmaken van
tekens begint op positie 4 van de variabele zin. Alle velden worden
volledig gevuld omdat er geen scheidingstekens in de opdracht zijn genoemd.
Twee wordt er; vier wordt ekol, zes wordt agenud
en acht wordt iruba*** (* is spatie). De veldteller staat
op 4 want er zijn vier velden door de unstring behandeld.
Stel nu dat de invoer 9 bedraagt. Wat is dan het resultaat? Twee
wordt la, vier wordt genu, zes wordt diruba
en acht blijft ongewijzigd. De veldteller staat op 3 want er zijn
drie velden behandeld. Toen het veld acht aan de beurt was, waren alle
tekens al op.