The following program adds a new Usec Section to a CLASS observation. A more realistic program would open an output file and write the observation into it. The data here contains dummy values and names for the example.
module mytypes type :: owner_title_version integer(kind=4) :: datai4 real(kind=4) :: datar4 real(kind=8) :: datar8 character(len=4) :: datac4 end type owner_title_version end module mytypes
program myprog use class_types use class_user_interfaces use mytypes external :: toclass type(observation) :: obs type(owner_title_version) :: mydata integer(kind=4) :: version logical :: error ! ! 1) Fill the data mydata%datai4 = 111 mydata%datar4 = 222. mydata%datar8 = 333. mydata%datac4 = 'ABCD' ! ! 2) Tell Class who I am call class_user_owner('OWNER','TITLE') ! ! 3) Declare my transfer subroutine call class_user_toclass(toclass) ! ! 4) Fill the User Section in the observation version = 1 error = .false. call class_user_add(obs,version,mydata,error) if (error) stop ! end program myprog
subroutine toclass(mydata,version,error) use class_user_interfaces use mytypes !--------------------------------------------------------------------- ! Transfer and order the input 'mydata' object to the internal Class ! data buffer. !--------------------------------------------------------------------- type(owner_title_version), intent(in) :: mydata ! integer(kind=4), intent(in) :: version ! The version of the data logical, intent(inout) :: error ! Logical error flag ! if (version.ne.1) then print *,'TOCLASS: Unsupported data version ',version error = .true. return endif ! call class_user_datatoclass(mydata%datai4) call class_user_datatoclass(mydata%datar4) call class_user_datatoclass(mydata%datar8) call class_user_datatoclass(mydata%datac4) ! end subroutine toclass