diff for allowing odd number pixels (raxis program): 1. don't force image to even width, but make j3 even and nn half of j3, dim imline w nn (imline must hold even # pixels) C WRITE POSTSCRIPT PRELUDE: WRITE(3,'(A)')'gsave initgraphics' WRITE(3,'(A)')' {1 exch sub} settransfer' nn=jn/2 J3=J2 if (2*nn.lt.jn) then nn=(jn+1)/2 j3=j2+1 ! J3 MUST BE EVEN NUMBER FOR 4-BIT DATA. OUTSTRING(J3)=HSTRING(1) ! PUT ASCII HEX CHAR IN LAST BYTE IN CASE ODD # PIXELS endif WRITE(3,76) nn 76 format (' /imline ',i5,' string def') ------------------ 2. if premature eof, file outstring with white space before writing: 95 WRITE(3,156)(OUTSTRING(IX),IX=J1,J3) ! must be even number of bytes for 4-bit data, ALL ASCII HEX! 156 FORMAT(125A1) GOTO 990 980 WRITE(6,*)'UNEXPECTED END OF FILE READING IMAGE FILE! FILL W WHITE.' iyt=iy do 97 ix=j1,j3 97 outstring(ix)=hstring(1) do 98 iy=iyt,i3 98 WRITE(3,156)(OUTSTRING(IX),IX=J1,J3) 990 CLOSE(UNIT=2) details: ************ File DISK$XRAY1:[BERRY.FOR]RX4.FOR;62 209 I1=0 210 I2=1899 211 J1=0 212 J2=1899 213 else 214 if (I1.gt.1897) I1=1897 ****** File DISK$XRAY1:[BERRY.FOR]RX4.FOR;55 209 I1=1 210 I2=1898 211 J1=1 212 J2=1898 213 else 214 n=i1 215 if (n.eq.(2*int(n/2))) then 216 i1=i1+1 217 endif 218 n=i2 219 if (n.ne.(2*int(n/2))) then 220 i2=i2-1 221 endif 222 n=j1 223 if (n.eq.(2*int(n/2))) then 224 j1=j1+1 225 endif 226 n=j2 227 if (n.ne.(2*int(n/2))) then 228 j2=j2-1 229 endif 230 endif 231 232 if (I1.gt.1897) I1=1897 ************ ************ File DISK$XRAY1:[BERRY.FOR]RX4.FOR;62 218 endif 219 220 in=1+i2-i1 ****** File DISK$XRAY1:[BERRY.FOR]RX4.FOR;55 236 in=1+i2-i1 ************ ************ File DISK$XRAY1:[BERRY.FOR]RX4.FOR;62 244 j3=j2+1 ! J3 MUST BE EVEN NUMBER FOR 4-BIT DATA. 245 OUTSTRING(J3)=HSTRING(1) ! PUT ASCII HEX CHAR IN LAST BYTE IN CASE ODD # PIXELS 246 endif 247 WRITE(3,76) nn 248 76 format (' /imline ',i5,' string def') ****** File DISK$XRAY1:[BERRY.FOR]RX4.FOR;55 260 j3=j2+1 261 endif 262 WRITE(3,76) nn ! nn must be even number for 4-bit data! 263 76 format (' /imline ',i5,' string def') ************ ************ File DISK$XRAY1:[BERRY.FOR]RX4.FOR;62 272 95 WRITE(3,156)(OUTSTRING(IX),IX=J1,J3) ! must be even number of bytes for 4-bit data, ALL ASCII HEX! 273 156 FORMAT(125A1) 274 GOTO 990 275 980 WRITE(6,*)'UNEXPECTED END OF FILE READING IMAGE FILE! FILL W WHITE.' 276 iyt=iy 277 do 97 ix=j1,j3 ****** File DISK$XRAY1:[BERRY.FOR]RX4.FOR;55 287 95 WRITE(3,156)(OUTSTRING(IX),IX=J1,J3) ! must be even number of bytes for 4-bit data! 288 156 FORMAT(125A1) 289 goto 990 290 291 980 iyt=iy 292 do 97 ix=j1,j3 ************ ------------------------------- differences for large plate (mx9) vs small (mx4) ************ File DISK$XRAY1:[BERRY.FOR]MX9.FOR;9 14 CHARACTER*1 BLINE(4000),OUTSTRING(2000),HSTRING(16),BOXFLAG 15 INTEGER*2 ILINE(2000),H,K,L,N 16 LOGICAL EFLG ****** File DISK$XRAY1:[BERRY.FOR]MX4.FOR;8 14 CHARACTER*1 BLINE(2400),OUTSTRING(1200),HSTRING(16),BOXFLAG 15 INTEGER*2 ILINE(1200),H,K,L,N 16 LOGICAL EFLG ************ ************ File DISK$XRAY1:[BERRY.FOR]MX9.FOR;9 42 . PROGRAM Version 940318 big plate' 43 . /' To print image: LPR MARXER.TMP') 44 5 WRITE(6,1100) ****** File DISK$XRAY1:[BERRY.FOR]MX4.FOR;8 42 . PROGRAM Version 930305'/' To print image: LPR MARXER.PS') 43 5 WRITE(6,1100) ************ ************ File DISK$XRAY1:[BERRY.FOR]MX9.FOR;9 76 OPEN (UNIT=3,FILE='MARXER.TMP',STATUS='NEW',RECL=1200, 77 & CARRIAGECONTROL='LIST') ****** File DISK$XRAY1:[BERRY.FOR]MX4.FOR;8 75 OPEN (UNIT=3,FILE='MARXER.PS',STATUS='NEW',RECL=1200, 76 & CARRIAGECONTROL='LIST') ************ ************ File DISK$XRAY1:[BERRY.FOR]MX9.FOR;9 94 NXYZ(1)=2000 95 NXYZ(2)=2000 96 NXYZ(3)=1 ****** File DISK$XRAY1:[BERRY.FOR]MX4.FOR;8 94 NXYZ(1)=1200 95 NXYZ(2)=1200 96 NXYZ(3)=1 ************ ************ File DISK$XRAY1:[BERRY.FOR]MX9.FOR;9 138 READ(2,155,end=985) (BLINE(II),II=1,4000) 139 DO 80 IX=1,NX ****** File DISK$XRAY1:[BERRY.FOR]MX4.FOR;8 138 READ(2,155,end=985) (BLINE(II),II=1,2400) 139 DO 80 IX=1,NX ************ ************ File DISK$XRAY1:[BERRY.FOR]MX9.FOR;9 166 I1=400 167 I2=1599 168 J1=400 169 J2=1599 170 endif 171 if (I1.gt.1999) I1=1999 172 if (I2.gt.1999) I2=1999 173 if (J1.gt.1999) J1=1999 174 if (J2.gt.1999) J2=1999 175 in=1+i2-i1 ****** File DISK$XRAY1:[BERRY.FOR]MX4.FOR;8 166 I1=163 167 I2=1036 168 J1=163 169 J2=1036 170 endif 171 if (I1.gt.1199) I1=1199 172 if (I2.gt.1199) I2=1199 173 if (J1.gt.1199) J1=1199 174 if (J2.gt.1199) J2=1199 175 in=1+i2-i1 ************ ************ File DISK$XRAY1:[BERRY.FOR]MX9.FOR;9 216 88 READ(2,155,end=980) (BLINE(II),II=1,4000) 217 DO 95 IY = I1,I2 218 READ(2,155,end=980) (BLINE(II),II=1,4000) 219 DO 90 IX=J1,J3 ****** File DISK$XRAY1:[BERRY.FOR]MX4.FOR;8 216 88 READ(2,155,end=980) (BLINE(II),II=1,2400) 217 DO 95 IY = I1,I2 218 READ(2,155,end=980) (BLINE(II),II=1,2400) 219 DO 90 IX=J1,J3 ************ ************ File DISK$XRAY1:[BERRY.FOR]MX9.FOR;9 307 BEAMX=1000 308 BEAMY=1000 309 write(6,*)'Enter resolution in angstroms at which to draw circle:' 310 write(6,*)'Enter 0 to draw no (more) circles' 311 write(6,*)' wl=',wl 312 502 read(5,*)resol ****** File DISK$XRAY1:[BERRY.FOR]MX4.FOR;8 307 BEAMX=600 308 BEAMY=600 309 write(6,*)'Enter resolution in angstroms at which to draw circle:' 310 write(6,*)'Enter 0 to draw no (more) circles' 311 502 read(5,*)resol ************