Если вы хотите перебрать строку «ABC», вы можете сделать это:
S STR="ABC"
F I=1:1:$L(STR) W $E(STR,I,I),!
функция $ L ($ Length) вернет длину STR. В этом случае 3, поэтому цикл for будет повторяться только 3 раза.
Функция $ E ($ Extract) извлечет подстроку STR. Первый параметр $ E - это строка для извлечения. Второй параметр - это начальная позиция, а третий параметр - это конечная позиция подстроки. В этом случае я указываю одну и ту же начальную и конечную позиции, чтобы каждый символ извлекался по одному за раз.
Вы также можете указать разделитель полей в качестве второго параметра функции $ L. Поэтому, если STR = "Name | Age | Sex", вы можете написать каждое поле следующим образом:
S STR="NAME|AGE|SEX"
F I=1:1:$L(STR,"|") W $P(STR,"|",1),!
Здесь $ L будет возвращать 3, а цикл for будет повторяться 3 раза.
Функция $ P ($ Piece) извлекает каждое поле из STR, используя символ канала (|) в качестве разделителя полей, и я определяю, какое поле возвращать.
Надеюсь, это поможет ...
igotmumps