d         .TITLE  CLF
         .IDENT  /MACRO/
,;
;   FORTRAN CALLABLE INTEGER FUNCTION CLF
;
X;     INTEGER FUNCTION CLF( FIELD1, FIELD2, N )
;
 ;   FIELD1 AND FIELD2 ARE STRIGS OF WORDS
;     N IS THE LENGTH OF THE BOTH STRINGS IN LONG WORDS
;
;    FUNCTION RETURNS +1 IF FIELD1 .GT. FIELD2
;                      0 IF FIELD1 .EQ. FIELD2
x;                     -1 IF FIELD1 .LT. FIELD2
;
@        .PSECT  $CODE,PIC,CON,REL,LCL,SHR,EXE,RD,NOWRT,LONG
        .ENTRY  CLF,^M<R2,R3>
        MOVAL   @4(AP),R0               ;R0 = ADDR OF FIELD1
l        MOVAL   @8(AP),R1               ;R1 = ADDR OF FIELD2
        MOVL    @12(AP),R2
4        MULL2   #4,R2                   ;R2 = LENGTH IN BYTES
        CMPC    R2,(R0),(R1)    ;IF Z= 1 FIELDS ARE EQUAL
                                ;IF C = 1 FIELD1 < FIELD2
`	        BEQL    EQL
	        BLSSU   LESS
(
        MOVL    #1,R0           ; FIELD1 > FIELD2 ... RETURN +1

        RET

EQL:    CLRL    R0              ;FIELD1 = FIELD2 ... RETURN 0
T        RET
LESS:   MOVL    #-1,R0          ;FIELD1 > FIELD2 ... RETURN -1
        RET
        .END
