Leica Experiments in Leica M8 and M9 Conversions

I write a lot of software for embedded systems, including system-on-a-chip Pentium class CPU's. Lots of assembly language routines, and take over the CPU. I used one of them for the start of this code- has a "smart HEX editor" built in. Like looking at a HEX dump, and writing routines to execute and look at the results. I need to move the routines out of it and into something a bit more operating system friendly. You get one long shriek out of Windows when trying to run it.
 
I modified the FORTRAN code to parse the "Image File Directory", find the sub-IFD, and parse it as well. This is where the M9 stores the uncompressed image file.

This is using a Yellow filter with the M9, and merging Blue/Green planes and converting using reduced interpolation.

16931449097_719bbd88d4_b.jpg
L1012677-Edit
by fiftyonepointsix, on Flickr

17138851795_800b266e74_b.jpg
M1012665
by fiftyonepointsix, on Flickr

16516422074_97513cfbaa_b.jpg
M1012668
by fiftyonepointsix, on Flickr

I bought the M9 and Monochrom both out, the latter produces cleaner files- ie less artifacts. But... I think the yellow filter used with the M9 and M8 balance the channels and produce a better conversion IF you plan on converting to monochrome in the classic style.
 
Again with the Leica M9, Yellow filter.

16991248947_6487e3a71f_b.jpg
M1012676_small
by fiftyonepointsix, on Flickr

100% crop,

16576228684_e79bc87de7_b.jpg
M1012676_crop
by fiftyonepointsix, on Flickr

And just in case you've ever wondered what a DNG file stores and why having an open/documented standard is a good thing,

IFD DATA EXTRACTED FROM FILE "L1012675".

FOUND 41 ENTRIES.
TAG 1= 00FE 0004 00000001 00000001 GENERAL INDICATOR
TAG 2= 0100 0004 00000001 00000140 NUMBER COLUMNS
TAG 3= 0101 0004 00000001 000000D8 NUMBER OF ROWS
TAG 4= 0102 0003 00000003 041C 0000 BITS PER SAMPLE
TAG 5= 0103 0003 00000001 0001 0000 COMPRESSION
TAG 6= 0106 0003 00000001 0002 0000 PHOTOMETRIC INTERPRETATION (MOSAIC/LINEAR)
TAG 7= 010F 0002 00000010 0578 0000 MAKE
TAG 8= 0110 0002 00000012 0588 0000 MODEL
TAG 9= 0111 0004 00000001 00001990 STRIPOFFSET (START OF IMAGE DATA)
TAG 10= 0112 0003 00000001 0001 0000 ORIENTATION ( 01= H, 02= V)
TAG 11= 0115 0003 00000001 0003 0000 SAMPLES PER PIXEL
TAG 12= 0116 0004 00000001 000000D8 ROWS PER STRIP
TAG 13= 0117 0004 00000001 00032A00 STRIP BYTE COUNT
TAG 14= 011A 0005 00000001 00000424 X RESOLUTION
TAG 15= 011B 0005 00000001 0000042C Y RESOLUTION
TAG 16= 011C 0003 00000001 0001 0000 PLANAR CONFIGURATION
TAG 17= 0128 0003 00000001 0002 0000 RESOLUTION UNIT
TAG 18= 0131 0002 00000006 059C 0000 SOFTWARE, NAME AND VERSION
TAG 19= 014A 0004 00000001 000001FC SUBIFD
TAG 20= 8769 0004 00000001 00000318 POINTER TO EXIF IFD
TAG 21= 882B 0003 00000001 0000 0000 SELF TIME MODE
TAG 22= 9003 0002 00000014 0434 0000 DATE_TIME_ORIG
TAG 23= 920E 0005 00000001 00000448 X FOCAL PLANE RESOLUTION
TAG 24= 920F 0005 00000001 00000450 Y FOCAL PLANE RESOLUTION
TAG 25= 9210 0003 00000001 0002 0000 FOCAL PLANE RESOLUTION UNIT
TAG 26= 9216 0001 00000004 00 00 00 01 TIFF STANDARD
TAG 27= C612 0001 00000004 01 00 00 00 DNG VERSION
TAG 28= C614 0002 00000012 05A4 0000 UNIQUE CAMERA MODEL
TAG 29= C621 000A 00000009 0458 0000 COLOR MATRIX 1
TAG 30= C622 000A 00000009 04A0 0000 COLOR MATRIX 2
TAG 31= C623 000A 00000009 04E8 0000 CAMERACALIBRATION
TAG 32= C624 000A 00000009 0530 0000 CAMERA CALIBRATION 2
TAG 33= C628 0005 00000003 000005B8 AS SHOT NEUTRAL
TAG 34= C62A 000A 00000001 05D0 0000 BASELINE EXPOSURE
TAG 35= C62B 0005 00000001 000005D8 BASELINE NOISE
TAG 36= C62C 0005 00000001 000005E0 BASELINE SHARPNESS
TAG 37= C62E 0005 00000001 000005E8 LINEAR RESPONSE LIMIT
TAG 38= C62F 0002 00000008 05F0 0000 CAMERA SERIAL NUMBER
TAG 39= C635 0003 00000001 0001 0000 MAKER NOTE SAFETY
TAG 40= C65A 0003 00000001 0011 0000 CALIBRATION ILLUMINANT1
TAG 41= C65B 0003 00000001 0015 0000 CALIBRATION ILLUMINANT2

