! ! sample program: ! read z500, z1000 ! write thick z500-z1000 ! use wgrib2api real, allocatable :: z500(:,:), z1000(:,:) character (len=200) :: file, inv, metadata file = 'gep19.t00z.pgrb2af180' inv = '@mem:0' ! make inv file, save in memory file #0 iret = grb2_mk_inv(file, inv) if (iret.ne.0) stop 1 ! read z500 and z1000 iret = grb2_inq(file,inv,':HGT:1000 mb:', data2=z1000) if (iret.ne.1) stop 2 iret = grb2_inq(file,inv,':HGT:500 mb:', data2=z500, desc=metadata) if (iret.ne.1) stop 3 z1000 = z500 - z1000 ! new method: override metadata iret = grb2_wrt('thick.grb',FILE,1,data2=z1000,meta=metadata,& var='THICK',level='500-1000 mb') if (iret.ne.0) stop 4 ! old method: change metadata string write(*,*) 'metadata 0 ', trim(metadata) iret = grb2_set_substring(metadata,'THICK',2) if (iret.ne.0) stop 5 iret = grb2_set_substring(metadata,'500-1000 mb',3) if (iret.ne.0) stop 6 write(*,*) 'metadata 1 ', trim(metadata) iret = grb2_wrt('thick.grb',FILE,1,data2=z1000,meta=metadata) if (iret.ne.0) stop 7 write(*,*) 'done' stop end