Please help me understand this program

REPORT zmmrus160 NO STANDARD PAGE HEADING
                 LINE-SIZE 255 LINE-COUNT 65(3) MESSAGE-
INCLUDE zmmrus160top.
INCLUDE <icon>.
INITIALIZATION.
  PERFORM initialize_variant.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
  PERFORM f4_for_variant.
AT SELECTION-SCREEN ON p_vari.
PERFORM validate_user_selection.
  PERFORM check_variant.
AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON p_wrkst.
PERFORM authority_check.
START OF SELECTION ****
START-OF-SELECTION.
  PERFORM get_materials.
  PERFORM get_tlmap.
  PERFORM validate_tlmap_mapl.
  PERFORM build_events USING gt_events[].
  PERFORM build_comment USING gt_list_top_of_page[].
PERFORM build_sp_group USING gt_sp_group[].
  PERFORM build_sort.
  PERFORM build_layout USING gs_layout.
  PERFORM build_fieldcat CHANGING gt_fieldcat[].
END-OF-SELECTION.
  PERFORM write_report_alv.                "write report
*&      Form  initialize_variant
      text
FORM initialize_variant .
  CLEAR gs_variant.
  gs_variant-report = sy-repid.
  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
    EXPORTING
      i_save     = 'A'
    CHANGING
      cs_variant = gs_variant
    EXCEPTIONS
      not_found  = 2.
  IF sy-subrc EQ 0.
    p_vari = gs_variant-variant.
  ENDIF.
ENDFORM.                    " INITIALIZE_VARIANT
*&      Form  f4_for_variant
      text
FORM f4_for_variant .
  DATA: lv_exit.
  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      is_variant = gs_variant
      i_save     = 'A'
    IMPORTING
      e_exit     = lv_exit
      es_variant = gs_variant
    EXCEPTIONS
      not_found  = 2.
  IF sy-subrc = 2.
    MESSAGE ID sy-msgid TYPE 'S'      NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    IF lv_exit = space.
      p_vari = gs_variant-variant.
    ENDIF.
  ENDIF.
  gs_variant-report = sy-repid.
ENDFORM.                    "f4_for_variant
*&      Form  check_variant
      text
FORM check_variant .
  IF NOT p_vari IS INITIAL.
    MOVE p_vari TO gs_variant-variant.
    CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
      EXPORTING
        i_save        = 'A'
      CHANGING
        cs_variant    = gs_variant
      EXCEPTIONS
        wrong_input   = 1
        not_found     = 2
        program_error = 3
        OTHERS        = 4.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.
ENDFORM.                    " check_variant
      FORM GET_MATERIALS                                            *
this form creates MATTAB
FORM get_materials.
*get materials for the report
  SELECT matnr spart matkl prdha meins wrkst extwg groes normt
    FROM mara
    INTO TABLE gt_mara
   WHERE matnr IN p_matnr
     AND spart IN p_spart
     AND matkl IN p_matkl
     AND prdha IN p_prdha
     AND wrkst IN p_wrkst
     AND extwg IN p_extwg
     AND groes IN p_groes
     AND normt IN p_normt
     AND lvorm = space.
  CHECK sy-subrc IS INITIAL.
  SELECT matnr werks
    FROM marc
    INTO TABLE gt_marc
     FOR ALL ENTRIES IN gt_mara
   WHERE matnr = gt_mara-matnr
     AND werks IN p_werks
     AND lvorm = space
     AND mmsta IN (space, '01').
  CHECK sy-subrc IS INITIAL.
SELECT matnr werks lgort
   FROM mard
   INTO TABLE gt_mard
    FOR ALL ENTRIES IN gt_marc
  WHERE matnr = gt_marc-matnr
    AND werks = gt_marc-werks
    AND lgort IN p_lgort
    AND lvorm = space.
CHECK sy-subrc IS INITIAL.
  SORT gt_mara BY matnr.
  SORT gt_marc BY matnr werks.
SORT gt_mard BY matnr werks lgort.
ENDFORM.                    "GET_MATERIALS
*&      Form  get_tlmap
      text
FORM get_tlmap.
  DATA: BEGIN OF lt_tlmap OCCURS 0.
          INCLUDE STRUCTURE zmmtlmap.
  DATA: END OF lt_tlmap.
  DATA: lv_fetflag LIKE zmmtlmap-fetflag.
*get task list map for the materials
  LOOP AT gt_mara.
    READ TABLE gt_marc WITH KEY matnr = gt_mara-matnr
                       BINARY SEARCH.
    CHECK sy-subrc IS INITIAL.
    LOOP AT gt_marc FROM sy-tabix.
      IF gt_marc-matnr <> gt_mara-matnr.
        EXIT.
      ENDIF.
      IF gt_mara-normt CS 'FET'.
        lv_fetflag = 'X'.
      ELSE.
        CLEAR lv_fetflag.
      ENDIF.
*select from ZMMTLMAP...
      SELECT * FROM zmmtlmap
        INTO TABLE lt_tlmap
       WHERE werks = gt_marc-werks
         AND spart = gt_mara-spart
         AND matkl = gt_mara-matkl
         AND wrkst = gt_mara-wrkst
         AND groes = gt_mara-groes
         AND fetflag = lv_fetflag
         AND prdha = gt_mara-prdha.
      IF NOT sy-subrc IS INITIAL.
*...sometimes seed size (GROES) can be blank
        SELECT * FROM zmmtlmap
          INTO TABLE lt_tlmap
         WHERE werks = gt_marc-werks
           AND spart = gt_mara-spart
           AND matkl = gt_mara-matkl
           AND wrkst = gt_mara-wrkst
           AND groes = space
           AND fetflag = lv_fetflag
           AND prdha = gt_mara-prdha.
      ENDIF.
      IF NOT sy-subrc IS INITIAL.
*...look for blank PRDHA
        SELECT * FROM zmmtlmap
          INTO TABLE lt_tlmap
         WHERE werks = gt_marc-werks
           AND spart = gt_mara-spart
           AND matkl = gt_mara-matkl
           AND wrkst = gt_mara-wrkst
           AND groes = gt_mara-groes
           AND fetflag = lv_fetflag
           AND prdha = space.
      ENDIF.
      IF NOT sy-subrc IS INITIAL.
*...look for blank PRDHA and GROES
        SELECT * FROM zmmtlmap
          INTO TABLE lt_tlmap
         WHERE werks = gt_marc-werks
           AND spart = gt_mara-spart
           AND matkl = gt_mara-matkl
           AND wrkst = gt_mara-wrkst
           AND groes = space
           AND fetflag = lv_fetflag
           AND prdha = space.
      ENDIF.
      CHECK sy-subrc IS INITIAL.
      LOOP AT lt_tlmap.
        CLEAR gt_tlmap.
        gt_tlmap-matnr = gt_mara-matnr.
        MOVE-CORRESPONDING lt_tlmap TO gt_tlmap.
        APPEND gt_tlmap.
      ENDLOOP.          "tlmap
    ENDLOOP.          "marc
  ENDLOOP.          "mara
ENDFORM.                    "get_tlmap
*&      Form  validate_tlmap_mapl
      text
FORM validate_tlmap_mapl .
  DATA: lv_plnnr.
  LOOP AT gt_tlmap.
    SELECT SINGLE plnnr
      FROM mapl
      INTO lv_plnnr
     WHERE matnr = gt_tlmap-matnr
       AND werks = gt_tlmap-werks
       AND plnty = gt_tlmap-plnty
       AND plnnr = gt_tlmap-plnnr
       AND plnal = gt_tlmap-plnal
       AND loekz = space.
    IF sy-subrc IS INITIAL.
      gt_tlmap-errflag = 'A'. "already assigned
      gt_tlmap-notes = 'Already assigned'.
      gt_tlmap-linecolor = 'C31'.
    ENDIF.
    MODIFY gt_tlmap.
  ENDLOOP.
ENDFORM.                    " validate_tlmap_mapl
*&      Form  build_fieldcat
      text
FORM build_fieldcat CHANGING lt_fieldcat TYPE slis_t_fieldcat_alv.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name         = sy-repid
      i_internal_tabname     = 'GT_TLMAP'
      i_inclname             = 'ZMMRUS160TOP'
    CHANGING
      ct_fieldcat            = lt_fieldcat
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
  IF sy-subrc NE 0.
    EXIT.
  ENDIF.
  DATA: ls_fieldcat TYPE slis_fieldcat_alv.
  LOOP AT lt_fieldcat INTO ls_fieldcat.
*column headings, output lengths, field positions etc
    CASE ls_fieldcat-fieldname.
      WHEN 'ERRFLAG'.
        ls_fieldcat-seltext_s = 'Error!'.
        ls_fieldcat-seltext_m = 'Error!'.
        ls_fieldcat-seltext_l = 'Error!'.
        ls_fieldcat-reptext_ddic = 'Error!'.
      WHEN 'NOTES'.
        ls_fieldcat-seltext_s = 'Notes'.
        ls_fieldcat-seltext_m = 'Notes'.
        ls_fieldcat-seltext_l = 'Notes'.
        ls_fieldcat-reptext_ddic = 'Notes'.
    ENDCASE.
    MODIFY lt_fieldcat FROM ls_fieldcat.
  ENDLOOP.
ENDFORM.                    "build_fieldcat
*&      Form  build_layout
      text
FORM build_layout USING ls_layout TYPE slis_layout_alv.
  ls_layout-info_fieldname     = 'LINECOLOR'.
LS_LAYOUT-BOX_FIELDNAME     = 'BOX'.
LS_LAYOUT-LIGHTS_FIELDNAME = 'LIGHTS'.
ls_layout-zebra = 'X'.
LS_LAYOUT-NO_VLINE          = 'X'.
ls_layout-no_unit_splitting = 'X'.
ls_layout-cell_merge        = space.
ls_layout-totals_only = 'X'.
  ls_layout-colwidth_optimize = 'X'.
ls_layout-no_sumchoice = 'X'.
ls_layout-no_subchoice = 'X'.
  ls_layout-box_fieldname = 'CHECKBOX'.
  ls_layout-box_tabname = 'GT_TLMAP'.
  ls_layout-no_totalline = 'X'.
ls_layout-coltab_fieldname = 'CELLCOLORS'.
ENDFORM.                    "BUILD_LAYOUT
*&      Form  build_sort
      text
FORM build_sort.
  DATA: is_sort TYPE slis_sortinfo_alv.
  REFRESH gt_sort.
  CLEAR is_sort.
  is_sort-spos = 1.
  is_sort-fieldname = 'MATNR'.
  is_sort-up = 'X'.
  APPEND is_sort TO gt_sort.
  CLEAR is_sort.
  is_sort-spos = 2.
  is_sort-fieldname = 'WERKS'.
  is_sort-up = 'X'.
  APPEND is_sort TO gt_sort.
  CLEAR is_sort.
  is_sort-spos = 3.
  is_sort-fieldname = 'LGORT'.
  is_sort-up = 'X'.
  APPEND is_sort TO gt_sort.
ENDFORM.                    " build_sort
*&      Form  build_sp_group
      text
FORM build_sp_group USING us_t_sp_group TYPE slis_t_sp_group_alv.
  DATA: ls_sp_group TYPE slis_sp_group_alv.
  CLEAR  ls_sp_group.
  ls_sp_group-sp_group = 'A'.
  ls_sp_group-text     = 'Key Fields'.
  APPEND ls_sp_group TO us_t_sp_group.
  CLEAR  ls_sp_group.
  ls_sp_group-sp_group = 'B'.
  ls_sp_group-text     = 'Forecast Quantities'.
  APPEND ls_sp_group TO us_t_sp_group.
  CLEAR  ls_sp_group.
  ls_sp_group-sp_group = 'C'.
  ls_sp_group-text     = 'Short Position'.
  APPEND ls_sp_group TO us_t_sp_group.
RN MOD
  CLEAR  ls_sp_group.
  ls_sp_group-sp_group = 'C'.
  ls_sp_group-text     = 'Ship Position'.
  APPEND ls_sp_group TO us_t_sp_group.
  CLEAR  ls_sp_group.
  ls_sp_group-sp_group = 'C'.
  ls_sp_group-text     = 'Shippable Qty'.
  APPEND ls_sp_group TO us_t_sp_group.
  CLEAR  ls_sp_group.
  ls_sp_group-sp_group = 'C'.
  ls_sp_group-text     = 'Rebag Qty'.
  APPEND ls_sp_group TO us_t_sp_group.
  CLEAR  ls_sp_group.
  ls_sp_group-sp_group = 'C'.
  ls_sp_group-text     = 'Retag Shippable'.
  APPEND ls_sp_group TO us_t_sp_group.
ENDFORM.                    "build_sp_group
*&      Form  pf_status_set
      text
     -->EXTAB      text
FORM pf_status_set USING extab TYPE slis_t_extab.
  SET PF-STATUS 'ALV_STATUS' EXCLUDING extab.
ENDFORM.                    "PF_STATUS_SET
*&      Form  build_events
      text
     -->US_T_EVENTStext
FORM build_events USING us_t_events TYPE slis_t_event.
  DATA: ls_event TYPE slis_alv_event.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type = 0
    IMPORTING
      et_events   = us_t_events.
  READ TABLE us_t_events WITH KEY name = slis_ev_top_of_page
                         INTO ls_event.
  IF sy-subrc = 0.
    MOVE gc_form_top_of_page TO ls_event-form.
    APPEND ls_event TO us_t_events.
  ENDIF.
  READ TABLE us_t_events WITH KEY name = slis_ev_user_command
                         INTO ls_event.
  IF sy-subrc = 0.
    MOVE gc_form_user_command TO ls_event-form.
    APPEND ls_event TO us_t_events.
  ENDIF.