FOUND 23 ENTRIES.
TAG 1= 00FE 0004 00000001 00000000 GENERAL INDICATOR
TAG 2= 0100 0004 00000001 00001460 NUMBER COLUMNS
TAG 3= 0101 0004 00000001 00000D90 NUMBER OF ROWS
TAG 4= 0102 0003 00000001 0010 0000 BITS PER SAMPLE
TAG 5= 0103 0003 00000001 0001 0000 COMPRESSION
TAG 6= 0106 0003 00000001 8023 0000 PHOTOMETRIC INTERPRETATION (MOSAIC/LINEAR)
TAG 7= 0111 0004 00000001 00034400 STRIPOFFSET (START OF IMAGE DATA)
TAG 8= 0115 0003 00000001 0001 0000 SAMPLES PER PIXEL
TAG 9= 0116 0004 00000001 00000D90 ROWS PER STRIP
TAG 10= 0117 0004 00000001 0228AC00 STRIP BYTE COUNT
TAG 11= 011A 0005 00000001 000005F8 X RESOLUTION
TAG 12= 011B 0005 00000001 00000600 Y RESOLUTION
TAG 13= 011C 0003 00000001 0001 0000 PLANAR CONFIGURATION
TAG 14= 0128 0003 00000001 0002 0000 RESOLUTION UNIT
TAG 15= 828D 0003 00000002 0002 0002 CFAREPEATPATTERN
TAG 16= 828E 0001 00000004 00 01 01 02 CFAPATTERN
TAG 17= C619 0003 00000002 0001 0001 BLACKLEVELREPEAT
TAG 18= C61A 0004 00000001 0000002C BLACK LEVEL
TAG 19= C61D 0004 00000001 00003FFF WHITE LEVEL
TAG 20= C61F 0003 00000002 0002 0002 DEFAULT CROP ORIGIN
TAG 21= C620 0003 00000002 145C 0D8C DEFAULT CROP SIZE
TAG 22= C62D 0004 00000001 000001F4 BAYER GREEN SPLIT
TAG 23= C632 0005 00000001 00000608 ANTIALIAS STRENGTH


=============================================================

Converted to Linear Monochrome,

IFD DATA EXTRACTED FROM FILE "m1012675".

