Trailing-Edge
-
PDP-10 Archives
-
decuslib20-05
-
decus/20-0141/damove.for
There are 2 other files named damove.for in the archive. Click here to see a list.
SUBROUTINE DAMOVE(JSTIFY,IFILL ,LFTCOL,LTREND,IERR ,
1 IBUFFR,KOUNT )
C RENBR(/JUSTIFY ITEM IN FIELD OF SPACES)
C
C DONALD BARTH, HARVARD BUSINESS SCHOOL
C
C JSTIFY = -1, DO NOT MOVE ITEM IN IBUFFR(LFTCOL+1)
C THROUGH IBUFFR(KOUNT).
C = 0, THE ITEM IN IBUFFR(LFTCOL+1) THROUGH
C IBUFFR(KOUNT) IS TO BE CENTERED IN THE FIELD
C STARTING AT IBUFFR(LFTCOL+1) AND EXTENDING
C THROUGH IBUFFR(LTREND). THE IBUFFR ARRAY
C LOCATIONS TO THE LEFT OF THE ITEM ARE THEN
C FILLED WITH SPACES.
C = 1, THE ITEM IN IBUFFR(LFTCOL+1) THROUGH
C IBUFFR(KOUNT) IS TO BE MOVED TO THE RIGHT SO
C THAT THE CHARACTER INPUT IN IBUFFR(KOUNT) IS
C PLACED INTO IBUFFR(LTREND). THE IBUFFR
C ARRAY LOCATIONS TO THE LEFT OF THE ITEM ARE
C THEN FILLED WITH SPACES.
C IFILL = 0, DO NOT FILL PORTION OF FIELD RIGHT OF
C ITEM WITH SPACES. THE VALUE OF IFILL HAS NO
C EFFECT ON THE CHARACTERS OF THE ITEM ITSELF.
C KOUNT WILL BE RETURNED POINTING TO THE
C RIGHTMOST CHARACTER OF THE ITEM.
C = 1, FILL THE FIELD RIGHT OF THE ITEM AND
C EXTENDING THROUGH IBUFFR(LTREND) WITH
C SPACES. KOUNT WILL BE RETURNED RETURNED
C POINTING TO IBUFFR(LTREND).
C LFTCOL = SUBSCRIPT OF THE IBUFFR ARRAY ENTRY TO THE
C IMMEDIATE LEFT OF THE FIRST CHARACTER IN THE
C ITEM.
C LTREND = SUBSCRIPT OF THE IBUFFR ARRAY ENTRY WHICH
C FORMS THE RIGHT END OF THE FIELD WHICH IS TO
C CONTAIN THE ITEM. IF JSTIFY=1, THEN THE
C RIGHTMOST CHARACTER OF THE ITEM WILL BE
C PLACED INTO IBUFFR(LTREND).
C IERR = -1, FILL THE FIELD STARTING WITH
C IBUFFR(LFTCOL+1) AND EXTENDING THROUGH
C IBUFFR(LTREND) WITH ASTERISKS AND RETURN
C KOUNT POINTING TO IBUFFR(LTREND).
C = ZERO OR GREATER, MOVE THE ITEM INPUT IN
C IBUFFR(LFTCOL+1) THROUGH IBUFFR(KOUNT) INTO
C THE POSITION INDICATED BY JSTIFY.
C IBUFFR = INPUT CONTAINING THE ITEM TO BE MOVED IN
C LOCATIONS IBUFFR(LFTCOL+1) THROUGH
C IBUFFR(KOUNT). THIS ITEM IS POSITIONED IN
C THE FIELD STARTING AT IBUFFR(LFTCOL+1) AND
C EXTENDING THROUGH IBUFFR(LTREND) AS DIRECTED
C BY JSTIFY.
C KOUNT = INPUT CONTAINING THE SUBSCRIPT IN THE IBUFFR
C ARRAY OF THE RIGHTMOST CHARACTER OF THE ITEM
C TO BE POSITIONED AS DIRECTED BY JSTIFY.
C = RETURNED POINTING TO THE RIGHTMOST CHARACTER
C DEFINED IN THE FIELD AFTER THE ITEM HAS BEEN
C MOVED, AND SPACES ADDED IF REQUESTED BY
C IFILL.
C
DIMENSION IBUFFR(LTREND)
DATA ISTAR,IBLANK/1H*,1H /
C
C DETERMINE HOW FAR TO SHIFT ITEM TO RIGHT
IF(IERR.LT.0)GO TO 5
IF(KOUNT.LE.LFTCOL)GO TO 3
IF(JSTIFY.LT.0)GO TO 3
J=LTREND-KOUNT
IF(JSTIFY.EQ.0)J=J/2
IF(J.LE.0)GO TO 3
I=KOUNT
J=J+KOUNT
KOUNT=J
C
C SHIFT ITEM TO RIGHT IF CENTERING OR RIGHT JUSTIFYING
1 IF(I.LE.LFTCOL)GO TO 2
IBUFFR(J)=IBUFFR(I)
J=J-1
I=I-1
GO TO 1
C
C INSERT BLANKS TO LEFT OF RIGHT SHIFTED ITEM
2 IF(J.LE.LFTCOL)GO TO 3
IBUFFR(J)=IBLANK
J=J-1
GO TO 2
C
C FILL OUT REST OF FIELD WITH BLANKS
3 IF(IFILL.LE.0)GO TO 7
4 IF(KOUNT.GE.LTREND)GO TO 7
KOUNT=KOUNT+1
IBUFFR(KOUNT)=IBLANK
GO TO 4
C
C FILL FIELD WITH ASTERISKS IF ITEM CANNOT FIT
5 KOUNT=LFTCOL
6 IF(KOUNT.GE.LTREND)GO TO 7
KOUNT=KOUNT+1
IBUFFR(KOUNT)=ISTAR
GO TO 6
C
C RETURN TO CALLING PROGRAM
7 RETURN
C165672143471
END