ENDFORM.                    "build_EVENTs
*&      Form  build_comment
      text
FORM build_comment  USING us_t_top_of_page TYPE slis_t_listheader.
  DATA: ls_line TYPE slis_listheader.
  DATA: tmp_char(10).
  ls_line-typ  = 'H'.
  ls_line-info = text-h01.
  APPEND ls_line TO us_t_top_of_page.
  CLEAR ls_line.
  ls_line-typ  = 'S'.
  ls_line-key  = 'User/System:'.
  CONCATENATE sy-uname sy-sysid sy-mandt
         INTO ls_line-info SEPARATED BY space.
  APPEND ls_line TO us_t_top_of_page.
  ls_line-key  = 'Date/Time:'.
  WRITE sy-datlo TO ls_line-info.
  WRITE sy-timlo TO tmp_char.
  CONCATENATE ls_line-info tmp_char sy-zonlo
         INTO ls_line-info SEPARATED BY space.
  APPEND ls_line TO us_t_top_of_page.
ENDFORM.                    " build_COMMENT
*&      Form  top_of_page
      text
FORM top_of_page.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      i_logo             = 'ENJOYSAP_LOGO'
      it_list_commentary = gt_list_top_of_page.
ENDFORM.                    "TOP_OF_PAGE
*&      Form  write_report_alv
      text
-->  p1        text
<--  p2        text
FORM write_report_alv .
  g_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = g_repid
      i_callback_pf_status_set = 'PF_STATUS_SET'
      is_layout                = gs_layout
      it_fieldcat              = gt_fieldcat[]
      it_sort                  = gt_sort[]
      i_save                   = 'A'
      it_events                = gt_events[]
    TABLES
      t_outtab                 = gt_tlmap
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    "write_report_alv
*&      Form  user_command
      text
FORM user_command USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield.
  CASE sy-ucomm.
    WHEN 'PROCESS'.
      PERFORM process_materials.
      selfield-refresh = 'X'.
  ENDCASE.
ENDFORM.                    "USER_COMMAND
*&      Form  process_materials
      text
FORM process_materials .
  REFRESH gt_taskl.
  LOOP AT gt_tlmap WHERE checkbox = 'X'.
    CHECK gt_tlmap-errflag IS INITIAL.
    CLEAR gt_taskl.
    MOVE-CORRESPONDING gt_tlmap TO gt_taskl.
    APPEND gt_taskl.
  ENDLOOP.
  SORT gt_taskl BY werks plnty plnnr matnr.
PERFORM bdc_assign_to_tasklists.
  PERFORM bapi_assign_to_tasklists.
  LOOP AT gt_tlmap.
    READ TABLE gt_taskl WITH KEY werks = gt_tlmap-werks
                                plnty = gt_tlmap-plnty
                                plnnr = gt_tlmap-plnnr
                                matnr = gt_tlmap-matnr
                       BINARY SEARCH.
    CHECK sy-subrc IS INITIAL.
    CLEAR gt_tlmap-checkbox.
    READ TABLE gt_errtab WITH KEY plnty = gt_tlmap-plnty
                                  plnnr = gt_tlmap-plnnr
                         BINARY SEARCH.
    IF sy-subrc IS INITIAL.
      gt_tlmap-errflag = 'X'.
      gt_tlmap-notes = gt_errtab-notes.
    ELSE.
      gt_tlmap-errflag = 'P'.
      gt_tlmap-notes = 'Processed'.
    ENDIF.
    IF gt_tlmap-errflag = 'X'.
      gt_tlmap-linecolor = 'C61'.
    ELSEIF gt_tlmap-errflag = 'P'.
      gt_tlmap-linecolor = 'C51'.
    ENDIF.
    MODIFY gt_tlmap.
  ENDLOOP.
ENDFORM.                    " process_materials
*&      Form  bdc_assign_to_tasklists
      text
FORM bdc_assign_to_tasklists .
  LOOP AT gt_taskl.
    AT NEW plnty.
      IF gt_taskl-plnty = c_plnty_rout.
        gv_scr_init = '1010'.
        gv_scr_assn = '1010'.
        gv_tran = 'CA02'.
      ELSEIF gt_taskl-plnty = c_plnty_insp.
        gv_scr_init = '8010'.
        gv_scr_assn = '4010'.
        gv_tran = 'QP02'.
      ENDIF.
    ENDAT.
    AT NEW plnnr.
      REFRESH bdctab.
      PERFORM bdc_dynpro USING: 'X'  'SAPLCPDI'     gv_scr_init,
                                ' '  'RC27M-WERKS'  space,
                                ' '  'RC27M-MATNR'  space,
                                ' '  'RC271-PLNNR'  gt_taskl-plnnr,
                                ' '  'RC271-PLNAL'  space,
                                ' '  'BDC_OKCODE'   '=ALUE'.
      PERFORM bdc_dynpro USING: 'X'  'SAPLCPDI'     '1200',
                                ' '  'BDC_OKCODE'   '=MTUE'.
      PERFORM bdc_dynpro USING: 'X'  'SAPLCZDI'      gv_scr_assn,
                                ' '  'BDC_OKCODE'    'P++'.
    ENDAT.
    PERFORM bdc_dynpro USING: 'X'  'SAPLCZDI'      gv_scr_assn,
                              ' '  'BDC_OKCODE'    'P+'.
    SHIFT gt_taskl-matnr LEFT DELETING LEADING '0'.
    PERFORM bdc_dynpro USING: 'X'  'SAPLCZDI'      gv_scr_assn,
                              ' '  'BDC_OKCODE'    'P+',
                              ' '  'MAPL-PLNAL(2)' gt_taskl-plnal,
                              ' '  'MAPL-MATNR(2)' gt_taskl-matnr,
                              ' '  'MAPL-WERKS(2)' gt_taskl-werks.
    AT END OF plnnr.
      PERFORM bdc_dynpro USING: 'X'  'SAPLCZDI'      gv_scr_assn,
                                ' '  'BDC_OKCODE'    '/00'.
      PERFORM bdc_dynpro USING: 'X'  'SAPLCPDI'     '1200',
                                ' '  'BDC_OKCODE'   '=BU'.
      PERFORM call_tran USING gv_tran.
      IF NOT bdcrc IS INITIAL.
        PERFORM store_error.
      ENDIF.
    ENDAT.
  ENDLOOP.
  SORT gt_errtab BY plnty plnnr.
ENDFORM.                    "bdc_assign_to_tasklists
*&      Form  bdc_dynpro
      text
FORM bdc_dynpro USING dynbegin name value.
  CLEAR bdctab.
  IF dynbegin EQ charx.
    MOVE: name  TO bdctab-program,
          value TO bdctab-dynpro,
          charx TO bdctab-dynbegin.
  ELSE.
    MOVE: name  TO bdctab-fnam,
          value TO bdctab-fval.
  ENDIF.
  APPEND bdctab.
ENDFORM.                               " BDC_DYNPRO
*&      Form  call_tran
      text
FORM call_tran USING tcode.
  CLEAR bdcmsg. REFRESH bdcmsg.
  CALL TRANSACTION tcode
             USING bdctab
              MODE bdcmode
            UPDATE bdcupdt
          MESSAGES INTO bdcmsg.
  bdcrc = sy-subrc.
ENDFORM.                               " CALL_TRAN
*&      Form  bapi_assign_to_tasklists
FORM bapi_assign_to_tasklists .
  DATA: save_di LIKE save_di.
  DATA: BEGIN OF mapl_di OCCURS 0.
          INCLUDE STRUCTURE mapl_di.
  DATA: END OF mapl_di.
  DATA: error_di_exp LIKE error_di.
  DATA: plnnr_exp LIKE rc271-plnnr.
  DATA: BEGIN OF error_di_tab OCCURS 0.
          INCLUDE STRUCTURE error_di.
  DATA: END OF error_di_tab.
  DATA: BEGIN OF errtab OCCURS 0.
          INCLUDE STRUCTURE cmfmsg.
  DATA: END OF errtab.
  DATA: BEGIN OF rcuob1 OCCURS 0.
          INCLUDE STRUCTURE rcuob1.
  DATA: END OF rcuob1.
  DATA: BEGIN OF obj_nfield OCCURS 0.
          INCLUDE STRUCTURE obj_nfield.
  DATA: END OF obj_nfield.
  DATA: BEGIN OF rcuob1_ex OCCURS 0.
          INCLUDE STRUCTURE rcuob1_ex.
  DATA: END OF rcuob1_ex.
  DATA: BEGIN OF rcuob2 OCCURS 0.
          INCLUDE STRUCTURE rcuob2.
  DATA: END OF rcuob2.
relevant ones ---
  DATA: rc271_ex LIKE rc271_ex.
  DATA: BEGIN OF mapl_di_ex OCCURS 0.
          INCLUDE STRUCTURE mapl_di_ex.
  DATA: END OF mapl_di_ex.
relevant ones ---
  DATA: BEGIN OF plko_di_ex OCCURS 0.
          INCLUDE STRUCTURE plko_di_ex.
  DATA: END OF plko_di_ex.
  DATA: BEGIN OF plpo_di_ex OCCURS 0.
          INCLUDE STRUCTURE plpo_di_ex.
  DATA: END OF plpo_di_ex.
  DATA: BEGIN OF plfl_di_ex OCCURS 0.
          INCLUDE STRUCTURE plfl_di_ex.
  DATA: END OF plfl_di_ex.
  DATA: BEGIN OF plmz_di_ex OCCURS 0.
          INCLUDE STRUCTURE plmz_di_ex.
  DATA: END OF plmz_di_ex.
  DATA: BEGIN OF plfh_di_ex OCCURS 0.
          INCLUDE STRUCTURE plfh_di_ex.
  DATA: END OF plfh_di_ex.
  DATA: BEGIN OF txt_obj_ex OCCURS 0.
          INCLUDE STRUCTURE txt_obj_ex.
  DATA: END OF txt_obj_ex.
  DATA: BEGIN OF txt_di_tab OCCURS 0.
          INCLUDE STRUCTURE tline.
  DATA: END OF txt_di_tab.
  LOOP AT gt_taskl.
*XXX when does QP02 come in - test that scenario
    AT NEW plnty.
      IF gt_taskl-plnty = c_plnty_rout.
        gv_scr_init = '1010'.
        gv_scr_assn = '1010'.
        gv_tran = 'CA02'.
      ELSEIF gt_taskl-plnty = c_plnty_insp.
        gv_scr_init = '8010'.
        gv_scr_assn = '4010'.
        gv_tran = 'QP02'.
      ENDIF.
    ENDAT.
    rc271_ex-tcode = gv_tran.
    rc271_ex-werks = gt_taskl-werks.
    rc271_ex-plnnr = gt_taskl-plnnr.
    rc271_ex-plnal = gt_taskl-plnal.
    rc271_ex-sttag = sy-datum.
    WRITE sy-datum TO rc271_ex-sttag MM/DD/YYYY.
    save_di-syn_save = 'X'.
    mapl_di_ex-matnr = gt_taskl-matnr.
    mapl_di_ex-werks = gt_taskl-werks.
    mapl_di_ex-plnal = gt_taskl-plnal.
    mapl_di_ex-acttyp = 'H'.
    APPEND mapl_di_ex.
    CALL FUNCTION 'CP_BD_DIRECT_INPUT_PLAN_EXT'
      EXPORTING
        rc271_ex_imp                     = rc271_ex
      RC27M_EX_IMP                     = ''
        save_di_imp                      = save_di
      IMPORTING
        error_di_exp                     = error_di_exp
        plnnr_exp                        = plnnr_exp
      TABLES
        plko_di_ex_tab                   = plko_di_ex
        mapl_di_ex_tab                   = mapl_di_ex
        plpo_di_ex_tab                   = plpo_di_ex
        plfl_di_ex_tab                   = plfl_di_ex
        plmz_di_ex_tab                   = plmz_di_ex
        plfh_di_ex_tab                   = plfh_di_ex
        text_obj_di_ex_tab               = txt_obj_ex
        text_di_tab                      = txt_di_tab
        knowl_alloc_obj_di_ex_tab        = rcuob1_ex
        knowl_alloc_di_ex_tab            = rcuob2
        obj_null_field_tab               = obj_nfield
        error_plan_di_tab                = error_di_tab
        error_plan_tab                   = errtab.
    READ TABLE errtab INDEX 1.
    IF errtab-msgty = 'E'.
      gt_errtab-plnty = gt_taskl-plnty.
      gt_errtab-plnnr = gt_taskl-plnnr.
      DATA: msgtxt(250).
      SELECT SINGLE text FROM t100
        INTO msgtxt
       WHERE sprsl = 'E'
         AND arbgb = errtab-arbgb
         AND msgnr = errtab-msgnr.
      IF NOT sy-subrc IS INITIAL.
        gt_errtab-notes = errtab-msgv1.
      ELSE.
        REPLACE '&' WITH errtab-msgv1 INTO gt_errtab-notes.
        CONDENSE gt_errtab-notes.
        REPLACE '&' WITH errtab-msgv2 INTO gt_errtab-notes.
        CONDENSE gt_errtab-notes.
        REPLACE '&' WITH errtab-msgv3 INTO gt_errtab-notes.
        CONDENSE gt_errtab-notes.
        REPLACE '&' WITH errtab-msgv4 INTO gt_errtab-notes.
        CONDENSE gt_errtab-notes.
      ENDIF.
      APPEND gt_errtab.
    ENDIF.
  ENDLOOP.
  SORT gt_errtab BY plnty plnnr.