FOUND 36 ENTRIES.
TAG 1= 00FE 0004 00000001 00000001 GENERAL INDICATOR
TAG 2= 0100 0004 00000001 00000140 NUMBER COLUMNS
TAG 3= 0101 0004 00000001 000000D8 NUMBER OF ROWS
TAG 4= 0102 0003 00000003 041C 0000 BITS PER SAMPLE
TAG 5= 0103 0003 00000001 0001 0000 COMPRESSION
TAG 6= 0106 0003 00000001 884C 0000 PHOTOMETRIC INTERPRETATION (MOSAIC/LINEAR)
TAG 7= 010F 0002 00000010 0578 0000 MAKE
TAG 8= 0110 0002 00000012 0588 0000 MODEL
TAG 9= 0111 0004 00000001 00001990 STRIPOFFSET (START OF IMAGE DATA)
TAG 10= 0112 0003 00000001 0001 0000 ORIENTATION ( 01= H, 02= V)
TAG 11= 0115 0003 00000001 0003 0000 SAMPLES PER PIXEL
TAG 12= 0116 0004 00000001 000000D8 ROWS PER STRIP
TAG 13= 0117 0004 00000001 00032A00 STRIP BYTE COUNT
TAG 14= 011A 0005 00000001 00000424 X RESOLUTION
TAG 15= 011B 0005 00000001 0000042C Y RESOLUTION
TAG 16= 011C 0003 00000001 0001 0000 PLANAR CONFIGURATION
TAG 17= 0128 0003 00000001 0001 0000 RESOLUTION UNIT
TAG 18= 0131 0002 00000006 059C 0000 SOFTWARE, NAME AND VERSION
TAG 19= 014A 0004 00000001 000001FC SUBIFD
TAG 20= 8769 0004 00000001 00000318 POINTER TO EXIF IFD
TAG 21= 882B 0003 00000001 0000 0000 SELF TIME MODE
TAG 22= 9003 0002 00000014 0434 0000 DATE_TIME_ORIG
TAG 23= 920E 0005 00000001 00000448 X FOCAL PLANE RESOLUTION
TAG 24= 920F 0005 00000001 00000450 Y FOCAL PLANE RESOLUTION
TAG 25= 9210 0003 00000001 0001 0000 FOCAL PLANE RESOLUTION UNIT
TAG 26= 9216 0001 00000004 00 00 00 01 TIFF STANDARD
TAG 27= C612 0001 00000004 01 01 00 00 DNG VERSION
TAG 28= C614 0002 00000012 05A4 0000 UNIQUE CAMERA MODEL
TAG 29= C62A 000A 00000001 05D0 0000 BASELINE EXPOSURE
TAG 30= C62B 0005 00000001 000005D8 BASELINE NOISE
TAG 31= C62C 0005 00000001 000005E0 BASELINE SHARPNESS
TAG 32= C62E 0005 00000001 000005E8 LINEAR RESPONSE LIMIT
TAG 33= C62F 0002 00000008 05F0 0000 CAMERA SERIAL NUMBER
TAG 34= C635 0003 00000001 0001 0000 MAKER NOTE SAFETY
TAG 35= C65A 0003 00000001 0011 0000 CALIBRATION ILLUMINANT1
TAG 36= C65B 0003 00000001 0015 0000 CALIBRATION ILLUMINANT2

FOUND 20 ENTRIES.
TAG 1= 00FE 0004 00000001 00000000 GENERAL INDICATOR
TAG 2= 0100 0004 00000001 00001460 NUMBER COLUMNS
TAG 3= 0101 0004 00000001 00000D90 NUMBER OF ROWS
TAG 4= 0102 0003 00000001 0010 0000 BITS PER SAMPLE
TAG 5= 0103 0003 00000001 0001 0000 COMPRESSION
TAG 6= 0106 0003 00000001 884C 0000 PHOTOMETRIC INTERPRETATION (MOSAIC/LINEAR)
TAG 7= 0111 0004 00000001 00034400 STRIPOFFSET (START OF IMAGE DATA)
TAG 8= 0115 0003 00000001 0001 0000 SAMPLES PER PIXEL
TAG 9= 0116 0004 00000001 00000D90 ROWS PER STRIP
TAG 10= 0117 0004 00000001 0228AC00 STRIP BYTE COUNT
TAG 11= 011A 0005 00000001 000005F8 X RESOLUTION
TAG 12= 011B 0005 00000001 00000600 Y RESOLUTION
TAG 13= 011C 0003 00000001 0001 0000 PLANAR CONFIGURATION
TAG 14= 0128 0003 00000001 0001 0000 RESOLUTION UNIT
TAG 15= C619 0003 00000002 0001 0001 BLACKLEVELREPEAT
TAG 16= C61A 0004 00000001 00000030 BLACK LEVEL
TAG 17= C61D 0004 00000001 0000AFFF WHITE LEVEL
TAG 18= C61F 0003 00000002 0002 0002 DEFAULT CROP ORIGIN
TAG 19= C620 0003 00000002 145C 0D8C DEFAULT CROP SIZE
TAG 20= C632 0005 00000001 00000608 ANTIALIAS STRENGTH
 
