program stuff
integer,parameter :: rp=kind(1.0d0)
integer,parameter :: m=999
type item
character(len=20) :: desc
real(kind=rp) :: value
end type item
type(item) :: db2(m)=[( &
& item('item'//char(mod(i/100,10)+48)//char(mod(i/10,10)+48)//char(mod(i/1,10)+48), i*1.0_rp), &
& i=1,m ) ]
write(*,'(2(g0))')db2
end program stuff
You can make the IDs unique strings using CHAR():
item001 1.0000000000000000
item002 2.0000000000000000
item003 3.0000000000000000
:
:
item997 997.00000000000000
item998 998.00000000000000
item999 999.00000000000000