ENDFORM.                    " bapi_assign_to_tasklists
*&      Form  store_error
FORM store_error .
  CLEAR gt_errtab.
  gt_errtab-plnty = gt_taskl-plnty.
  gt_errtab-plnnr = gt_taskl-plnnr.
  READ TABLE bdcmsg WITH KEY msgtyp = 'E'.
  PERFORM get_message_text USING bdcmsg
                        CHANGING gt_errtab-notes.
  APPEND gt_errtab.
ENDFORM.                    " store_error
*&      Form  get_message_text
FORM get_message_text USING us_bdcmsg STRUCTURE bdcmsgcoll
                   CHANGING ch_msgtxt.
  DATA: msgtxt(250).
  SELECT SINGLE text FROM t100
    INTO msgtxt
   WHERE sprsl = us_bdcmsg-msgspra
     AND arbgb = us_bdcmsg-msgid
     AND msgnr = us_bdcmsg-msgnr.
  IF NOT sy-subrc IS INITIAL.
    msgtxt = us_bdcmsg-msgv1.
  ELSE.
    REPLACE '&' WITH us_bdcmsg-msgv1 INTO msgtxt.
    CONDENSE msgtxt.
    REPLACE '&' WITH us_bdcmsg-msgv2 INTO msgtxt.
    CONDENSE msgtxt.
    REPLACE '&' WITH us_bdcmsg-msgv3 INTO msgtxt.
    CONDENSE msgtxt.
    REPLACE '&' WITH us_bdcmsg-msgv4 INTO msgtxt.
    CONDENSE msgtxt.
  ENDIF.
  ch_msgtxt = msgtxt.
ENDFORM.                    "GET_MESSAGE_TEXT

Thanks for the reply..I guess I was topo vague is asking the previous question.
For the same program.The program is using direct input method to update the routing of the material i.e CA02. I want to know will it work for inspection as well i.e QP02.If it can work what modification will i have to make here in this funtion module.
If this does not work, is there any direct input method to do the inspection plan for materials.
The name of the function module is CP_BD_DIRECT_INPUT_PLAN_EXT.
Thanks in adnace
deepak