This is the data initialization for the IFD tags that convert the Color Mosaic DNG file to Monochrome-Linear DNG. I am putting it here for any developers that want to support the Linear Monochrome files, will be helpful to know what Tags are missing that their software might need. This happened to Lightroom and the DNG Codec in Windows. I compared the Tags used from the actual Monochrom DNG files to those from the M9 to generate this table.

BLOCK DATA DNGINIT
C+++ BEGIN / CMDNGTAGS/
INTEGER* 4 DNGTAGS
PARAMETER ( DNGTAGS= 52)
INTEGER* 2 IFD0KEEP, TAGCODES
CHARACTER* 64 TAGNAMES
INTEGER* 4 TCOLUMNS, TROWS, TBITS, TIMAGESTART, TSUBIFD, TWHITE
INTEGER* 4 TXRES, TYRES, TCFAREPEAT, TCFAPATTERN, TVERS, TBLACK
COMMON/ CMDNGTAGS/ TAGNAMES( DNGTAGS), IFD0KEEP( DNGTAGS),
1 TAGCODES( DNGTAGS), TCOLUMNS, TROWS, TBITS, TIMAGESTART,
1 TSUBIFD, TXRES, TYRES, TCFAREPEAT, TCFAPATTERN, TVERS, TBLACK,
1 TWHITE
C--- END / CMDNGTAGS
DATA IFD0KEEP/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
1 0, 1, 1, 0, 1, 1, 1, 1, 1, 1,
1 1, 1/
DATA TAGCODES/
1 Z'00FE', Z'0100', Z'0101', Z'0102', Z'0103',
1 Z'0106', Z'010F', Z'0110', Z'0111', Z'0112',
1 Z'0115', Z'0116', Z'0117', Z'011A', Z'011B',
1 Z'011C', Z'0128', Z'0131', Z'013B', Z'828D',
1 Z'828E', Z'8298', Z'8769', Z'882B', Z'9003',
1 Z'920E', Z'920F', Z'9210', Z'9216', Z'C612',
1 Z'C614', Z'C619', Z'C61A', Z'C61D', Z'C61F',
1 Z'C620', Z'C621', Z'C622', Z'C623', Z'C624',
1 Z'C628', Z'C62B', Z'C62C', Z'C62D', Z'C62F',
1 Z'C632', Z'C635', Z'C65A', Z'C65B', Z'014A',
1 Z'C62E', Z'C62A'/
DATA TAGNAMES/
1 'GENERAL INDICATOR', 'NUMBER COLUMNS', 'NUMBER OF ROWS',
1 'BITS PER SAMPLE', 'COMPRESSION',
1 'PHOTOMETRIC INTERPRETATION (MOSAIC/LINEAR)', 'MAKE', 'MODEL',
1 'STRIPOFFSET (START OF IMAGE DATA)',
1 'ORIENTATION ( 01= H, 02= V)', 'SAMPLES PER PIXEL',
1 'ROWS PER STRIP', 'STRIP BYTE COUNT', 'X RESOLUTION',
1 'Y RESOLUTION', 'PLANAR CONFIGURATION', 'RESOLUTION UNIT',
1 'SOFTWARE, NAME AND VERSION', 'ARTIST',
1 'CFAREPEATPATTERN', 'CFAPATTERN', 'COPYRIGHT',
1 'POINTER TO EXIF IFD', 'SELF TIME MODE',
1 'DATE_TIME_ORIG', 'X FOCAL PLANE RESOLUTION',
1 'Y FOCAL PLANE RESOLUTION', 'FOCAL PLANE RESOLUTION UNIT',
1 'TIFF STANDARD', 'DNG VERSION', 'UNIQUE CAMERA MODEL',
1 'BLACKLEVELREPEAT', 'BLACK LEVEL', 'WHITE LEVEL',
1 'DEFAULT CROP ORIGIN', 'DEFAULT CROP SIZE',
1 'COLOR MATRIX 1', 'COLOR MATRIX 2', 'CAMERACALIBRATION',
1 'CAMERA CALIBRATION 2', 'AS SHOT NEUTRAL',
1 'BASELINE NOISE', 'BASELINE SHARPNESS', 'BAYER GREEN SPLIT',
1 'CAMERA SERIAL NUMBER', 'ANTIALIAS STRENGTH',
1 'MAKER NOTE SAFETY', 'CALIBRATION ILLUMINANT1',
1 'CALIBRATION ILLUMINANT2', 'SUBIFD', 'LINEAR RESPONSE LIMIT',
1 'BASELINE EXPOSURE'/
END

