Topic: SF Smart Indent?

Jeff,

Is it possible to revised SF Smart Indent so that it indents ELSEIF contents correctly?

!--- For example, using Smart Indent produces the following code:
PROGRAM SMART_INDENT   
    IMPLICIT NONE
    INTEGER, PARAMETER :: SP = KIND(1.E0)
   
    INTEGER                       :: IFLAG
    REAL(KIND=SP)             :: X
    REAL(KIND=SP), PARAMETER  :: r1 = 1.0
    REAL(KIND=SP), PARAMETER  :: r2 = 2.0
    REAL(KIND=SP), PARAMETER  :: r3 = 3.0
    REAL(KIND=SP), PARAMETER  :: r4 = 4.0
   
    X = r1
   
    !--- TEST SMART INDENT
    IF (X == r1) THEN
        !--- r1
    IFLAG = -1
    ELSEIF (X == r2) THEN
        !--- r2
    IFLAG = +1
    ELSEIF (X == r3) THEN
        !--- r3
    IFLAG = 2
    ELSEIF (X == r4) THEN
        !--- r4
    IFLAG = 2
    ELSE
        !--- ?
        IFLAG = 0
    END IF
   
    WRITE(*,"(1X,A,1X,I2)") "IFLAG=", IFLAG
   
    RETURN
END PROGRAM SMART_INDENT

!--- Original Code prior to Smart Indent:
PROGRAM SMART_INDENT   
    IMPLICIT NONE
    INTEGER, PARAMETER :: SP = KIND(1.E0)
   
    INTEGER                       :: IFLAG
    REAL(KIND=SP)             :: X
    REAL(KIND=SP), PARAMETER  :: r1 = 1.0
    REAL(KIND=SP), PARAMETER  :: r2 = 2.0
    REAL(KIND=SP), PARAMETER  :: r3 = 3.0
    REAL(KIND=SP), PARAMETER  :: r4 = 4.0
   
    X = r1
   
    !--- TEST SMART INDENT
    IF (X == r1) THEN
        !--- r1
        IFLAG = -1
    ELSEIF (X == r2) THEN
        !--- r2
        IFLAG = +1
    ELSEIF (X == r3) THEN
        !--- r3
        IFLAG = 2
    ELSEIF (X == r4) THEN
        !--- r4
        IFLAG = 2
    ELSE
        !--- ?
        IFLAG = 0
    END IF
   
    WRITE(*,"(1X,A,1X,I2)") "IFLAG=", IFLAG
   
    RETURN
END PROGRAM SMART_INDENT

Frank

2

Re: SF Smart Indent?

Frank,

I'll have a look.  It definitely didn't do a great job.

Jeff Armstrong
Approximatrix, LLC