Similar Messages

  • Please help me understand this program's limit of use?

    If I have an adobe connect account, is a form on a formscentral url able to be edited in adobe connect? If the program designed to facilitate online conferences doesn't interface with a conferecne registration template program ran by the same company, market under the same brand as adobe, how can people on opposite sides of firewalls limited by software going to edit products; and use this? Administrators control new program downloads of all new programs, which means no forms central for my partner, even though adobe connect is available there, so how do we share adobe to adobe to make this service all most as cool as printkey?
    Seriously an adobe product fan (today is testing my confidence in adobe),
    Tiffani the girl with a form she can't use and a deadline that's too close to start over!

    Thanks for the reply..I guess I was topo vague is asking the previous question.
    For the same program.The program is using direct input method to update the routing of the material i.e CA02. I want to know will it work for inspection as well i.e QP02.If it can work what modification will i have to make here in this funtion module.
    If this does not work, is there any direct input method to do the inspection plan for materials.
    The name of the function module is CP_BD_DIRECT_INPUT_PLAN_EXT.
    Thanks in adnace
    deepak

  • CrashReporter - Could you please help to understand this crash report?

    Could you please help to understand this crash report below?
    If I'm not wrong it started after update the Mac OS X to version 10.5.6 - every startup.
    Note: First update by regular update then after by combo.
    Thanks in advance!
    _ CrashReporter
    Process: aslmanager [218]
    Path: /usr/sbin/aslmanager
    Identifier: aslmanager
    Version: ??? (???)
    Code Type: X86 (Native)
    Parent Process: launchd [1]
    Date/Time: 2009-04-05 08:29:52.069 -0300
    OS Version: Mac OS X 10.5.6 (9G55)
    Report Version: 6
    Exception Type: EXCBADACCESS (SIGSEGV)
    Exception Codes: KERNINVALIDADDRESS at 0x0000000000200000
    Crashed Thread: 0
    Thread 0 Crashed:
    0 libSystem.B.dylib 0x952a8a85 asl_get64 + 11
    1 libSystem.B.dylib 0x952aa034 aslfile_fetchpos + 939
    2 libSystem.B.dylib 0x952aa2f6 aslfilematch + 339
    3 aslmanager 0x00002409 0x1000 + 5129
    4 aslmanager 0x00002b3e 0x1000 + 6974
    5 aslmanager 0x0000211a 0x1000 + 4378
    Thread 0 crashed with X86 Thread State (32-bit):
    eax: 0x001ffffc ebx: 0x952a9ca1 ecx: 0x00000000 edx: 0x00000000
    edi: 0x0000ff3d esi: 0x00100b30 ebp: 0xbffffbc8 esp: 0xbffffba0
    ss: 0x0000001f efl: 0x00010286 eip: 0x952a8a85 cs: 0x00000017
    ds: 0x0000001f es: 0x0000001f fs: 0x00000000 gs: 0x00000037
    cr2: 0x00200000
    Binary Images:
    0x1000 - 0x2ffd +aslmanager ??? (???) <201b2dea48b8d80ac1432ff85244ed31> /usr/sbin/aslmanager
    0x8fe00000 - 0x8fe2db43 dyld 97.1 (???) <100d362e03410f181a34e04e94189ae5> /usr/lib/dyld
    0x9444a000 - 0x9444efff libmathCommon.A.dylib ??? (???) /usr/lib/system/libmathCommon.A.dylib
    0x951a4000 - 0x951abfe9 libgcc_s.1.dylib ??? (???) <f53c808e87d1184c0f9df63aef53ce0b> /usr/lib/libgcc_s.1.dylib
    0x951ba000 - 0x95321ff3 libSystem.B.dylib ??? (???) <d68880dfb1f8becdbdac6928db1510fb> /usr/lib/libSystem.B.dylib
    0xffff0000 - 0xffff1780 libSystem.B.dylib ??? (???) /usr/lib/libSystem.B.dylib
    _ Log
    05/04/09 8:25:58 com.apple.loginwindow[35] Shutdown NOW!
    05/04/09 8:25:58 com.apple.loginwindow[35] System shutdown time has arrived
    05/04/09 8:25:58 com.apple.SystemStarter[30] Stopping Missing Sync Listener
    05/04/09 8:25:58 com.apple.SystemStarter[30] Stopping HP Trap Monitor
    05/04/09 8:25:58 com.apple.SystemStarter[30] Stopping HP IO Monitor
    05/04/09 8:25:59 com.apple.SystemStarter[30] kextunload: unload kext /System/Library/Extensions/Pvsnet.kext succeeded
    05/04/09 8:25:59 com.apple.SystemStarter[30] kextunload: unload kext /System/Library/Extensions/ConnectUSB.kext succeeded
    05/04/09 8:26:02 com.apple.SystemStarter[30] kextunload: unload kext /System/Library/Extensions/vmmain.kext succeeded
    05/04/09 8:26:02 com.apple.SystemStarter[30] kextunload: unload kext /System/Library/Extensions/hypervisor.kext succeeded
    05/04/09 8:26:35 com.apple.launchctl.System[2] BootCacheControl: could not open /var/db/BootCache.playlist: No such file or directory
    05/04/09 8:26:35 com.apple.launchctl.System[2] BootCacheControl: could not unlink playlist /var/db/BootCache.playlist: Unknown error: -1
    05/04/09 8:26:37 com.apple.launchctl.System[2] launchctl: Please convert the following to launchd: /etc/mach_init.d/dashboardadvisoryd.plist
    05/04/09 8:26:37 com.apple.launchd[1] (com.apple.blued) Unknown key for boolean: EnableTransactions
    05/04/09 8:26:37 com.apple.launchd[1] (org.cups.cupsd) Unknown key: SHAuthorizationRight
    05/04/09 8:26:37 com.apple.launchd[1] (org.ntp.ntpd) Unknown key: SHAuthorizationRight
    05/04/09 8:26:49 org.ntp.ntpd[27] Error : nodename nor servname provided, or not known
    05/04/09 8:26:57 com.apple.SystemStarter[30] Starting up Missing Sync Listener
    05/04/09 8:26:57 com.apple.SystemStarter[30] Starting HP IO Monitor
    05/04/09 8:26:58 com.apple.SystemStarter[30] kextload: extension /System/Library/Extensions/hypervisor.kext is already loaded
    05/04/09 8:26:58 com.apple.SystemStarter[30] Starting HP Trap Monitor
    05/04/09 8:26:58 com.apple.SystemStarter[30] kextload: extension /System/Library/Extensions/vmmain.kext is already loaded
    05/04/09 8:26:59 com.apple.SystemStarter[30] kextload: extension /System/Library/Extensions/ConnectUSB.kext is already loaded
    05/04/09 8:27:00 com.apple.SystemStarter[30] kextload: extension /System/Library/Extensions/Pvsnet.kext is already loaded
    05/04/09 8:27:00 com.apple.SystemStarter[30] kextload: /Library/StartupItems/Parallels/Pvsvnic.kext loaded successfully
    05/04/09 8:27:06 com.apple.SystemStarter[30] Sun Apr 5 08:27:06 wslys-Mac.local Missing Sync Listener[77] <Warning>: 3891612: (CGSLookupServerRootPort) Untrusted apps are not allowed to connect to or launch Window Server before login.
    05/04/09 8:27:06 com.apple.SystemStarter[30] Sun Apr 5 08:27:06 wslys-Mac.local Missing Sync Listener[77] <Error>: kCGErrorRangeCheck : On-demand launch of the Window Server is allowed for root user only.
    05/04/09 8:27:06 com.apple.SystemStarter[30] Sun Apr 5 08:27:06 wslys-Mac.local Missing Sync Listener[77] <Error>: kCGErrorRangeCheck : Set a breakpoint at CGErrorBreakpoint() to catch errors as they are returned
    05/04/09 8:27:08 com.apple.SystemStarter[30] _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
    05/04/09 8:27:20 com.apple.launchd[1] (com.apple.UserEventAgent-LoginWindow[123]) Exited: Terminated
    05/04/09 8:27:20 com.apple.launchctl.Aqua[129] launchctl: Please convert the following to launchd: /etc/machinit_peruser.d/RemoteUI.plist
    05/04/09 8:27:20 com.apple.launchd[116] (com.apple.AirPortBaseStationAgent) Unknown key for boolean: EnableTransactions
    05/04/09 8:27:21 com.apple.FolderActions.enabled[130] launchctl: Error unloading: com.apple.FolderActions.folders
    05/04/09 8:27:42 quicklookd[146] [QL ERROR] 'Creating thumbnail' timed out for '<QLThumbnailRequest /Users/wsly/Downloads/m090374535329zdwg_650ref.mov>'
    05/04/09 8:27:42 Dock[138] [QL ERROR] quicklookd crashed while thumbnailing /Users/wsly/Downloads/m090374535329zdwg_hdref.mov
    05/04/09 8:29:52 com.apple.launchd[1] (com.apple.aslmanager[218]) Exited abnormally: Segmentation fault

    Try repairing the disk through the Mac OS X install disk.

  • Can someone please help me understand this

    I am a new poster here and was hoping someone might be able to help me...
    I am writing a program that is supposed to generate a non applet (IE text) version of a 4-way intersection....however i have run into a problem that i simply cannot see a solution....please tell me why this code does not do what it is supposed to:
    in i meant to call the car arrives method which is supposed to enqueue based on some randomly determined parameters, known as direction and bound....it is supposed to loop through and do that for every car created.. what i think is happnening is that everything is getting overwritten rather than enqueued...what i dont understand is why...the reason i believe that nothing is enqueuing is because later in the code i attempt to dequeue these queues and and set a paramter and i get a null pointer exception
    PLEASE NOTE I RECIEVED THESE ERRORS BEFORE INSTANTIATING THE VEHICLE CURRENT CAR AS NULL...perhaps it is an instantiation problem but i cannot tell...please help me out as I have worked on this forthe last few days and am desparate for an answer
    Vehicle CurrentCar = null;
         do
              //this ensures that the number of vehicles generated is within the spec guidelines
              if (j == 1)//might need to be changed
                   numCars = generator.nextInt(7) + 4;
              else if ((j%2) == 0)
                   numCars = generator.nextInt(6) + 10;
              else if ((j>1)&&( (j%2) !=0))
                   numCars = generator.nextInt(4) + 10;
              totalCars += numCars;
              System.out.println("j is " + j);
              System.out.println( numCars);
              System.out.println(totalCars);
              //this ensures the number of vehicles never goes over 100
                   if (totalCars>100)
                        int subCars = (totalCars - 100); //ensures that car total never goes above 100
                        numCars = numCars - subCars;
                   //calls the MakeMeaCar method which contains the vehicle constructor
                   for (int k=1;k <= numCars; k++)
                   CurrentCar = MakeMeACar(count);
                   count ++;
                   Street.CarArrives(CurrentCar);
                   CurrentCar.toString();
    HERE IS THE CAR ARRIVES METHOD
    public static void CarArrives (Vehicle CurrentCar)
    //These if-else statements evaluate the enum parameters from the vehicle class and assigns them to a queue based on those parameters
    if (CurrentCar.getDirection() == Directenum.s)
         if ((CurrentCar.getBound() == Boundenum.nB) || (CurrentCar.getBound() == Boundenum.wB))
              lfstrChurchNorthbound.enqueue(CurrentCar);
         else if (CurrentCar.getBound() == Boundenum.eB)
              rChurchNorthbound.enqueue(CurrentCar);
    else if (CurrentCar.getDirection() == Directenum.n)
         if ((CurrentCar.getBound() == Boundenum.sB) || (CurrentCar.getBound() == Boundenum.eB))
              lfstrChurchSouthbound.enqueue(CurrentCar);
         else if (CurrentCar.getBound() == Boundenum.wB)
              rChurchSouthbound.enqueue(CurrentCar);
    else if (CurrentCar.getDirection() == Directenum.e)
         if ((CurrentCar.getBound() == Boundenum.wB) || (CurrentCar.getBound() == Boundenum.sB))
              lfstrMainEastbound.enqueue(CurrentCar);
         else if (CurrentCar.getBound() == Boundenum.nB)
              rMainEastbound.enqueue(CurrentCar);
    else if (CurrentCar.getDirection() == Directenum.w)
         if ((CurrentCar.getBound() == Boundenum.eB) || (CurrentCar.getBound() == Boundenum.nB))
              lfstrMainWestbound.enqueue(CurrentCar);
         else if (CurrentCar.getBound() == Boundenum.sB)
              rMainWestbound.enqueue(CurrentCar);
    if you need more code to help please let me know...i would post it all but it about 8 pages or more total (inlcuding the various classes)
    thanks
    I appreciate all help given

    ok running it through a debugger DID NOT HELP at all, please somebody help me, im very desparate now. i have spent 15 hours on this problem alone. i see absolutley nothing wrong with my code and have tried about 10 doifferent ways of trying this.,....i cannot get it to work, somebody please help me, ...in addition i was hoping someone could clear up an issue i have with enums...i do not understand how i can access the variable of the enum, the only access to it my text book provides is how to acess the string associated with enums....but i need to access the variable itself...how would i design such a get method....ive tried that a bunch of different ways as well, and right now im so lost that i want to cry, somebody please help, im begging on my knees...i really need someone to explain this to me....

  • Can someone please help me understand this? About Apple Repairs

    Hello everyone,
    I bought my macbook in Nov. 2009 in USA. I just moved to India and I've noticed the rubber base coming off and the infamous apple hairline crack. When I first took it to the India center, they kept insisting I had to pay for repair, I have a 1 year limited warranty.
    Upon my insisting that they check with Apple USA first, they decided to call them and then asked me to send them pictures. I've sent the pictures, my repairs have been approved.
    Now they tell me that I need to bring in the laptop and they need to run some software test for the crack, then they will submit this test and get the screen in about 4-5 days and then return the mac to me.
    I need to understand this from people that have gone through this sort of repair. Why do they need to do a software test for a hardware issue?
    Even if they have to do this software test, why can't they wait till the screen arrives (as this is the only way they claim to fix the crack) and then do the test all at once in one single day, rather than making me run back and forth with my macbook?
    I also requested for them to forward Apple's response to me, they refused and said its internal.
    I would really appreciate it if someone can please explain this to me, as the logic is just not making sense in my head. Maybe this is the way they do repairs and I'm not aware of them.. don't know..
    Thanks everyone!!

    ok running it through a debugger DID NOT HELP at all, please somebody help me, im very desparate now. i have spent 15 hours on this problem alone. i see absolutley nothing wrong with my code and have tried about 10 doifferent ways of trying this.,....i cannot get it to work, somebody please help me, ...in addition i was hoping someone could clear up an issue i have with enums...i do not understand how i can access the variable of the enum, the only access to it my text book provides is how to acess the string associated with enums....but i need to access the variable itself...how would i design such a get method....ive tried that a bunch of different ways as well, and right now im so lost that i want to cry, somebody please help, im begging on my knees...i really need someone to explain this to me....

  • Please help me finish this program

    Hi I am currently trying to finish this project with labview...though I have run into some problems.  First off here is the explaination of the project.
    And lastly, the project, a bicycle dash-o-meter, which will return us to using LabVIEW to produce a program which will take the rotations of a wheel (27" diameter, with a sensor mounted at 6" from the center), and calculate distance, speed, time, ...).  We'll use a simulated input of course, but we could interface it to a real bicycle wheel or any wheel or shaft for that matter.
    My problem is that we have only been using labview for 2 weeks and it is now due tomorrow.  I have a program all drawn up but its not controlled by a blinking led...how to I get a simulated signal to run this.  Also how do I get the distance to increase without just changing...for example if I went at 100 km/h for 16 minutes thats roughly 16 km how to I get it to keep that 16 km and then slow down the speed to 50 km/h and get the 16km and hour to increase at the new rate?
    I hope some of that made sense.  Any help is appriciated. 
    Here is what I have...P.S. Labview 7.0 is what we have here at the school.
    Attachments:
    Bike Project.vi ‏44 KB

    Dan's suggestion is really good.
    For your LED to blink, determine logically when you want that to occur.
    One way is to change the state of an LED at each revolution, kind of like a switch. At the start, the LED is OFF. When the distance traveled is greater than the circumference, the LED comes ON, and your distance counter is reset to zero. When the distance traveled is again greater than the circum., change the LED again.
    Another way is that when the wheel rotates one revolution, turn the LED ON for a set time, like 0.5 seconds. However, at speeds greater than 120RPM, the LED will always be ON.
    What you are really doing is counting pulses from the sensor, and the time between them.
    If I might make a couple of suggestions for your code, don't hide the STOP button. Also, try to always keep your wiring to flow in a Left-to-Right direction. That will certainly help with understanding what everything does, and will make troubleshooting a great deal easier.
    B-)

  • PLEASE HELP ME. THIS PROGRAM IS KILLING ME.

    Hi. I am getting so sick of this program. I have been trying to do it for the past couple of weeks and I am getting nowhere. I really wish someone can help me on it ... like totaly help me on it. I am getting so frustrated. I would appreciate all the help.
    This is the program:
    In Belageusia, a plorg has these properties:
    Data:
         A plorg has a name
         A plorg has a contentment index (CI), which is an integer between 0 and 100
    The population of plorgs in Belagersia is further subdivided into three mutually exclusive classes: Plebeians, Equidians, and Elitians.
    A Plorg?s stature is completely determined by their contentment index and witht that designation comes certain burdens and/or advantages.
    Plebeians have a contentment index in [0, 24].
    Each new Plebeian is welcomed with a contentment index of 2 and burdened with a debt of $10.00
    Plebeians never manage to break even, so they have no taxes imposed upon them. Furthermore, since they can never get out debt, they cannot accumulate any wealth.
    Equidians have a contentment index in [25, 75]
    Each new Equidian is welcomed with a contentment index of 50 and burdened with taxes of $20.00
    Equidians have taxes imposed upon them. Furthermore, since they do manage to break even, they have no debt. However, since they only manager to break even, they do not accumulate any wealth.
    Elitians have a contentment index in [76, 100]
    Each new Elitian is welcomed with a contentment index of 87 and burdened with taxes of $20.00, but also provided with a ?silver spoon? of $30.00 in accumulated wealth.
    Elitians manage to expand upon their wealth, sot hey have taxes imposed upon them. Furthermore, since they are accumulating wealth, they have no debt.
    At each interim time epoch the population of Belageusia retracts with a death rate randomly selected between 0% and 10%. If a plorg survives the purge, they have an opportunity to move one class higher and/or one class lower. However, remember that a plorg?s name is final. It never changes.
    For Plebeians this is transition is determined by randomly selecting a CI in [0, 49]. If this new CI is les than 25 then the plorg remains a Plebeian, with this newly assigned CI, and their debt increases 3.7%. If this new CI is in [25, 49], the Plebeian ascends to a Equidian, with this newly assigned CI, their debt is forgiven, but taxes of $20 are assessed.
    For Equidians this is determined by randomly selecting a CI in [0,100].
    If this new CI is in [25, 75] then the plorg remains a Equidian, with this newly assigned CI, but their taxes are increased 6.1%.
    If this new CI is in [0, 24] then the plorg becomes a Plebeian, with this newly assigned CI, their taxes are forgiven, but they are burdened with a debt of $10.00.
    If this new CI is in [76, 100] then the plorg becomes a Plebeian, with this newly assigned CI, but their taxes are increased 6.1%. However, they are bewtowed a wealth of $30.00.
    For Eletians this is determined by randomly selecting a CI in [51, 100]. If this new CI is greater than 76 then the plorg remains an Eletian, with this newly assigned CI, their taxes increase 6.1% and their wealth increases 4.9%. If this new CI is in [51, 75], then this plorg becomes an Equidian, with this newly assigned CI, their wealth is eliminated, and their taxes are increased 6.1%.
    At each time epoch, the population of Belageusia at a birth rate randomly selected between 0% and 10%. A randomly chosen number between 0-100 determines each newly born plorg?s stature. If this random number is in the range 0-24, create a new Plebeian. In the range 25-75, create a new Equidian, and if in the range 76-100, create a new Elitian.
    We are supposed to output the population characteristics of Belageusia, after 1000 time epochs.
    This is the code that I wrote down but got no where with:
    import javax.swing.*;
    import java.util.*;
    import java.text.*;
    public class Belageusiaplorg
         public static void main (String[] args)
              ArrayList Plebs = new ArrayList(350);
              ArrayList Equids = new ArrayList(600);
              ArrayList Elits = new ArrayList(350);
              ArrayList Holding = new ArrayList(600);
              for (int i=0; i<25; i++)
                   Plebs.add(new plebian());
              for (int i=0; i<50; i++)
                   Equids.add(new equidian());
              for (int i=0; i<25; i++)
                   Elits.add(new Elitian());
              long population = Plebs.size() + Equids..size() + Elits.size();
              System.out.println("Current Belageusia Population is "+population);
              System.out.println("Current Plebeians Population is "+Plebs.size);
              System.out.println("Current Equidians Population is "+Equids.size);
              System.out.println("Current Elitians Population is "+Elits.size);
              Random generator = new Random();
              int x = generator.nextInt(11);
              for (int j=0; j=plebs.size(); j++)
                   System.out.println(Plebs.g(j));
              long Equids_size = Equids.size();
              long Elits_size = Elits.size();
              for(int j=1; j<Plebs.size(); j++)
                   Plebian e = (Plebian) Plebs.get(j);
                   int new_ci = generator.nextInt(50);
                   if (new_ci < 25)
                        e.setCI(new_ci);
                        e.raiseDebt();
                   else
                        Plebs.rename(j);
                        Equids.add(new Equidian(e.getName().newCI));
                        j++;
              for(int j=0; j < Equids.size; j++)
                   Equidian e = (Equidian) Equids.get(j);
                   int newCI = generator.nextInt(101);
                   if(new_ci < 25)
                        Equids.remove(j);
                        Plebs.add(nwe Plebian(e.getName().new_ci));
                        Equids_size --;
                        j++;
                   else
                   if (new_ci > 75)
                        Equids.remove(j);
                        Elitian f = new Elitian(e.getName(),new_ci,e.getTaxes());
                        Elits.add(f);
                        Equids_size --;
                        j--;
                   else
                        e.setCI(new_CI);
                        e.raiseTaxes();
              for (int j=0; j<Elits.size; j++)
                   Elitian e = (Elitian) Elits.get(j);
                   int ci = e.getCI();
                   int r = generator.nextINT(50);
                   int new_ci = 51+r;
                   if(new_ci > 75)
                        e.setCI(new_ci);
                        e.raisetaxes();
                        e.raisewealth();
                   else
                        Elitians.remove(j);
                        Equidian g = new Equidian(e.getName(), new_ci);
                        g.raisetaxes();
                        Equids.add(g);
                        Elits_size --;
                        j--;
              if(deathrate != 0)
                   int multiple = 100/deathrate;
                   int count 1;
                   for (int j=0; j=Plebs.size(); j++)
                        if(count % multiple == 0)
                             Plebs.remove(j);
                             j--;
                        count++;
    class Plorg
         private final String name;
         private int CI;
         private static long nextID = 1;
         public Plorg()
              name = "Plorg" + nextID;
              nextID++;
         public Plorg(int CI)
              name = "Plorg" + nextID;
              nextID++;
              this.CI = CI;
         public Plorg (String name, int CI)
              this.name = name;
              this.CI = CI;
         public void setCI(int new_CI)
              CI = new_CI;
         public String getName()
              return name;
         public int getCI()
              return CI;
         public Plorg Plebs()
         public Plorg Equids()
         public Plorg Elits()

    Sounds a lot like a homework question to me. Still it was interesting enough to try out. I have not tried to change your code, just made one of my own. Here is my solution. I have made the Plorg class an inner class of the Belageusia. This is just so I dont have to put up two java files. You could easily split it into two though.
    import java.util.Random;
    import java.util.ArrayList;
    import java.util.Iterator;
    * @author Jonathan Knight
    public class Belageusia
        /** Random number generator - Seeded with the current time. */
        private static Random random = new Random(System.currentTimeMillis());
        /** A list of all of the Plorgs */
        private ArrayList population = new ArrayList();
        /** A list of all of the Plebians. */
        private ArrayList plebians = new ArrayList();
        /** A list of all of the Equidians. */
        private ArrayList equidians = new ArrayList();
        /** A list of all of the Elitians. */
        private ArrayList elitians = new ArrayList();
        /** A count of the Epochs that have passed */
        private int epochs = 0;
         * Main method.
         * Create a new world of Belageusia and run it for 1000 epochs.
        public static void main(String[] args)
            Belageusia world;
            world = new Belageusia();
            for (int i = 0; i < 1000; i++)
                world.epoch();
            System.out.println("The Belageusia population after 1000 epochs");
            world.printPopulation();
         * Create a new World of Belageusia and create some Plorgs to live there.
         * The world will be created with 25 Plebians, 50 Equidians and 25 Elitians.
        public Belageusia()
            for (int i = 0; i < 25; i++)
                plebians.add(Plorg.createPlebian());
            for (int i = 0; i < 50; i++)
                equidians.add(Plorg.createEquidian());
            for (int i = 0; i < 25; i++)
                elitians.add(Plorg.createElitian());
         * Print the current population to System.out
        public void printPopulation()
            int total;
            int plebianCount;
            int equidianCount;
            int elitianCount;
            plebianCount = plebians.size();
            equidianCount = equidians.size();
            elitianCount = elitians.size();
            total = plebianCount + equidianCount + elitianCount;
            System.out.println("Current Belageusia population is " + total);
            System.out.println("Current Plebian population is " + plebianCount);
            System.out.println("Current Equidian population is " + equidianCount);
            System.out.println("Current Elitian population is " + elitianCount);
         * At each interim time epoch the population of Belageusia retracts with a death rate
         * randomly selected between 0% and 10%. If a plorg survives the purge, they have an
         * opportunity to move one class higher and/or one class lower. However, remember that
         * a plorgs name is final. It never changes.
         * For Plebeians this transition is determined by randomly selecting a CI in [0, 49].
         * If this new CI is les than 25 then the plorg remains a Plebeian, with this newly assigned CI,
         * and their debt increases 3.7%. If this new CI is in [25, 49], the Plebeian ascends to a
         * Equidian, with this newly assigned CI, their debt is forgiven, but taxes of $20 are assessed.
         * For Equidians this is determined by randomly selecting a CI in [0,100].
         * If this new CI is in [25, 75] then the plorg remains a Equidian, with this newly assigned CI,
         * but their taxes are increased 6.1%.
         * If this new CI is in [0, 24] then the plorg becomes a Plebeian, with this newly assigned CI,
         * their taxes are forgiven, but they are burdened with a debt of $10.00.
         * If this new CI is in [76, 100] then the plorg becomes a Plebeian, with this newly assigned CI,
         * but their taxes are increased 6.1%. However, they are bewtowed a wealth of $30.00.
         * For Eletians this is determined by randomly selecting a CI in [51, 100].
         * If this new CI is greater than 76 then the plorg remains an Eletian, with this newly assigned CI,
         * their taxes increase 6.1% and their wealth increases 4.9%. If this new CI is in [51, 75],
         * then this plorg becomes an Equidian, with this newly assigned CI, their wealth is eliminated,
         * and their taxes are increased 6.1%.
         * At each time epoch, the population of Belageusia at a birth rate randomly selected between 0% and 10%.
         * A randomly chosen number between 0-100 determines each newly born plorg?s stature.
         * If this random number is in the range 0-24, create a new Plebeian. In the range 25-75, create a new Equidian,
         * and if in the range 76-100, create a new Elitian.
        public void epoch()
            ArrayList newPlebians = new ArrayList();
            ArrayList newEquidians = new ArrayList();
            ArrayList newEletians = new ArrayList();
            Iterator it;
            Plorg plorg;
            int deathRate;
            double deathCount;
            int birthRate;
            double birthCount;
            int population;
            int subClass;
            int newCI;
            int kill;
            epochs++;
            System.out.println("Epoch = " + epochs);
            printPopulation();
            population = plebians.size() + equidians.size() + elitians.size();
            // The death rate is random 0 to 10%
            deathRate = random.nextInt(11);
            // work out the death count. population is cast to a double to avoid rounding errors
            deathCount = (double)population * deathRate / 100;
            // round up the result. We do this as once the population falls below 10
            // we would never kill anything
            deathCount = Math.ceil(deathCount);
            // We now work out the birth rate based on the population before we kill
            // anything otherwise the population tends to go down and down
            // The birth rate is random 0 to 10%
            birthRate = random.nextInt(11);
            // work out the birth count. population is cast to a double to avoid rounding errors
            birthCount = Math.ceil((double)population * birthRate / 100);
            // As with the deathCount round up the result.
            // We do this as once the population falls too low we would never create any more
            birthCount = Math.ceil(birthCount);
            System.out.println("About to kill " + deathRate + "% which is " + deathCount + " Plorgs out of " + population);
            for(int i=0; i<deathCount; i++)
                // get a random number between 0 and 2
                kill = random.nextInt(population);
                population--;
                // kill the specified Plorg
                if( kill < plebians.size() )
                    // kill a random Plebian
                    plebians.remove( random.nextInt(plebians.size()) );
                else if( kill < plebians.size() + equidians.size() )
                    // kill a random Equidian
                    equidians.remove( random.nextInt(equidians.size()) );
                else
                    // kill a random Elitian
                    elitians.remove( random.nextInt(elitians.size()) );
            System.out.println("Transitioning Plebians");
            // Transition period for Plebians
            it = plebians.iterator();
            while ( it.hasNext() )
                plorg = (Plorg) it.next();
                // select a new CI from 0 to 49 at random
                newCI = random.nextInt(50);
                plorg.setCI(newCI);
                if( newCI < 25 )
                    // Oh dear, this one stays as a Plebian; increase its dept by 3.7%
                    plorg.setDept( plorg.getDept() * 1.037 );
                else
                    // Congratulations this one is now an Equidian
                    newEquidians.add(plorg);
                    // remove from the Plebian list.
                    // NOTE we must do the remove via the Iterator
                    it.remove();
                    plorg.setDept(0);
                    plorg.setTaxes(20);
            System.out.println("Transitioning Equidians");
            // Transition period for Equidians
            it = equidians.iterator();
            while ( it.hasNext() )
                plorg = (Plorg) it.next();
                // select a new CI from 0 to 100 at random
                newCI = random.nextInt(101);
                plorg.setCI(newCI);
                if( newCI < 25 )
                    // Oh dear, this one becomes a Plebian
                    newPlebians.add(plorg);
                    // remove from the Equidian list.
                    // NOTE we must do the remove via the Iterator
                    it.remove();
                    plorg.setDept( 10 );
                    plorg.setTaxes(0);
                else if( newCI < 25 )
                    // This one stays as an Equidian; increase its taxes by 6.1%
                    plorg.setTaxes( plorg.getTaxes() * 1.061 );
                else
                    // Congratulations this one is now an Eletian
                    newEletians.add(plorg);
                    // remove from the Equidian list.
                    // NOTE we must do the remove via the Iterator
                    it.remove();
                    plorg.setWealth(30);
                    // Increase its taxes by 6.1%
                    plorg.setTaxes( plorg.getTaxes() * 1.061 );
            System.out.println("Transitioning Elitians");
            // Transition period for Eletians
            it = plebians.iterator();
            while ( it.hasNext() )
                plorg = (Plorg) it.next();
                // Always increase taxes by 6.1%
                plorg.setTaxes( plorg.getTaxes() * 1.061 );
                // select a new CI from 51 to 100 at random
                newCI = 51 + random.nextInt(50);
                plorg.setCI(newCI);
                if( newCI > 76 )
                    // This one stays as an Eletian; increase its wealth by 4.9%
                    plorg.setWealth( plorg.getWealth() * 1.049 );
                else
                    // Oh dear, this one becomes an Equidian
                    newEquidians.add(plorg);
                    // remove from the Plebian list.
                    // NOTE we must do the remove via the Iterator
                    it.remove();
                    // emove its wealth
                    plorg.setWealth(0);
            // now assign the Plorgs that are transitioning
            plebians.addAll(newPlebians);
            equidians.addAll(newEquidians);
            elitians.addAll(newEletians);
            System.out.println("Creating " + birthRate + "% new Plorgs from " + population + " which is " + birthCount);
            //create the new Plorgs
            for (int i = 0; i < birthCount; i++)
                // get a random number between 0 and 100
                subClass = random.nextInt(101);
                // create the specified Plorg
                if( subClass <= 24 )
                    plorg = Plorg.createPlebian();
                    plebians.add(plorg);
                else if( subClass >= 25 && subClass <= 75 )
                    plorg = Plorg.createEquidian();
                    equidians.add(plorg);
                else
                    plorg = Plorg.createElitian();
                    elitians.add(plorg);
        public static class Plorg
            /** Identifier used to generate unique names */
            private static int id = 0;
            /** The Plorgs name */
            private final String name;
            /** The level of wealth for this Plorg */
            private double wealth = 0;
            /** The level of dept for this Plorg */
            private double dept = 0;
            /** The level of taxes for this Plorg */
            private double taxes = 0;
            /** This Plorgs contentment index */
            private int ci = 0;
            /** Create a new Plorg with the given CI.
             * This is a private constructor. The only way for a program to
             * create new Plorgs is by calling either createPlebian(),
             * createEquidian() or createElitian().
             * @param ci
            private Plorg(int ci)
                // Generate a unique name and iincrement the ID
                this.name = "Plorg" + id++;
                // assign the CI
                this.ci = ci;
             * Create a new Plebian.
             * Plebeians have a contentment index in [0, 24].
             * Each new Plebeian is welcomed with a contentment index of 2 and burdened
             * with a debt of $10.00. Plebeians never manage to break even, so they have
             * no taxes imposed upon them. Furthermore, since they can never get out debt,
             * they cannot accumulate any wealth.
             * @return a new Plebian.
            public static Plorg createPlebian()
                Plorg plebian;
                plebian = new Plorg(2);
                plebian.setDept(10);
                return plebian;
             * Create a new Equidian
             * Equidians have a contentment index in [25, 75].
             * Each new Equidian is welcomed with a contentment index of 50 and burdened
             * with taxes of $20.00. Equidians have taxes imposed upon them. Furthermore,
             * since they do manage to break even, they have no debt. However, since they
             * only manager to break even, they do not accumulate any wealth.
             * @return a new Equidian.
            public static Plorg createEquidian()
                Plorg equidian;
                equidian = new Plorg(50);
                equidian.setTaxes(20);
                return equidian;
             * Create a new Elitian.
             * Elitians have a contentment index in [76, 100].
             * Each new Elitian is welcomed with a contentment index of 87 and burdened
             * with taxes of $20.00, but also provided with a ?silver spoon? of $30.00 in
             * accumulated wealth. Elitians manage to expand upon their wealth, so they
             * have taxes imposed upon them. Furthermore, since they are accumulating
             * wealth, they have no debt.
             * @return a new Elitian.
            public static Plorg createElitian()
                Plorg equidian;
                equidian = new Plorg(87);
                equidian.setWealth(30);
                equidian.setTaxes(20);
                return equidian;
             * Returns this Plorgs name.
            public String getName()
                return name;
             * Returns the CI of this Plorg.
            public int getCI()
                return ci;
             * Set the new Contentment index for this Plorg
             * @param ci
            public void setCI(int ci)
                this.ci = ci;
             * Returns the Dept of this Plorg
             * @return
            public double getDept()
                return dept;
             * Set the dept of this Plorg.
             * @param dept - the new dept for the Plorg.
            public void setDept(double dept)
                this.dept = dept;
             * Returns the wealth of this Plorg.
            public double getWealth()
                return wealth;
             * Sets the wealth of this Plorg.
             * @param wealth - the new wealth of this Plorg.
            public void setWealth(double wealth)
                this.wealth = wealth;
             * Returns the taxes of this Plorg.
            public double getTaxes()
                return taxes;
             * Set the taxes of this Plorg.
             * @param taxes - the new taxes for this Plorg.
            public void setTaxes(double taxes)
                this.taxes = taxes;
             * Check for equality. If the object specified is a Plorg with the same name as this
             * Plorg they are deemed to be equal.
             * @param o - The object to check
            public boolean equals(Object o)
                if ( this == o ) return true;
                if ( !(o instanceof Plorg) ) return false;
                final Plorg plorg = (Plorg) o;
                if ( name != null ? !name.equals(plorg.name) : plorg.name != null ) return false;
                return true;
             * Create a Hash Code for this Plorg
            public int hashCode()
                return (name != null ? name.hashCode() : 0);
    }

  • Please help me understand this memory problem

    Good day to all.
    I have an application that reads email messages. The Message object holds a StringBuffer. If I run my app for a long time, 10,000 email messages, I get an out of memory error. I am using -Xrunhprof to try to track down the problem. I can see that if I process 50 messages, there are 45 still live at the end of the program. At least that is what I think is happening. Based on the output below is this assumption correct?
              percent         live       alloc'ed  stack class
    rank   self  accum    bytes objs   bytes objs trace name
        1 40.94% 40.94%   873760   37 1267904   50   789 [C
    // Trace info
    TRACE 789:
         java.lang.StringBuffer.<init>(<Unknown>:Unknown line)
         com.PCM.SnifferMessageTools.MessageObject.<init>(MessageObject.java:46)
         com.PCM.SnifferMessageTools.MessageSnifferAutoRuleProcessor.main(MessageSnifferAutoRuleProcessor.java:118)If this assumption is correct I have some other questions. I'll wait to ask.

    Post the source code where its happening and please use code tags (see Formatting help)
    I can probably help. I have a theory or 2.

  • Please help me debug this program unit!!!!!

    dear sir,
    i tried diligently to find and to debug this tiny program unit,although my observation to the coding rules of the packages ,compilation error still occur.
    therefore,kindly i'm asking you sir to learn me how to correct it.
    thank you.
    create or replace package test_pack is
    type emp_table_type is table of emp.sal%type
    index by binary_integer;
    emp_list emp_table_type;
    function test_sal
    (v_sal in emp.sal%type)
    return emp_table_type;
    end test_pack;
    create or replace package body test_pack is
    temp emp.sal%type;
    cursor emp_cursor is
    select sal from emp;
    i number :=1;
    j number :=1;
    function test_sal
    (v_sal in emp.sal%type)
    return emp_table_type
    is
    open emp_cursor;
    loop
    fetch emp_cursor into temp;
    if temp < v_sal then
    emp_list(i):=temp;
    bms_output.put_line('rowcount i='||emp_cursor%rowcount);
    dbms_output.put_line('iterator i='||i);
    i:=i+1;
    else
    dbms_output.put_line('rowcount j='||emp_cursor%rowcount);
    dbms_output.put_line('iterator j='||j);
    j:=j+1;
    end if;
    if emp_cursor%notfound then
    dbms_output.put_line('cursor closed...');
    close emp_cursor;
    return emp_list;
    exit;
    end if;
    end loop;
    end test_pack;

    You can use "show err" to show the errors after compilation errors occur:
    SQL> create or replace package test_pack is
      2    type emp_table_type is table of emp.sal%type index by binary_integer;
      3    emp_list emp_table_type;
      4    function test_sal(v_sal in emp.sal%type) return emp_table_type;
      5  end test_pack;
      6  /
    Package is aangemaakt.
    SQL> create or replace package body test_pack is
      2    temp emp.sal%type;
      3    cursor emp_cursor is
      4    select sal from emp;
      5    i number :=1;
      6    j number :=1;
      7
      8    function test_sal
      9    (v_sal in emp.sal%type)
    10    return emp_table_type
    11    is
    12      open emp_cursor;
    13      loop
    14        fetch emp_cursor into temp;
    15        if temp < v_sal then
    16          emp_list(i):=temp;
    17          bms_output.put_line('rowcount i='||emp_cursor%rowcount);
    18          dbms_output.put_line('iterator i='||i);
    19          i:=i+1;
    20        else
    21          dbms_output.put_line('rowcount j='||emp_cursor%rowcount);
    22          dbms_output.put_line('iterator j='||j);
    23          j:=j+1;
    24        end if;
    25        if emp_cursor%notfound then
    26          dbms_output.put_line('cursor closed...');
    27          close emp_cursor;
    28          return emp_list;
    29          exit;
    30        end if;
    31      end loop;
    32  end test_pack;
    33  /
    Waarschuwing: package-body is aangemaakt met compilatiefouten.
    SQL> show err
    Fouten voor PACKAGE BODY TEST_PACK:
    LINE/COL ERROR
    14/7     PLS-00103: Symbool "FETCH" aangetroffen terwijl een van de
             volgende werd verwacht:
             constant exception <een ID>
             <een scheidingsteken-ID tussen dubbele aanhalingstekens>
             table LONG_ double ref char time timestamp interval date
             binary national character nchar
    32/5     PLS-00103: Symbool "TEST_PACK" aangetroffen terwijl een van de
             volgende werd verwacht:
             ;To make your program compile, add a begin and end and fix the typo (in bold):
    SQL> create or replace package body test_pack is
      2    temp emp.sal%type;
      3    cursor emp_cursor is
      4    select sal from emp;
      5    i number :=1;
      6    j number :=1;
      7
      8    function test_sal
      9    (v_sal in emp.sal%type)
    10    return emp_table_type
    11    is
    12    begin
    13      open emp_cursor;
    14      loop
    15        fetch emp_cursor into temp;
    16        if temp < v_sal then
    17          emp_list(i):=temp;
    18          dbms_output.put_line('rowcount i='||emp_cursor%rowcount);
    19          dbms_output.put_line('iterator i='||i);
    20          i:=i+1;
    21        else
    22          dbms_output.put_line('rowcount j='||emp_cursor%rowcount);
    23          dbms_output.put_line('iterator j='||j);
    24          j:=j+1;
    25        end if;
    26        if emp_cursor%notfound then
    27          dbms_output.put_line('cursor closed...');
    28          close emp_cursor;
    29          return emp_list;
    30          exit;
    31        end if;
    32      end loop;
    33    end;
    34  end test_pack;
    35  /
    Package-body is aangemaakt.
    SQL> declare
      2    t test_pack.emp_table_type;
      3  begin
      4    t := test_pack.test_sal(2000);
      5    for i in 1..t.count
      6    loop
      7      dbms_output.put_line(t(i));
      8    end loop;
      9  end;
    10  /
    rowcount i=1
    iterator i=1
    rowcount i=2
    iterator i=2
    rowcount i=3
    iterator i=3
    rowcount j=4
    iterator j=1
    rowcount i=5
    iterator i=4
    rowcount j=6
    iterator j=2
    rowcount j=7
    iterator j=3
    rowcount j=8
    iterator j=4
    rowcount j=9
    iterator j=5
    rowcount i=10
    iterator i=5
    rowcount i=11
    iterator i=6
    rowcount i=12
    iterator i=7
    rowcount j=13
    iterator j=6
    rowcount i=14
    iterator i=8
    rowcount i=14
    iterator i=9
    cursor closed...
    800
    1600
    1250
    1250
    1500
    1100
    950
    1300
    1300
    PL/SQL-procedure is geslaagd.To fix the bug of the last iteration and put the variables in the sections they belong:
    SQL> create or replace package test_pack is
      2    type emp_table_type is table of emp.sal%type index by binary_integer;
      3    function test_sal(v_sal in emp.sal%type) return emp_table_type;
      4  end test_pack;
      5  /
    Package is aangemaakt.
    SQL> create or replace package body test_pack
      2  is
      3    function test_sal(v_sal in emp.sal%type) return emp_table_type
      4    is
      5      emp_list emp_table_type;
      6      temp emp.sal%type;
      7      cursor emp_cursor is select sal from emp;
      8      i number :=1;
      9      j number :=1;
    10    begin
    11      open emp_cursor;
    12      loop
    13        fetch emp_cursor into temp;
    14        if emp_cursor%notfound then
    15          dbms_output.put_line('cursor closed...');
    16          exit;
    17        end if;
    18        if temp < v_sal then
    19          emp_list(i):=temp;
    20          dbms_output.put_line('rowcount i='||emp_cursor%rowcount);
    21          dbms_output.put_line('iterator i='||i);
    22          i:=i+1;
    23        else
    24          dbms_output.put_line('rowcount j='||emp_cursor%rowcount);
    25          dbms_output.put_line('iterator j='||j);
    26          j:=j+1;
    27        end if;
    28      end loop;
    29      close emp_cursor;
    30      return emp_list;
    31    end;
    32  end test_pack;
    33  /
    Package-body is aangemaakt.
    SQL> declare
      2    t test_pack.emp_table_type;
      3  begin
      4    t := test_pack.test_sal(2000);
      5    for i in 1..t.count
      6    loop
      7      dbms_output.put_line(t(i));
      8    end loop;
      9  end;
    10  /
    rowcount i=1
    iterator i=1
    rowcount i=2
    iterator i=2
    rowcount i=3
    iterator i=3
    rowcount j=4
    iterator j=1
    rowcount i=5
    iterator i=4
    rowcount j=6
    iterator j=2
    rowcount j=7
    iterator j=3
    rowcount j=8
    iterator j=4
    rowcount j=9
    iterator j=5
    rowcount i=10
    iterator i=5
    rowcount i=11
    iterator i=6
    rowcount i=12
    iterator i=7
    rowcount j=13
    iterator j=6
    rowcount i=14
    iterator i=8
    cursor closed...
    800
    1600
    1250
    1250
    1500
    1100
    950
    1300
    PL/SQL-procedure is geslaagd.To be really efficient and not care about looping, using counters and dbms_output, and assuming the emp table won't ever be a big table (else use the LIMIT clause):
    SQL> create or replace package body test_pack
      2  is
      3    function test_sal(v_sal in emp.sal%type) return emp_table_type
      4    is
      5      emp_list emp_table_type;
      6    begin
      7      select sal bulk collect into emp_list
      8        from emp
      9       where sal < v_sal
    10      ;
    11      return emp_list;
    12    end;
    13  end;
    14  /
    Package-body is aangemaakt.
    SQL> declare
      2    t test_pack.emp_table_type;
      3  begin
      4    t := test_pack.test_sal(2000);
      5    for i in 1..t.count
      6    loop
      7      dbms_output.put_line(t(i));
      8    end loop;
      9  end;
    10  /
    800
    1600
    1250
    1250
    1500
    1100
    950
    1300
    PL/SQL-procedure is geslaagd.Hope it helps.
    Regards,
    Rob.

  • Please help me on this program

    I wrote a binary search tree to store the name, birthday, and phone number. But everytime I tried to insert some values, I got the java.lang.nullpoint.exception: Please check out the program:
    BinaryNode:
    public class BinaryNode{
    protected String name, birth, phone;
    protected BinaryNode parent, left, right;
    public BinaryNode(){
    name = null;
              birth = null;
              phone = null;
              parent = null;
              left = null;
              right = null;
    public BinaryNode(String n, String b, String p, BinaryNode pa, BinaryNode l, BinaryNode r){
              name = n;
              birth = b;          
              phone = p;
         parent = pa;
              left = l;
              right = r;
    public void setParent(BinaryNode p){
    parent = p;
    public void setLeft(BinaryNode l){
    left = l;
    public void setRight(BinaryNode r){
    right = r;
    public BinaryNode getLeft(){
    return left;
    public BinaryNode getRight(){
    return right;
    public BinaryNode getParent(){
    return parent;
    public String getName(){
    return name;
    public String getBirth(){
    return birth;
    public String getPhone(){
    return phone;
    public void setData(String n, String b, String p){
              name = n;
              birth = b;          
              phone = p;
    Binarytree:
    import java.io.*;
    import java.util.*;
    public class Binarytree{
         protected BinaryNode second;     
         protected BinaryNode head;
         protected BinaryNode left;
         protected BinaryNode right;
         protected int number;
         public Binarytree(){
              head = null;
              number = 0;          
         public boolean isEmpty(){
              if (number == 0)
              return true;
              else
              return false;
         public int size(){
              return number;
         public void insertName(String n, String d, String m){
              head = new BinaryNode(n, d, m, head, left, right);
              second = null;
              while (head != null) {
    second = head;
    if (n.compareTo(head.getName()) < 0)
    head = head.getLeft();
    else
    head = head.getRight();
    if (second == null){
         head.setData(n, d, m);
    if (n.compareTo(second.getName()) < 0)
    second.getLeft().setData(n, d, m);
    else
    second.getRight().setData(n, d, m);
              number++;
         public void insertBirth(String n, String d, String m){
              head = new BinaryNode(n, d, m, head, left, right);
              second = null;
              while (head != null) {
    second = head;
    if (d.compareTo(head.getName()) < 0)
    head = head.getLeft();
    else
    head = head.getRight();
    if (second == null){
         head.setData(n, d, m);
    if (d.compareTo(second.getName()) < 0)
    second.getLeft().setData(n, d, m);
    else
    second.getRight().setData(n, d, m);
              number++;
         public BinaryNode searchName(String name){
              BinaryNode n = head;
              if(n != null || name == n.getName())
              return n;
              if(n != null || name != n.getName())
              return null;                     
              if(name.compareTo(n.getName()) < 0){
                   n = n.getLeft();
              return searchName(name);
              else{
                   n = n.getRight();
              return searchName(name);
         public BinaryNode searchBirth(String birth){
              BinaryNode n = head;
              if(n != null || birth == n.getBirth())
              return n;
              if(n != null || birth != n.getBirth())
              return null;                     
              if(birth.compareTo(n.getBirth()) < 0){
                   n = n.getLeft();
                   return searchBirth(birth);
              else{
                   n = n.getRight();
              return searchBirth(birth);      
         public BinaryNode treeMin(BinaryNode n){
              n = head;
              while(n.getLeft() != null){
                   n = n.getLeft();
              return n;
         public BinaryNode treeSuc(String name){
              BinaryNode n = head;
              BinaryNode y;
              BinaryNode x;
              x = searchBirth(name);          
              if(x.getRight() != null){
              return treeMin(x.getRight());     
              else{
              y = x.getParent();
              while( y != null && x == y.getRight()){
    x = y;
    y = y.getParent();
    return y;     
         public String removeName(String name){
              BinaryNode n = head;
              BinaryNode x, y, t;
              x = searchBirth(name);
              if (x.getLeft() == null || x.getRight() == null)
    y = x;
    else
    y = treeSuc(name);
         if (y.getLeft() != null)
         t = y.getLeft();
         else
         t = y.getRight();
         if (t != null)
         t.setParent(y.getParent());
         if (y.getParent() == null)
         head = t;
    else if (y == y.getParent().getLeft())
    y.getParent().setLeft(t);
    else
         y.getParent().setRight(t);
              return y.getName();
         public void print(BinaryNode n){          
              System.out.println(n.getName() + ", " + n.getBirth() + ", " + n.getPhone());
              System.out.println("");     
         public void inorderPrint(BinaryNode n){          
              n = head;
              if(n == null)
    return;
              inorderPrint(n.getLeft());
              print(n);
              inorderPrint(n.getRight());
         public void listByName(){
              BinaryNode n = head;
              inorderPrint(n);
         public void listByBirth(){
              head = null;
              readFileByBirth();
              BinaryNode n = head;
              inorderPrint(n);
         public void inorderTrave(BinaryNode n){
              n = head;
              inorderTrave(n.getLeft());
              inorderTrave(n.getRight());
         public void readFileByName() {
    try {
    BufferedReader in = new BufferedReader(new FileReader("myFile.dat"));
    String n = "s", d = "s", p = "s";
    int count = 1;
    while(in.readLine() != null){
    count++;      
    BufferedReader in1 = new BufferedReader(new FileReader("myFile.dat"));
    for (int i = 0; i < count / 3; i++){
    n = in1.readLine();
    d = in1.readLine();
    p = in1.readLine();
    insertName(n, d, p);
    in.close();
    } catch (IOException e) {
    public void readFileByBirth() {
    try {
    BufferedReader in = new BufferedReader(new FileReader("myFile.dat"));
    String n = "s", d = "s", p = "s";
    int count = 1;
    while(in.readLine() != null){
    count++;      
    BufferedReader in1 = new BufferedReader(new FileReader("myFile.dat"));
    for (int i = 0; i < count / 3; i++){
    n = in1.readLine();
    d = in1.readLine();
    p = in1.readLine();
    insertBirth(n, d, p);
    in.close();
    } catch (IOException e) {
    public void writeText(){
         try {
    BufferedWriter out = new BufferedWriter(new FileWriter("myFile.dat"));
    BinaryNode n = head;
    inorderTrave(n);
    out.write(n.getName());
    out.newLine();
    out.write(n.getBirth());
    out.newLine();
    out.write(n.getPhone());
    out.close();
    } catch (IOException e) {
    public String getDate(){
         Date date = new Date();
         String dt = null, m = null, y = null;
         String computerDate = null;
         int d = date.getMonth() + 1;
         if (d == 1)
         m = "Jan";
         else if (d == 2)
         m = "Feb";
         else if (d == 3)
         m = "March";
         else if (d == 4)
         m = "Apr";
         else if (d == 5)
         m = "May";
         else if (d == 6)
         m = "Jun";
         else if (d == 7)
         m = "Jul";
         else if (d == 8)
         m = "Aug";
         else if (d == 9)
         m = "Sep";
         else if (d == 10)
         m = "Oct";
         else if (d == 11)
         m = "Nov";
         else
         m = "Dec";      
         dt = ""+date.getDate();
         computerDate = dt + " " + m + ". " + 2006;
         return computerDate;
    test:
    import java.io.*;
    import java.util.*;
    public class test{
         public static void main(String[] args) throws IOException {
              String n = null, d = null, m = null;
              int position = 0;
              int option = 0;
              int doMore;
              Binarytree list = new Binarytree();
              while(option != 9){
              System.out.println("Enter your options:");
              System.out.println("0. Adding More Friends");
              System.out.println("1. Remove A Friend by His List Index");
              System.out.println("2. List Your Friends by name");
              System.out.println("3. List Your Friends by DOB");
              System.out.println("4. Save");
              System.out.println("5. Load");
              System.out.println("6. Search Friends by Their Name");
              System.out.println("7. Search Friends by Their Birthdays");
              System.out.println("8. Check Birthday");
              System.out.println("9. Exit");
              option = getInt();
              if (option == 0){
                   doMore = -1;
                   while(doMore != 0){
              System.out.println("Enter The Last and First Name of your friend:");
              n = getString();
              System.out.println("Enter The Date of your friend's Birthday:");
              d = getString();
              System.out.println("Enter Your Friend's Phone Number:");
              m = getString();
              System.out.println("Adding More? 1 for Yes Or 0 for No:");
              doMore = getInt();
              list.insertName(n, d, m);           
              doMore = -1;
              n = null;
              d = null;
              m = null;
              else if (option == 2){     
                   list.listByName();
              else if (option == 3){     
                   list.listByBirth();
              else if (option == 6){
                   doMore = -1;
                   while(doMore != 0){
              System.out.println("Enter The Name of your friend:");
              n = getString();
              list.searchName(n);           
              System.out.println("Searching More? 1 for Yes Or 0 for No:");
              doMore = getInt();               
              doMore = -1;
              n = null;
              d = null;
              m = null;
              else if (option == 7){
                   doMore = -1;
                   while(doMore != 0){
              System.out.println("Enter Your friend's Birthday:");
              d = getString();
              list.searchBirth(d);           
              System.out.println("Searching More? 1 for Yes Or 0 for No:");
              doMore = getInt();     
              doMore = -1;
              n = null;
              d = null;
              m = null;
              else if (option == 8){     
                   String s = list.getDate();
                   doMore = -1;
                   while(doMore != 0){     
              list.searchBirth(s);           
              System.out.println("Searching More? 1 for Yes Or 0 for No:");
              doMore = getInt();     
              doMore = -1;
              n = null;
              d = null;
              m = null;
              else if (option == 5){     
                   list.readFileByName();
              else if (option == 4){     
                   list.writeText();
              else if (option == 1){     
                   System.out.println("Enter List Index your friend:");
              String z = getString();
              System.out.println("Removed Friend is ");     
              list.removeName(z);           
         static String getString() throws IOException{
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);
    String s = br.readLine();
    return s;
    static int getInt() throws IOException{
    int x;
    BufferedReader reader = new BufferedReader (new InputStreamReader(System.in),1);
    x = Integer.parseInt(reader.readLine());
    return x;
    }

    I wrote a binary search tree to store the name, birthday, and phone
    number. But everytime I tried to insert some values, I got the
    java.lang.nullpoint.exception: Please check out the program:Well, you're using something that's not defined, obviously. The error message will tell you what line it is one. Go to that line and note the variables on it, then trace your code backwards until you figure out why one of them hasn't been defined.
    But, as was said, nobody is going to read that much unformatted code, especially when we don't even have the first clue as to where the problem is.

  • Please help me in this program

    I'm having problem with geting the balls bounce appropriately when they collide in my bouncingball program.Can somebody give me an idea how to do it.
    The main problem I'm having is in order to collide two balls I need to compare two balls moving on the screen, How do I compare those balls since they are same object .
    Here is my Ball class
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Ball
    private int x;
    private int y;
    private int theta = (int)(Math.random() * (-2 * Math.PI));
    private int xv;
    private int yv;
    public int xMax=350;
    public int yMax=350;
    public static int r = 15;
    private Color color;
    BouncingBall space;
    public Ball(BouncingBall spacex, int ballx, int bally,
    int xMax, int yMax, Color ballcolor)
    x = ballx;
    y = bally;
    xv = (int)(r * (Math.cos(theta))) ;
    yv = (int)(r * (Math.sin(theta)*r));
    this.xMax = xMax;
    this.yMax = yMax;
    color = ballcolor;
    space = spacex;
    public void setXmax(int newXmax)
    xMax= newXmax;
    public void setYmax(int newYmax)
    yMax = newYmax;
    public void Bounce()
    int xn = x + xv;
    int yn = y + yv;
    if (xn > xMax){
    x = xMax;
    xv = -xv;
    else if (xn < 0)
    x = 0;
    xv = -xv;
    else{
    x = xn;
    if (yn > yMax)
    y = yMax;
    yv = -yv;
    else if (yn < 0)
    y = 0;
    yv = -yv;
    else{
    y = yn;
    space.repaint();
    public void draw(final Graphics g){
    //g.setColor(g.getBackground());
    g.setColor(color);
    g.fillOval(x - r/2, y - r/2, r, r);
    Bounce();
    And here is my BouncingBall class
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class BouncingBall extends JFrame
    private int x;
    private int y;
    private int xv;
    private int yv;
    private int R;
    private int G;
    private int B;
    private Color color;
    public int xMax=400;
    public int yMax=400;
    public static int r = 15;
    private MouseHandler mh;
    public static ArrayList<Ball> ballsList;
    Ball thisBall;
    BouncingBall bb;
    public BouncingBall()
         super( "Click in the window to add balls" );
         ballsList = new ArrayList<Ball>();
    mh = new MouseHandler( );
    addMouseListener( mh );
    setSize( xMax, yMax );
    setVisible( true );
    bb = this;
    private class MouseHandler extends MouseAdapter{
    public void mouseClicked(MouseEvent me){
    x = me.getX();
    y = me.getY();
    R = 0 + (int) (256 * Math.random());
    G = 0 + (int) (256 * Math.random());
    B = 0 + (int) (256 * Math.random());
    color = new Color(R, G, B);
    ballsList.add(thisBall = new Ball(bb, x, y, xMax, yMax, color));
    repaint();
    public void paint(Graphics g)
    super.paint(g);
    for (Ball b : ballsList)
         b.setXmax(this.getWidth());
    b.setYmax(this.getHeight());
    b.draw(g);
    repaint();
    public static void main(String [] args){
    BouncingBall app = new BouncingBall();
    app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    }

    Don't create multiple postings on the same topic.
    If you make a mistake then reply to the posting asking people to respond to the other posting:
    http://forum.java.sun.com/thread.jspa?threadID=725596&tstart=0
    That way all comments are in a single place and its easier to see what has been suggested already so people don't waste time making suggestion that have already been made.
    Also, use the "Code' button when posting code so the code retains its original formatting and is therefore readable.

  • Please help me tune this program,

    Hi.
    I have a item master data table and a transaction table.
    For a given criteria I have to find items from master data table which do no exits in transaction table.
    I have listed my flow below, can you please advice if there is any other optimal way of doing it.
    1. For the given criteria read items from master data table into internal table 1. Sort the internal table 1.
    2. For the given criteria read items from transaction table into internal table 2. Sort and remove duplicates from the internal table 2.
    3. Loop at internal table 1, and check if item exists in internal table 2. Append items not in internal table 2 into another internal table 3.
    At the end internal table 3 will have the items I am interested in. I can sort and use binary search addition, but is there any other efficient way of doing this task.
    Thank you,
    CD

    Don't use standard tables !!!!!!! They are o.k. in old coding in new coding you should
    use only sorted and hashed tables and performance works automatically !!!
    Forget about sorting and deleting duplicates !
    > remove duplicates from the internal table 2.
    use a hashed table with a unique key and collect you entries in the hash table,
    Use sorted tables if the key is non-unique, or if the need also parts of the key!
    Use hashed tables if the key must be unique.
    Even for the append it is possible to APPEND into a sorted table, the records must come in a sort
    order, i.e. if they come from a sorted table then it is o.k.
    What I write is not imagination but the only really commendable way of handling internal tables.
    Siegfried

  • Please help me understand this error

    I am new to depolying applications with java webstart. When I try to download and run my application using web start I get this error:
    An error occurred while launching/running the application.
    Title: Brians Slide Show
    Vendor: brianbjork.org
    Category: Download Error
    Found unsigned entry in resource: http://www.brianbjork.org/Apps/sSlideShow.jar
    Here is the jnlp file:
    <?xml version="1.0" encoding="utf-8"?>
    <!-- JNLP File for App Demo Application -->
    <jnlp
    spec="1.0+"
    codebase="http://www.brianbjork.org"
    href="Apps/briansStarter.jnlp">
    <information>
    <title>Brians Slide Show</title>
    <vendor>brianbjork.org</vendor>
    <homepage href="http://www.brianbjork.org"/>
    <description>Brians Slide Show</description>
    <description kind="short">Something to learn on</description>
    <offline-allowed/>
    </information>
    <security>
    <all-permissions/>
    </security>
    <resources>
    <j2se version="1.4.0+"/>
    <jar href="Apps/sSlideShow.jar"/>
    </resources>
    <application-desc main-class="Assn3"/>
    </jnlp>

    Hi,
    Probably you have to sign the sSlideShow.jar.
    java.sun.com/docs/books/tutorial/jar/sign/signing.html
    Another way of resolving the problem, but this way you cannot access any the client computer, to save files for example, is to take out the <all-permissions/>!
    Rgds,
    Andre'

  • Urgent help in understanding this

    Hi
    I have  the attached Vi. Ths VI generate six  different number  between 0 and 45 i dont understand very well the logic of program. I dont understand the input of shift register []DBL. is it in funtions palette?
    I would like that you help to understand this program.
    Attachments:
    Array of Random Numbers (LV 2009) (1).vi ‏11 KB

    The input to the shift register is an empty array for double floating point numbers.
    I don't know if you;ve been pointed to this before, but I would highly recommend looking at the online LabVIEW tutorials
    LabVIEW Introduction Course - Three Hours
    LabVIEW Introduction Course - Six Hours
    And please give a more descriptive subject line then "urgent help in understand this".

  • Please help me with this etrecheck report!

    Please help me understand this report.
    Note: I've noticed that it has taken me longer to login after installing Yosemite. My computer has frozen a few times already and has shut itself down once or twice..also I have this annoying pop-up "To view this content, you need to install the Java Runtime Environment" which I've figured is from a Facebook videochat that I can't remove.. I appreciate your help. Thank You.
    EtreCheck version: 2.0.11 (98)
    Report generated December 2, 2014 at 2:09:52 PM EST
    Hardware Information: ℹ️
      MacBook Pro (Retina, 13-inch, Late 2012) (Verified)
      MacBook Pro - model: MacBookPro10,2
      1 2.5 GHz Intel Core i5 CPU: 2-core
      8 GB RAM Not upgradeable
      BANK 0/DIMM0
      4 GB DDR3 1600 MHz ok
      BANK 1/DIMM0
      4 GB DDR3 1600 MHz ok
      Bluetooth: Good - Handoff/Airdrop2 supported
      Wireless:  en0: 802.11 a/b/g/n
    Video Information: ℹ️
      Intel HD Graphics 4000 -
      Color LCD spdisplays_2880x1800Retina
    System Software: ℹ️
      OS X 10.10.1 (14B25) - Uptime: 0:19:19
    Disk Information: ℹ️
      APPLE SSD SM128E disk0 : (121.33 GB)
      S.M.A.R.T. Status: Verified
      EFI (disk0s1) <not mounted> : 210 MB
      Recovery HD (disk0s3) <not mounted>  [Recovery]: 650 MB
      Macintosh HD (disk1) /  [Startup]: 120.11 GB (65.53 GB free)
      Encrypted AES-XTS Unlocked
      Core Storage: disk0s2 120.47 GB Online
    USB Information: ℹ️
      Apple Inc. FaceTime HD Camera (Built-in)
      Apple Inc. Apple Internal Keyboard / Trackpad
      Apple Inc. BRCM20702 Hub
      Apple Inc. Bluetooth USB Host Controller
    Thunderbolt Information: ℹ️
      Apple Inc. thunderbolt_bus
    Gatekeeper: ℹ️
      Mac App Store and identified developers
    Kernel Extensions: ℹ️
      /Library/Application Support/Symantec/AntiVirus
      [loaded] com.symantec.kext.SymAPComm (12.2f1 - SDK 10.6) Support
      /Library/Extensions
      [loaded] com.symantec.kext.ndcengine (1.0f2 - SDK 10.6) Support
      /System/Library/Extensions
      [loaded] com.symantec.kext.internetSecurity (5.2f1 - SDK 10.6) Support
      [loaded] com.symantec.kext.ips (3.5f1 - SDK 10.6) Support
    Launch Agents: ℹ️
      [invalid?] com.cisco.anyconnect.gui.plist Support
      [loaded] com.google.keystone.agent.plist Support
      [loaded] com.oracle.java.Java-Updater.plist Support
      [running] com.symantec.uiagent.application.plist Support
    Launch Daemons: ℹ️
      [loaded] com.adobe.fpsaud.plist Support
      [running] com.cisco.anyconnect.vpnagentd.plist Support
      [loaded] com.google.keystone.daemon.plist Support
      [loaded] com.microsoft.office.licensing.helper.plist Support
      [loaded] com.oracle.java.Helper-Tool.plist Support
      [loaded] com.symantec.liveupdate.daemon.ondemand.plist Support
      [failed] com.symantec.liveupdate.daemon.plist Support
      [not loaded] com.symantec.sep.migratesettings.plist Support
      [running] com.symantec.sharedsettings.plist Support
      [running] com.symantec.symdaemon.plist Support
    User Launch Agents: ℹ️
      [failed] com.facebook.videochat.[redacted].plist Support
    User Login Items: ℹ️
      iTunesHelper Application (/Applications/iTunes.app/Contents/MacOS/iTunesHelper.app)
      GrowlHelperApp Application (/Users/[redacted]/Library/PreferencePanes/Growl.prefPane/Contents/Resources/Gr owlHelperApp.app)
      Guidance Application (/Applications/Guidance.app)
    Internet Plug-ins: ℹ️
      FlashPlayer-10.6: Version: 15.0.0.239 - SDK 10.6 Support
      QuickTime Plugin: Version: 7.7.3
      Flash Player: Version: 15.0.0.239 - SDK 10.6 Support
      Default Browser: Version: 600 - SDK 10.10
      o1dbrowserplugin: Version: 5.38.6.0 - SDK 10.8 Support
      SharePointBrowserPlugin: Version: 14.3.9 - SDK 10.6 Support
      googletalkbrowserplugin: Version: 5.38.6.0 - SDK 10.8 Support
      JavaAppletPlugin: Version: Java 7 Update 67 Check version
    Safari Extensions: ℹ️
      AdBlock
    3rd Party Preference Panes: ℹ️
      Flash Player  Support
      Growl  Support
      Java  Support
      Shades Preferences  Support
      Symantec QuickMenu  Support
    Time Machine: ℹ️
      Time Machine not configured!
    Top Processes by CPU: ℹ️
          4% Safari
          3% WindowServer
          2% hidd
          0% fontd
          0% com.apple.WebKit.WebContent
    Top Processes by Memory: ℹ️
      421 MB Safari
      326 MB SymDaemon
      198 MB com.apple.WebKit.WebContent
      112 MB mds_stores
      112 MB WindowServer
    Virtual Memory Information: ℹ️
      1.43 GB Free RAM
      4.93 GB Active RAM
      1.21 GB Inactive RAM
      1.01 GB Wired RAM
      1.16 GB Page-ins
      49 KB Page-outs

    Hi
    Pls could you help me with my imac which is running very slowly?
    I have included an etrecheck report below.
    Thanks,
    EtreCheck version: 2.1.8 (121)
    Report generated 28 February 2015 10:00:03 GMT
    Download EtreCheck from http://etresoft.com/etrecheck
    Click the [Click for support] links for help with non-Apple products.
    Click the [Click for details] links for more information about that line.
    Hardware Information: ℹ️
        iMac (27-inch, Mid 2010) (Technical Specifications)
        iMac - model: iMac11,3
        1 2.8 GHz Intel Core i5 CPU: 4-core
        4 GB RAM Upgradeable
            BANK 0/DIMM0
                2 GB DDR3 1333 MHz ok
            BANK 1/DIMM0
                2 GB DDR3 1333 MHz ok
            BANK 0/DIMM1
                Empty  
            BANK 1/DIMM1
                Empty  
        Bluetooth: Old - Handoff/Airdrop2 not supported
        Wireless:  en1: 802.11 a/b/g/n
    Video Information: ℹ️
        ATI Radeon HD 5750 - VRAM: 1024 MB
            iMac 2560 x 1440
    System Software: ℹ️
        OS X 10.10.2 (14C109) - Time since boot: 10 days 12:7:36
    Disk Information: ℹ️
        WDC WD1001FALS-40Y6A0 disk0 : (1 TB)
            EFI (disk0s1) <not mounted> : 210 MB
            Macintosh HD (disk0s2) / : 999.35 GB (782.53 GB free)
            Recovery HD (disk0s3) <not mounted>  [Recovery]: 650 MB
        OPTIARC DVD RW AD-5680H 
    USB Information: ℹ️
        Apple Inc. BRCM2046 Hub
            Apple Inc. Bluetooth USB Host Controller
        Apple Internal Memory Card Reader
        EPSON USB Printer
        Apple Computer, Inc. IR Receiver
        Apple Inc. Built-in iSight
    Gatekeeper: ℹ️
        Mac App Store and identified developers
    Kernel Extensions: ℹ️
            /Library/Application Support/Avast/components/fileshield/unsigned
        [loaded]    com.avast.AvastFileShield (2.1.0 - SDK 10.9) [Click for support]
            /Library/Application Support/Avast/components/proxy/unsigned
        [loaded]    com.avast.PacketForwarder (2.0 - SDK 10.9) [Click for support]
    Problem System Launch Agents: ℹ️
        [killed]    com.apple.CallHistoryPluginHelper.plist
        [killed]    com.apple.CallHistorySyncHelper.plist
        [killed]    com.apple.cmfsyncagent.plist
        [killed]    com.apple.coreservices.appleid.authentication.plist
        [killed]    com.apple.lookupd.plist
        [killed]    com.apple.printtool.agent.plist
        [killed]    com.apple.rcd.plist
        [killed]    com.apple.telephonyutilities.callservicesd.plist
        8 processes killed due to memory pressure
    Problem System Launch Daemons: ℹ️
        [killed]    com.apple.awdd.plist
        [killed]    com.apple.ctkd.plist
        [killed]    com.apple.ifdreader.plist
        [killed]    com.apple.nehelper.plist
        [killed]    com.apple.periodic-monthly.plist
        [killed]    com.apple.periodic-weekly.plist
        [killed]    com.apple.tccd.system.plist
        [killed]    com.apple.wdhelper.plist
        [killed]    com.apple.xpc.smd.plist
        9 processes killed due to memory pressure
    Launch Agents: ℹ️
        [running]    com.avast.update-agent.plist [Click for support]
        [loaded]    com.avast.userinit.plist [Click for support]
        [running]    com.epson.epw.agent.plist [Click for support]
        [loaded]    com.google.keystone.agent.plist [Click for support]
        [loaded]    com.oracle.java.Java-Updater.plist [Click for support]
    Launch Daemons: ℹ️
        [failed]    .plist (hidden) [Click for support]
            /usr/local/libexec/TorchUpdater /usr/local/libexec/TorchUpdater --hello=torch
        [loaded]    com.adobe.fpsaud.plist [Click for support]
        [loaded]    com.avast.init.plist [Click for support]
        [loaded]    com.avast.uninstall.plist [Click for support]
        [not loaded]    com.avast.update.plist [Click for support]
        [loaded]    com.google.keystone.daemon.plist [Click for support]
        [loaded]    com.microsoft.office.licensing.helper.plist [Click for support]
        [loaded]    com.oracle.java.Helper-Tool.plist [Click for support]
    User Launch Agents: ℹ️
        [not loaded]    com.avast.home.userinit.plist [Click for support]
        [loaded]    com.divx.agent.postinstall.plist [Click for support]
        [running]    com.google.Chrome.framework.plist [Click for support]
        [loaded]    com.macpaw.CleanMyMac2Helper.diskSpaceWatcher.plist [Click for support]
        [loaded]    com.macpaw.CleanMyMac2Helper.scheduledScan.plist [Click for support]
        [loaded]    com.macpaw.CleanMyMac2Helper.trashWatcher.plist [Click for support]
    User Login Items: ℹ️
        Google Chrome    Application Hidden (/Applications/Google Chrome.app)
    Internet Plug-ins: ℹ️
        o1dbrowserplugin: Version: 5.40.2.0 - SDK 10.8 [Click for support]
        Google Earth Web Plug-in: Version: 7.1 [Click for support]
        Default Browser: Version: 600 - SDK 10.10
        Flip4Mac WMV Plugin: Version: 2.3.8.1 [Click for support]
        OVSHelper: Version: 1.1 [Click for support]
        Unity Web Player: Version: UnityPlayer version 4.5.2f1 - SDK 10.6 [Click for support]
        AdobePDFViewerNPAPI: Version: 10.1.4 [Click for support]
        FlashPlayer-10.6: Version: 16.0.0.305 - SDK 10.6 [Click for support]
        DivXBrowserPlugin: Version: 2.2 [Click for support]
        Silverlight: Version: 5.1.10411.0 - SDK 10.6 [Click for support]
        Flash Player: Version: 16.0.0.305 - SDK 10.6 [Click for support]
        iPhotoPhotocast: Version: 7.0 - SDK 10.7
        googletalkbrowserplugin: Version: 5.40.2.0 - SDK 10.8 [Click for support]
        QuickTime Plugin: Version: 7.7.3
        AdobePDFViewer: Version: 10.1.4 [Click for support]
        GarminGpsControl: Version: 4.1.0.0 Release - SDK 10.7 [Click for support]
        NPRoblox: Version: Unknown
        SharePointBrowserPlugin: Version: 14.4.7 - SDK 10.6 [Click for support]
        JavaAppletPlugin: Version: Java 8 Update 31 Check version
    User internet Plug-ins: ℹ️
        WebEx64: Version: 1.0 - SDK 10.6 [Click for support]
        NPRoblox: Version: 1, 2, 8, 25 - SDK 10.10 [Click for support]
    Safari Extensions: ℹ️
        DivX Plus Web Player HTML5 <video>
    3rd Party Preference Panes: ℹ️
        DivX  [Click for support]
        Flash Player  [Click for support]
        Flip4Mac WMV  [Click for support]
        Java  [Click for support]
    Time Machine: ℹ️
        Time Machine not configured!
    Top Processes by CPU: ℹ️
             3%    WindowServer
             2%    Google Chrome
             1%    mds
             1%    Microsoft Outlook
             0%    mds_stores
    Top Processes by Memory: ℹ️
        189 MB    Google Chrome
        73 MB    softwareupdated
        73 MB    com.avast.daemon
        73 MB    Google Chrome Helper
        69 MB    Finder
    Virtual Memory Information: ℹ️
        37 MB    Free RAM
        1.45 GB    Active RAM
        1.44 GB    Inactive RAM
        707 MB    Wired RAM
        113.03 GB    Page-ins
        3.04 GB    Page-outs
    Diagnostics Information: ℹ️
        Feb 26, 2015, 02:15:44 PM    /Users/[redacted]/Library/Logs/DiagnosticReports/com.apple.iLifeSlideshow.MRXPC MovieServer_2015-02-26-141544_[redacted].crash
        Feb 26, 2015, 02:15:20 PM    /Users/[redacted]/Library/Logs/DiagnosticReports/com.apple.iLifeSlideshow.MRXPC MovieServer_2015-02-26-141520_[redacted].crash
        Feb 26, 2015, 01:55:32 PM    /Users/[redacted]/Library/Logs/DiagnosticReports/com.apple.iLifeSlideshow.MRXPC MovieServer_2015-02-26-135532_[redacted].crash
        Feb 25, 2015, 09:52:47 PM    /Users/[redacted]/Library/Logs/DiagnosticReports/accubeatmix_engine_2015-02-25- 215247_[redacted].crash

Maybe you are looking for

  • I Can't See any album art on my ipod Please help

    For some rerason all of my album artwork won't show up on my ipod anymore. The only way to make it show up is to put the album art on in the library before putting it on my ipod but I have over 1700 songs and it is not worth deleting them to do that.

  • Can't run form from Form Builder 10g - Port configuration problem?

    Hi, I have installed the Database (10.2.0.1.0) and the Developer Suite (10.1.2.0.2) on two Linux machines (Red Hat Enterprise Linux ES 4 Basic). If I enter the frmservlet-URL manually everything seems to be fine. In one case I enter http://127.0.0.1:

  • How can I save an email as a download file rather than a file in my email

    I wish to save entire emails in a windows folder rather than in an email folder. I have tried hitting "save as" but although I get a message telling me the download is complete I cannot open the documents. Also, I am getting weird icons after I try t

  • SMS not stored in the phone with new version of PC...

    After upgrading PC Suite v6.8 rel 22 to v6.81 rel 13 my SMS messages sent from PC are not stored in the phone. With the previous version of PC Suite SMS's were stored in the phone. Is this by-design behaviour of the new version or is it a bug? My con

  • Known Issues Upgrading from Apex 3.0.1 to 3.1.1

    Hi, We are in the process of upgrading to 3.1.1 from 3.0.1, are there any known issues (critical) that people can share? Have heard that there might be an issue with the Shuttle item - is this correct? Thanks. Tony.