This is the function that processes the DNG file from the M9 (and M8) to convert to Linear Monochrome.

INTEGER* 4 FUNCTION IFDCONVERT( IFDTABLE, IFDTABLE4, IFDENTRIES)
IMPLICIT NONE
INTEGER* 2 IFDTABLE( 6, IFDENTRIES)
INTEGER* 4 IFDTABLE4( 3, IFDENTRIES)
C+++ BEGIN / CMDNGTAGS/
INTEGER* 4 DNGTAGS
PARAMETER ( DNGTAGS= 52)
INTEGER* 2 IFD0KEEP, TAGCODES
CHARACTER* 64 TAGNAMES
INTEGER* 4 TCOLUMNS, TROWS, TBITS, TIMAGESTART, TSUBIFD, TWHITE
INTEGER* 4 TXRES, TYRES, TCFAREPEAT, TCFAPATTERN, TVERS, TBLACK
COMMON/ CMDNGTAGS/ TAGNAMES( DNGTAGS), IFD0KEEP( DNGTAGS),
1 TAGCODES( DNGTAGS), TCOLUMNS, TROWS, TBITS, TIMAGESTART,
1 TSUBIFD, TXRES, TYRES, TCFAREPEAT, TCFAPATTERN, TVERS, TBLACK,
1 TWHITE
C--- END / CMDNGTAGS
INTEGER* 4 OLDTAGS, NEWTAGS, TAGINDEX, TAGLIST, TAGSEARCH, INDEX
INTEGER* 4 TAGLENGTH
INTEGER* 2 I, J
LOGICAL* 4 FOUND
INTEGER* 4 STRLEN
NEWTAGS= 0
C SEARCH THROUGH ALL OF THE TAGS PASSED IN.
DO 5 OLDTAGS= 1, IFDENTRIES
C IDENTIFY THE TAG FROM THE KNOWN LIST.
TAGSEARCH= 0
10 CONTINUE
TAGSEARCH= TAGSEARCH+ 1
FOUND= TAGCODES( TAGSEARCH) .EQ. IFDTABLE( 1, OLDTAGS)
IF( ( .NOT. FOUND) .AND. TAGSEARCH .LT. DNGTAGS) GO TO 10
IF( FOUND .AND. IFD0KEEP( TAGSEARCH) .NE. 0) THEN
TAGLENGTH= STRLEN( TAGNAMES( TAGSEARCH))
C KEEP THE TAG.
NEWTAGS= NEWTAGS+ 1
IF( TAGCODES( TAGSEARCH) .EQ. Z'0106') THEN
C 6 0106: PHOTOMETRIC INTERP: 8023 FOR COLOR; 884C FOR LINEAR
IFDTABLE( 5, OLDTAGS)= Z'884C'
C 17 0128: RESOLUTION UNIT. 02. THE UNIT OF RESOLUTION FOR X AND FOR Y.
ELSE IF( TAGCODES( TAGSEARCH) .EQ. Z'0128') THEN
IFDTABLE( 5, OLDTAGS)= 1
C 28 9210: FOCAL PLANE RESOLUTION UNIT, 0002. (LOC 0156 SET TO 1?)
ELSE IF( TAGCODES( TAGSEARCH) .EQ. Z'9210') THEN
IFDTABLE( 5, OLDTAGS)= 1
C 30 C612: DNG VERSION: 4 BYTES 01 04 00 00 (CHANGE LOC 16F TO 01)
ELSE IF( TAGCODES( TAGSEARCH) .EQ. Z'C612') THEN
IFDTABLE( 5, OLDTAGS)= Z'0101'
C 33 C61A: BLACK LEVEL: 1 WORD, 005C
ELSE IF( TAGCODES( TAGSEARCH) .EQ. Z'C61A') THEN
IFDTABLE( 5, OLDTAGS)= Z'030'
C 34 C61D: WHITE LEVEL: 1 WORD, 3FFF
ELSE IF( TAGCODES( TAGSEARCH) .EQ. Z'C61D') THEN
IFDTABLE( 5, OLDTAGS)= Z'AFFF'
C NUMBER OF COLUMNS.
C Z'0100', Z'0101', Z'0102'
ELSE IF( TAGCODES( TAGSEARCH) .EQ. Z'0100') THEN
TCOLUMNS= IFDTABLE( 5, OLDTAGS)
WRITE( *, 100) OLDTAGS, TAGCODES( TAGSEARCH),
1 TAGNAMES( TAGSEARCH)( 1: TAGLENGTH), TCOLUMNS
ELSE IF( TAGCODES( TAGSEARCH) .EQ. Z'0101') THEN
TROWS= IFDTABLE( 5, OLDTAGS)
WRITE( *, 100) OLDTAGS, TAGCODES( TAGSEARCH),
1 TAGNAMES( TAGSEARCH)( 1: TAGLENGTH), TROWS
ELSE IF( TAGCODES( TAGSEARCH) .EQ. Z'0102') THEN
TBITS= IFDTABLE( 5, OLDTAGS)
WRITE( *, 100) OLDTAGS, TAGCODES( TAGSEARCH),
1 TAGNAMES( TAGSEARCH)( 1: TAGLENGTH), TBITS
ELSE IF( TAGCODES( TAGSEARCH) .EQ. Z'0111') THEN
TIMAGESTART= IFDTABLE4( 3, OLDTAGS)
WRITE( *, 100) OLDTAGS, TAGCODES( TAGSEARCH),
1 TAGNAMES( TAGSEARCH)( 1: TAGLENGTH), TIMAGESTART
END IF
100 FORMAT( ' IFD ENTRY ', I3, ': ', Z4.4, ', "', A, '":', Z8)
IFDTABLE( 1, NEWTAGS)= IFDTABLE( 1, OLDTAGS)
IFDTABLE( 2, NEWTAGS)= IFDTABLE( 2, OLDTAGS)
IFDTABLE( 3, NEWTAGS)= IFDTABLE( 3, OLDTAGS)
IFDTABLE( 4, NEWTAGS)= IFDTABLE( 4, OLDTAGS)
IFDTABLE( 5, NEWTAGS)= IFDTABLE( 5, OLDTAGS)
IFDTABLE( 6, NEWTAGS)= IFDTABLE( 6, OLDTAGS)
ELSE IF( FOUND .AND. IFD0KEEP( TAGSEARCH) .EQ. 0) THEN
WRITE( *, 110) OLDTAGS, TAGCODES( TAGSEARCH),
1 TAGNAMES( TAGSEARCH)( 1: TAGLENGTH), TIMAGESTART
ELSE IF( .NOT. FOUND) THEN
NEWTAGS= NEWTAGS+ 1
IFDTABLE( 1, NEWTAGS)= IFDTABLE( 1, OLDTAGS)
IFDTABLE( 2, NEWTAGS)= IFDTABLE( 2, OLDTAGS)
IFDTABLE( 3, NEWTAGS)= IFDTABLE( 3, OLDTAGS)
IFDTABLE( 4, NEWTAGS)= IFDTABLE( 4, OLDTAGS)
IFDTABLE( 5, NEWTAGS)= IFDTABLE( 5, OLDTAGS)
IFDTABLE( 6, NEWTAGS)= IFDTABLE( 6, OLDTAGS)
WRITE( *, 120) OLDTAGS, IFDTABLE( OLDTAGS)
END IF
110 FORMAT( ' DELETE IFD ENTRY ', I3, ': ', Z4.4, ', "', A, '":', Z8)
120 FORMAT( 'UNRECOGNIZED TAG( ', I3, ')= ', Z8.8)
5 CONTINUE
DO 20 INDEX= NEWTAGS+ 1, IFDENTRIES
WRITE( *, *) ' ZERO TAG ', INDEX
IFDTABLE( 1, INDEX)= 0
IFDTABLE( 2, INDEX)= 0
IFDTABLE( 3, INDEX)= 0
IFDTABLE( 4, INDEX)= 0
IFDTABLE( 5, INDEX)= 0
IFDTABLE( 6, INDEX)= 0
20 CONTINUE
IFDCONVERT= NEWTAGS
RETURN
END

 
Back
Top