%EXTERNALROUTINESPEC DEFINE (%STRING(255) PARMS)
%EXTERNALINTEGERFNSPEC OUT STREAM
%SYSTEMROUTINESPEC ETOI(%INTEGER ADDRESS,LEN)
%SYSTEMROUTINESPEC ITOE(%INTEGER ADDRESS,LENGTH)
%EXTERNALROUTINESPEC OPENSQ(%INTEGER CHAN)
%EXTERNALROUTINESPEC  READSQ (%INTEGER CHAN,%NAME START,END)
%EXTERNALROUTINESPEC WRITESQ (%INTEGER CHAN,%NAME START,END)
%EXTERNALROUTINESPEC CLOSESQ(%INTEGER CHAN)
!
%EXTERNALROUTINE CTES (%STRING(255) PARMS)
!
!       CONVERT TO EBCDIC SEQUENTIAL (FROM ISO CHARACTER FILE)
!
%INTEGER INPUT,OUTPUT,I,COUNT
%STRING(32) BEFORE,AFTER
%BYTEINTEGERARRAY BUFF (0:132)
%STRINGNAME LINE
%ON %EVENT 9 %START
    CLOSESQ(OUTPUT)
    WRITE(COUNT,0)
    PRINTSTRING(" LINES PROCESSED") ; NEWLINE
    %RETURN
%FINISH
!
%IF PARMS -> BEFORE.(",").AFTER %THEN %START
    DEFINE("60,".BEFORE)  ;  INPUT = 60
    DEFINE("61,".AFTER)  ;  OUTPUT = 61
%FINISH %ELSE %START
    PRINTSTRING("INCORRECT PARAMETERS")
    %RETURN
%FINISH
LINE == STRING(ADDR(BUFF(0)))
COUNT = 0
OPENSQ(OUTPUT)
SELECT INPUT (INPUT)
READ:
%WHILE NEXT SYMBOL = NL %THEN SKIP SYMBOL
%CYCLE I = 1,1,132
    READ SYMBOL(BUFF(I))
    %IF BUFF(I) = NL %THEN %EXIT
%REPEAT
BUFF(0) = I
%IF LINE = ".END" %THEN -> E
ITOE(ADDR(BUFF(1)),BUFF(0))
WRITESQ(OUTPUT,BUFF(1),BUFF(BUFF(0)))
COUNT = COUNT + 1
->READ
E:
CLOSESQ(OUTPUT)
WRITE(COUNT,0)
PRINTSTRING(" LINES PROCESSED") ; NEWLINE
%END      ;!  OF CTES
!
%EXTERNALROUTINE CTIC (%STRING(255) PARMS)
!
!      CONVERT TO ISO CHARACTER (FROM EBCDIC SEQUENTIAL FILE)
!
%INTEGER INPUT,OUTPUT,CURRENT STREAM,COUNT
%BYTEINTEGERARRAY BUFF(0:132)
%STRINGNAME LINE
%STRING(80) BEFORE,AFTER
%ON %EVENT 9 %START
    CLOSESQ(INPUT)
    SELECT OUTPUT(CURRENT STREAM)
    WRITE(COUNT,0)
    PRINTSTRING(" RECORDS PROCESSED") ; NEWLINE
    %RETURN
%FINISH
!
LINE == STRING(ADDR(BUFF(0)))
COUNT = 0
CURRENT STREAM = OUT STREAM
%IF PARMS -> BEFORE.(",").AFTER %THEN %START
    DEFINE("60,".BEFORE)  ;  INPUT = 60
    DEFINE("61,".AFTER)  ;  OUTPUT = 61
%FINISH %ELSE %START
    PRINTSTRING("INCORRECT PARAMETERS")
    %RETURN
%FINISH
OPENSQ(INPUT)
SELECT OUTPUT(OUTPUT)
READ:
READSQ(INPUT,BUFF(1),BUFF(132))
ETOI(ADDR(BUFF(1)),132)
LENGTH(LINE) = 132
%WHILE CHARNO(LINE,LENGTH(LINE)) = 0 %THEN     %C
          LENGTH(LINE) = LENGTH(LINE) - 1
%IF BUFF(BUFF(0)) = X'85' %THEN BUFF(BUFF(0)) = X'0A'
%IF BUFF(BUFF(0)) # X'0A' %THEN LINE = LINE."
"
PRINTSTRING(LINE)
COUNT = COUNT + 1
-> READ
%END      ;!  OF CTIC
!
%ENDOFFILE