2.4.18 INSPECT
|  | |  | | |
Format1
INSPECT Feldname1
TALLYING Feldname2 FOR
{
[
{
CHARACTERS [{BEFORE / AFTER} [INITIAL] Feldname3] ... /
{ALL / LEADING} Feldname4 [{BEFORE / AFTER} [INITIAL] Feldname5 ...] ...
}
]
/
[
REPLACING
{
CHARACTERS BY Feldname6 [{BEFORE / AFTER} [INITIAL] Feldname7 ... /
{ALL / LEADING / FIRST} Feldname8 [{BEFORE / AFTER} [INITIAL] Feldname9 ...] ...
}
]
}
| |
|  | |  |
Mit INSPECT werden die Anzahl von Zeichen in einem Datenfeld gezählt (TALLYING) oder ersetzt (REPLACE).
Hierbei können mehrere Kriterien gleichzeitig angegeben werden.
Achtung: Das Ergebnis (TALLYING Feldname1) wird bei diesem Befehl nicht initialisiert sondern aufaddiert!
Der Zählbereich kann durch Angabe von BEFORE und AFTER entsprechend eingeschränkt werden.
Beispiel: Aufsplitten eines Pfadnamens
identification division.
data division.
working-storage section.
01 anz pic 999.
01 lanz pic 999.
01 len pic 999.
01 pfadname pic x(200).
procedure division.
move 'c:\programme\acc\cobol\test\insp1.cob' to pfadname.
move 1 to lanz anz
move function length(pfadname) to len.
ilop.
inspect pfadname (anz:) tallying anz for characters before '\'
if anz < len add 1 to anz
move anz to lanz
go to ilop.
display pfadname(lanz:)
call getchar.
Anzeige: insp1.cob
Beispiel:
01 tfeld pic x(20) value ' los: xxy ende: xx'
....
move 0 to anz.
inspect tfeld tallying anz for all 'x'
after 'los' before 'ende'.
display anz.
Anzeige: 2
Mit REPLACING könne in dem angegebenen Bereich die Zeichen verändert werden.
Eine spezielle Form des REPLACING bietet folgendes Format:
|  | |  | | |
Format2
INSPECT Feldname1 CONVERTING Feldname2 TO Feldname3
[{BEFORE / AFTER} [INITIAL] Feldname5 ...]
| |
|  | |  |
CONVERTING wird so abgearbeitet als würde mit jedem einzelnen Zeichen von Feldname2 ein REPLACING ALL mit dem zugehörigen Zeichen von Feldname3 durchgeführt werden.
Beispiel:
01 tfeld pic x(20) value '123abc123142'
....
move 0 to anz.
inspect tfeld converting '123' to 'ABC' after 'a'.
display tfeld
Anzeige: 123abcABCA4B
Siehe inspect.cob
Zurück zu Acc-Cobol Initialize Statement
Hoch zu Procedure Divison in COBOL
Weiter zu MONITOR
|