MAIN    START
        LAD    GR1,ARG
        CALL   SEARCH      ;副プログラムの呼び出し
        RET
ARG     DC     DATA,'A'
DATA    DC     'PROGRAMMING LANGUAGE CASL.'
        END
SEARCH  START              ;文字の検索 [b14.cas]
        RPUSH              ;汎用レジスタの退避
        LD     GR2,0,GR1   ;文字列のアドレス [  a  ]
        LAD    GR2,-1,GR2
        LAD    GR3,NUM
        LAD    GR4,0       ;カウンタ
LOOP    LAD    GR2,1,GR2   ;文字列のアドレスアップ
        LAD    GR4,1,GR4   ;カウンタのアップ
        CPA    GR4,=10     ;10を越えたか [  b  ]
        JMI    BR
        LAD    GR3,1,GR3   ;次の桁へ
        LAD    GR4,0       ;GR4を0に戻す
BR      LD     GR5,0,GR2
        CPA    GR5,='.'    ;終了?
        JZE    END
        CPA    GR5,1,GR1   ;文字の比較 [  c  ]
        JNZ    LOOP
        LD     GR5,GR4
        ADDA   GR5,='0'    ;文字に変換
        ST     GR5,OUT1    ;1桁目格納
        LD     GR5,0,GR3   ;10の桁を取り出す
        ST     GR5,OUT10   ;10の位を格納 [  d  ]
        OUT    OUT10,LEN
        JUMP   LOOP
END     RPOP               ;汎用レジスタの復元
        RET
NUM     DC     ' 12345678'
OUT10   DS     1
OUT1    DS     1
LEN     DC     2
        END