MainframeSupports
tip uge 36/2008:
Jeg har gennem tiderne set et utal af forskellige procedurer og funktioner i PL/I, der
kan fjerne efterstillede blanke. Selv om PL/I har et rigt udvalg af indbyggede funktioner,
så syntes IBM teamet bag PL/I ikke, at vi skulle beriges med en funktion til at strippe
blanke. Det har heldigvis ændret sig med den nye version af PL/I kaldet Enterprise PL/I.
Så nu kan vi allesammen fjerne vores hjemmelavede strippe-funktioner og bruge den
autoriserede udgave.
Som sædvanlig har PL/I lab'et besluttet sig for at være anderledes. Hvor fjernelse af
blanke i REXX og DB2 hedder STRIP (DB2 kalder fjernelse af efterstillede tegn for RTRIM, men
det er stadig bare en specialiseret udgave af STRIP), så er det kommet til at hedde
TRIM i
PL/I. Parametrene til TRIM er selvfølgelig også skruet anderledes sammen, og når man læser
beskrivelsen af parametrene, bliver man mere forvirret end godt er. Derfor bringer jeg
her en lille oversigt:
- Den første parameter
er den tegnstreng, man gerne vil have fjernet forantillede tegn eller efterstillede tegn
eller begge dele fra. Det er ligegyldigt om denne parameter er en CHAR eller en CHAR
VARYING.
- Den anden parameter angiver de tegn, som man vil have fjernet fra begyndelsen af
tegnstrengen i den første parameter. Hvis man angiver '' (den tomme streng), så bliver
der ikke fjernet nogen foranstillede tegn. Hvis man angiver eksempelvis 'ab', så bliver
alle forekomster af a eller b fjernet indtil et tegn forskelligt fra a og b dukker op. Så
TRIM('aaaabbbbbccc', 'ab') returnerer altså 'ccc'.
- Den tredie parameter angiver de tegn, som man vil have fjernet fra slutningen af
tegnstrengen i den første parameter. Hvis man angiver '' (den tomme streng) eller udelader
denne parameter, så bliver der ikke fjernet nogen efterstillede tegn. Hvis man angiver
eksempelvis 'yz', så bliver alle forekomster af y eller z fjernet indtil et tegn
forskelligt fra y og z dukker op. Så TRIM('aaaabbbbbcccdddzzzzzyyyzzzyyy', 'ab', 'yz')
returnerer altså 'cccddd'.
Med andre ord skal man altså fjerne efterstillede blanke med følgende TRIM:
mynonstrippedvariable = 'some nonsense ';
put skip list('theStrippedResult=<' !! TRIM(mynonstrippedvariable,'',' ' !! '>');
Dette eksempel udskriver: theStrippedResult=<some nonsense>. Læg mærke til, at
resultatet af TRIM altid er en CHAR VARYING.
Forrige danske tip
Last tip in english
Tip oversigten