let parse_program tvl =
 find1 `PG tvl "ID" >>= fun id ->
 find01 `PG tvl "PN" >>= fun name ->
 find01 `PG tvl "CL" >>= fun command_line ->
 find01 `PG tvl "PP" >>= fun previous_id ->
 find01 `PG tvl "DS" >>= fun description ->
 find01 `PG tvl "VN" >>= fun version ->
 assert_tags `PG tvl ["ID";"PN";"CL";"PP";"DS";"VN"] >>| fun () ->
 {id; name; command_line; previous_id; description; version}