/* Arrow */ call addlib("rexxmathlib.library", 5, -30, 0) options results parse ARG Port x y x2 y2 b ADDRESS value Port pp_UpdateUndo Pi=3.1415926 DXX=x2-x+1;DYY=y2-y+1 XX=x;YY=y;XX2=x2;YY2=y2 pp_GetPenSize P=result*3 pp_GetPenType T=result pp_GetAlias Alias=result pp_AliasOn if T=0 then DO pp_PenType 1;pp_PenSize 1;P=3 END pp_line x y x2 y2 if T=0 then;DO;pp_PenSize 2;END If x>x2 then DO;tx=x;x=x2;x2=tx;ty=y;y=y2;y2=ty;END If y=y2 or x=x2 then DO;tx=XX;XX=XX2;XX2=tx;ty=YY;YY=YY2;YY2=ty;END Dx=abs(x2-x)+1;Dy=abs(y2-y)+1 If y>y2 then DO Prot=0.5*Pi+ATan(Dx/Dy) END ELSE DO Prot=0.5*Pi-ATan(Dx/Dy) END if x=x2 then DO;Prot=90*Pi/180;END if y=y2 then DO;Prot=0;END co=Cos(Prot);si=Sin(Prot) if DXX<0 then DO if DYY<0 then DO Z=-1 END ELSE DO Z=1 END END ELSE DO if DYY<0 then DO Z=-1 END ELSE DO Z=1 END END if y=y2 & DXX<0 then DO;Z=-1;END If DYY<0 or DXX<0 then DO rox.0=XX+(1.5*P)*Z;roy.0=YY-(P)*Z rox.1=XX+(1.5*P)*Z;roy.1=YY+(P)*Z DO i=0 to 1 j=rox.i;k=roy.i rox.i=trunc((j-XX)*co-(k-YY)*si+XX+0.5,3) roy.i=trunc((j-XX)*si+(k-YY)*co+YY+0.5,3) END pp_AliasOff pp_STARTpoly pp_AddPoly rox.0 roy.0 pp_AddPoly rox.1 roy.1 pp_Addpoly XX YY pp_AddPoly rox.0 roy.0 pp_EndPolyF pp_AliasOn pp_STARTpoly pp_AddPoly rox.0 roy.0 pp_AddPoly rox.1 roy.1 pp_Addpoly XX YY pp_AddPoly rox.0 roy.0 pp_EndPoly END ELSE DO rox.2=XX2-(1.5*P)*Z;roy.2=YY2-(P)*Z rox.3=XX2-(1.5*P)*Z;roy.3=YY2+(P)*Z DO i=2 to 3 j=rox.i;k=roy.i rox.i=trunc((j-XX2)*co-(k-YY2)*si+XX2+0.5,3) roy.i=trunc((j-XX2)*si+(k-YY2)*co+YY2+0.5,3) END pp_AliasOff pp_STARTpoly pp_Addpoly XX2 YY2 pp_AddPoly rox.2 roy.2 pp_AddPoly rox.3 roy.3 pp_AddPoly XX2 YY2 pp_EndPolyF pp_AliasOn pp_STARTpoly pp_Addpoly XX2 YY2 pp_AddPoly rox.2 roy.2 pp_AddPoly rox.3 roy.3 pp_AddPoly XX2 YY2 pp_EndPoly END if T=0 then;DO;pp_PenType 0;END if Alias=0 then DO;pp_AliasOff;END