
Twenty-eighth executive session Geneva , 11-13 March 2002 National Programme to Prevent , Combat and Provide Humanitarian Assistance to the Victims of Natural Disasters ( PRONAPLUCAN ) Note by the UNCTAD secretariat The National Programme to Prevent , Combat and Provide Humanitarian Assistance to the Victims of Natural Disasters ( PRONAPLUCAN ) , a national non-governmental organization , has applied for inclusion in the Register of such bodies provided for under Board decision 43 ( VII ) , sections III and IV . After consultations with the member State concerned , the Secretary-General of UNCTAD has included PRONAPLUCAN in the Register in accordance with Board decision 43 ( VII ) . Information on this organization is annexed to this note . Annex PREVENT , COMBAT AND PROVIDE HUMANITARIAN ASSISTANCE TO History PRONAPLUCAN was founded on 31 March 1991 following a general assembly attended by experts on disaster prevention and management , with a view to determining the causes and consequences of calamities and enabling the Democratic Republic of the Congo to play an active part in activities related to the International Decade for Natural Disaster Reduction proclaimed by the General Assembly of the United Nations in its resolution 42/169 of 11 December 1987. Aims and objectives The overall aim of PRONAPLUCAN is to reduce the harmful effects of disasters with a view to achieving sustainable human development . Its specific objectives are to set up a disaster data bank containing geographical , geological , social , economic , medical and health information for the entire national territory ; to organize emergency programmes in disaster-stricken areas ; to protect and look after the environment ; and to combat poverty with a view to achieving sustainable human development . Membership PRONAPLUCAN is an association with more than 103 members , who abide by its rules , pay their subscriptions and take part in the organization 's activities . Structure PRONAPLUCAN has a general assembly , a board of directors , an oversight commission and a management team . The general assembly is the highest organ . It consists of active members , honorary members and supporters and meets in ordinary session once at the beginning of each year . The board of directors is responsible for ensuring that the decisions of the general assembly are carried out . It consists of eight members , of whom seven are elected from among the active members , and meets at least twice a year at the invitation of its chairperson . The oversight commission is responsible for managing PRONAPLUCAN resources and ensuring that the organization functions properly and that management observes the rules and regulations and the decisions taken by the general assembly and the board of directors . It consists of three members elected by the general assembly and meets once a year . The management team is the executive body . It is headed by a director-general elected by the general assembly from among the active members , and has four departments ( technical , administration and finance , cooperation , and coordination of women 's activities ) . The management team answers to the board of directors and manages material , human and financial resources . Financial resources The organization 's income comes from members ' subscriptions , gifts and bequests , membership fees , external grants and help from international bodies . Relations with other international organizations PRONAPLUCAN has consultative status with the United Nations Economic and Social Council . It works in partnership with the Food and Agriculture Organization of the United Nations ( FAO ) and the United Nations Development Programme ( UNDP ) . It also works together with several other organizations , including Caritas . Publications PRONAPLUCAN publications comprise : Five-year feasibility study on PRONAPLUCAN , by Mangala Babinga , February 1991 ; The Congo 's general disaster prevention policy , by Mangala Babinga and the International Labour Organization ( ILO ) , March 1999 ; PRONAPLUCAN four-year plan of action , 1999-2001 , February 1999. Liaison The President-General , Mr. Mangala Babinga , will be responsible for liaison with UNCTAD . Address Programme National de Prévention , de Lutte et d'Assistance Humanitaire aux Victimes des Catastrophes Naturelles ( PRONAPLUCAN ) 1 , avenue du Commerce Immeuble INA , rez-de-chaussée BP 13 714 Kinshasa Kinshasa/Gombe Democratic Republic of the Congo Fax : 00243 12 20 373 / 00243 12 21 188 e-mail : PRONAPLUCAN@hotmail . com The working language of the organization is French . 