Modulus 11 calculation not returning correct remainder - HELP

Hi,
Algorithm check for 10 char alpha, first 9 chars are numeric and last is alpha which is derived at by: remainder of:-
(digit1*512 + digit2*256 + digit3*128 + digit4*64 +
digit5*32 + digit6*16 + digit7*8 + digit8*4 +digit9*2)/11
where digit 1 is the high order digit
The table is:
S for remainder 0
A 1
C 2
X 3
B 4
J 5
K 6
H 7
T 8
L 9
V 10
for example:
'555123321B' should return 4, otherwise fail
'999999999C' should return 2, otherwise fail
I'm in the process of constructing a method for a particular mod 11 calculation, and as a TEST, i have written the following code which is not working as i get the wrong remainder:
String sti = null;
sti= request.getParameter("sti");
int sum = 0; int rem = 0;
int sti_char1 = Integer.parseInt(sti.substring(0,1));
int sti_char2 = Integer.parseInt(sti.substring(1,2));
int sti_char3 = Integer.parseInt(sti.substring(2,3));
int sti_char4 = Integer.parseInt(sti.substring(3,4));
int sti_char5 = Integer.parseInt(sti.substring(4,5));
int sti_char6 = Integer.parseInt(sti.substring(5,6));
int sti_char7 = Integer.parseInt(sti.substring(6,7));
int sti_char8 = Integer.parseInt(sti.substring(7,8));
int sti_char9 = Integer.parseInt(sti.substring(8,9));
sum = (sti_char1 * 512 + sti_char2 * 256 + sti_char3 * 128 +
sti_char4 * 64 + sti_char5 * 32 + sti_char6 * 16 +
sti_char7 * 8 + sti_char8 * 4 + sti_char9 * 2)/11;
rem = sum % 11;
Can someone please help me write a for loop using a table array for this algorithm check?

ahh.. silly me. thanks.
anyone want to have a go at converting this C function to JAVA?
sti_validation(char *sti, char *msg) {
   char chr_arr[TWO_SZ];
   int  str_len;
   char *p;
   char *q;
   char *error_message;
   short i=0;
   int chr;
   int chkd=0,digit;
   int num[] = { 512, 256, 128, 64, 32, 16, 8,4,2 };
   static char* check_digit_tbl[] = {"S","A","C","X","B","J","K","H","T","L","V"};
   error_message = msg;
   str_len = strlen(sti);
   if ((str_len > 10) || (str_len < 10)) {
      sprintf(error_message,"String length must be 10 characters\n");
      return(0);
   for (p = sti; *p != '\0'; p++) {
      *p = toupper(*p);
      i++;
      if ((i >= 1) && (i <= 9)) {
         if( *p >= '0' && *p <= '9') {
            chr = *p;
            digit = (chr-'0');
      chkd = chkd + digit * num[i-1];
         }else {
            sprintf(error_message,"Characters 1 to 9 must be from 0 to 9\n");
            return(0);
      }else if (i = 10) {
         chkd = chkd % 11;
         sprintf(chr_arr, "%s",check_digit_tbl[chkd]);
         q = chr_arr;
         if( *p >= 'A' && *p <= 'Z') {
            if (*p == *q) {
            }else {
               sprintf(error_message,"Invalid last character\n");
               return(0);
         }else {
            sprintf(error_message,"Character 10 must be from A to Z\n");
            return(0);
      }/*i fr 1 to 9*/
   }/*For*/
   return (1);
}

Similar Messages

  • My itunes has gotten error 7 (windows error 14001) itunes wont even open it just says itunes was not installed correctly. someone help please

    my itunes has gotten error 7 (windows error 14001) itunes wont even open it just says itunes was not installed correctly. someone help please

    For general advice see Troubleshooting issues with iTunes for Windows updates.
    The steps in the second box are a guide to removing everything related to iTunes and then rebuilding it which is often a good starting point unless the symptoms indicate a more specific approach. Review the other boxes and the list of support documents further down the page in case one of them applies.
    The further information area has direct links to the current and recent builds in case you have problems downloading, need to revert to an older version or want to try the iTunes for Windows (64-bit - for older video cards) (not for XP) release as a workaround for installation or performance issues, or compatibility with QuickTime or third party software.
    Your library should be unaffected by these steps but there are also links to backup and recovery advice should it be needed.
    tt2

  • Fsbtodb macro in ufs_fs.h does not return correct disk address

    I'm using fsbtodb to translate the file inode block address to file system block address.
    What I've observed is fsbtodb returns corretct disk address for all the files if file system size < 1 TB.
    But, if ufs file system size is greater than 1 TB then for some files, the macro fsbtodb does not return correct value, it returns -ve value
    Is this a known issue and is this been resolved in new versions
    Thanks in advance,
    dhd

    returns corretct disk address for all the files if file system size < 1 TB.and
    if ufs file system size is greater than 1 TB then for some files, the macro fsbtodb does not return correct value, it returns -ve valueI seem to (very) vaguely recall that you shouldn't be surprised at this example of a functional filesize limitation.
    Solaris 9 was first shipped in May 2002 and though it was the first release of that OS to have extended file attributes I do not think the developers had intended the OS to use raw filesystems larger than 1TB natively.
    That operating environment is just too old to do exactly as you hope.
    Perhaps others can describe this at greater length.

  • Problems with EVGET not Returning Correct Results

    We have several reports with EVGETs that are not working.  It seems to be limited to gets on a particular datasrc when getting members at the base level.  Here is an example.
    Application: Budgeting
    Deptid: D_07104
    Account: A_612080
    Product: P_070040
    Project: PJ_NOPROJ
    Time: 2009.APR
    Datasrc; ACTUALS
    Category: INPUT
    At this point, all the members above are base level members.  A standard EVGET will not return results at this intersection even though there is data.  If we change any of the following (Deptid, product, time, or category) to a parent level member, data will be returned.  Another action we can take to get data to return is open a new worksheet and write the same EVGET on the same intersection and it will return results.  If we go back to the original sheet edit each formula and hit enter it will return the correct results.  If we refresh the sheet, the results will disappear.  We have also tried EVGTS and get similar results.
    Another thing we have tried is copying a month of data from datasrc (ACTUALS) and category (INPUT) to datasrc (NEW_ACTUALS) and category (NEW_INPUT) through the BPC delivered copy.  That seems to work.  I don't know if the copy does something to load the data that we are missing.  We also updated our fact table with a SQL update changing the datasrc and category the same way and processed the application and the data would return through some EVGETs and not others.

    This issue can happen when you have for onde dimension multiple hierachies and something is wrong into hierachies.
    Usually you have dimension formula where you are trying to do calculation of a member from H1 using members from H2.
    This it is an example but it can be other possible errors.
    Any way for sure your issue is related to one dimension having multiple hierachies.
    Regards
    Sorin Radulescu

  • Res.getPathTranslated() does not return correct URL of the page requested

    Hi,
    The res.getPathTranslated() statement in the below code (in doFilter method) does not return the correct URL of the requested webpage.
    Whenever a web page is accessed using a return statement (eg : return "nextPage"; ) inside a button's action method or a hyperlink's action method, the res.getPathTranslated() returns the URL of the current webpage instead of returning the URL of the webpage that is actually requested.
    For example if there is a button on the page http://localhost:29080/MyJaas/faces/firstPage.jsp
    And the button_action() is as follows
    button_action()
    return "nextPage";
    The res.getPageTranslaged() returns "http://localhost:29080/MyJaas/faces/firstPage.jsp" instead of "http://localhost:29080/MyJaas/faces/nextPage.jsp"
    However, if the webpage is requested by populating the URL property of the hyerlink in creator IDE, the res.getPathTranslated() returns the correct (requested) web page.
    How to make res.getPathTranslagted() return the correct URL when the webpage is accessed from hyperlink's / button's action method?
    I know that the explation is not very clear, so please bear with me. Let me know if you need more clarificatons. Thanks in advance for showing interest in this issue.
    And by the way, the code below is the same as that used in Jaas Authentication tutorial :- http://developers.sun.com/prodtech/javatools/jscreator/reference/techart/2/jaas_authentication.html
    package jaasauthentication;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.http.HttpSession;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class SecurityFilter implements Filter{
        /** Creates a new instance of SecurityFilter */
        private final static String FILTER_APPLIED = "_security_filter_applied";
        public SecurityFilter() {
        public void init(FilterConfig filterConfig) {
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException{
            HttpServletRequest req = (HttpServletRequest)request;
            HttpServletResponse res = (HttpServletResponse)response;
            HttpSession session = req.getSession();
            String requestedPage = req.getPathTranslated();
            String user=null;
            //We dont want to filter certain pages which include the Login.jsp/Register.jsp/Help.jsp
            if(request.getAttribute(FILTER_APPLIED) == null) {
                //check if the page requested is the login page or register page
                if((!requestedPage.endsWith("Login.jsp")) && (!requestedPage.endsWith("Register.jsp")) && (!requestedPage.endsWith("Help.jsp"))){
                    //Requested page is not login.jsp or register.jsp therefore check for user logged in..
                    //set the FILTER_APPLIED attribute to true
                    request.setAttribute(FILTER_APPLIED, Boolean.TRUE);
                    //Check that the session bean is not null and get the session bean property username.
                    if(((jaasauthentication.SessionBean1)session.getAttribute("SessionBean1"))!=null) {
                        user = ((jaasauthentication.SessionBean1)session.getAttribute("SessionBean1")).getUsername();
                    if((user==null)||(user.equals(""))) {
                        res.sendRedirect("Login.jsp");
                        return;
            //deliver request to next filter
            chain.doFilter(request, response);
        public void destroy(){
    }

    Guys any solution for the above problem?
    Right answer fetches 10 duke dollars..

  • MessageChoice does not return correct value

    Hi
    I am problem with MessgeChoiceBean's improver beharior
    For the first time it retunrs blank and subsequently In one page if I select Yes, it returns No.
    In another page it does not return any thing for the first two selections. And I reciev flip values.
    I ran VO outside, VO is returning correct values.
    MessageChoice attributes and associated PPR:
    Data Type: Varchar2
    Initial Value: N
    Pick List view Definition: oracle.apps.xxx.docs.common.lov.server.YesNoVO
    Pick List View Instance: YesNoVO3
    Pick List Display Attribute: Meaning
    Pick List Value AttributeL LookupCode
    ActionType: firePartialAction
    Event: handleNewLocationFlagChange
    Parameter Name: newLocationFlag
    Parameter Value: ${oa.CustomerInfoVO1.NewShipToLocationFlag}
    ProcessParameterForm Code:
    if ("handleNewLocationFlagChange".equals(event))
    String newLocationFlag = pageContext.getParameter("newLocationFlag");
    Serializable[] parameters = { ""+newLocationFlag};
    Class[] paramTypes = { String.class};
    am.invokeMethod("handleNewLocationFlagChange", parameters, paramTypes);
    VO definition:
    select LOOKUP_CODE,MEANING
    FROM ONLINE_DOCS_LOOKUPS
    WHERE ONLINE_DOCUMENT_CODE = 'ALL'
    AND LOOKUP_TYPE = 'YESNO'
    ORDER BY ATTRIBUTE1
    View output:
    LOOKUP_CODE     MEANING
    N     No
    Y     Yes
    I have quite a bit number of columns to change render property.
    Any help will be appreciated.
    Thanks
    Prasad

    Your question is not clear, are you saying the values in the messageChoiceBean is not displayed properly. As far as I can see from the definition the poplist picks the values from a lookup(Yes, No) values and has a PPR action associated with it. Did you check what this method handleNewLocationFlagChange is doing in the AM ?

  • Table not returning correct information

    We had a problem where doing a select count(*) returned a number, but then when a select * was issued not rows were returned. Many iterations were tried. Some returning rows and others not. Then when trying to truncate FK errors occurred. Does anyone know what might have been the problem? Our solution was to drop and re-create the tables. This was in a test environment, but we don't want this to happen in production.
    Thanks.

    Something doesn't sound right to me. I haven't seen this happen in our Oracle databases but have seen this happen with a DB2 database
    when an index was corrupt. The solution was to rebuild the index in that case. I'd issue a statement to validate the structure of the table
    and its indexes:
    analyze table table_name validate structure cascade;
    From the 8.1.7 SQL manual:
    VALIDATE STRUCTURE
    Specify VALIDATE STRUCTURE to validate the structure of the analyzed object. The statistics collected by this clause are not used by the Oracle optimizer, as are
    statistics collected by the COMPUTE STATISTICS and ESTIMATE STATISTICS clauses.
    For a table, Oracle verifies the integrity of each of the table's data blocks and rows.
    For a cluster, Oracle automatically validates the structure of the cluster's tables.
    For a partitioned table, Oracle also verifies that each row belongs to the correct partition. If a row does not collate correctly, its rowid is inserted into the
    INVALID_ROWS table.
    For a temporary table, Oracle validates the structure of the table and its indexes during the current session.
    For an index, Oracle verifies the integrity of each data block in the index and checks for block corruption. This clause does not confirm that each row in the table
    has an index entry or that each index entry points to a row in the table. You can perform these operations by validating the structure of the table with the
    CASCADE clause (described below).
    Oracle stores statistics about the index in the data dictionary views INDEX_STATS and INDEX_HISTOGRAM.
    See Also: Oracle8i Reference for information on these views
    Validating the structure of an object prevents SELECT, INSERT, UPDATE, and DELETE statements from concurrently accessing the object. Therefore, do not use this
    clause on the tables, clusters, and indexes of your production applications during periods of high database activity.
    If Oracle encounters corruption in the structure of the object, an error message is returned to you. In this case, drop and re-create the object.
    INTO table
    Specify a table into which Oracle lists the rowids of the partitions whose rows do not collate correctly. If you omit schema, Oracle assumes the list is in
    your own schema. If you omit this clause altogether, Oracle assumes that the table is named INVALID_ROWS. The SQL script used to create this table
    is UTLVALID.SQL.
    CASCADE
    Specify CASCADE if you want Oracle to validate the structure of the indexes associated with the table or cluster. If you use this clause when validating a
    table, Oracle also validates the table's indexes. If you use this clause when validating a cluster, Oracle also validates all the clustered tables' indexes,
    including the cluster index.
    If you use this clause to validate an enabled (but previously disabled) function-based index, validation errors may result. In this case, you must rebuild the
    index.

  • LOV in APEX not returning correct info

    Hi,
    I have created a test application on apex.oracle.com
    http://apex.oracle.com/pls/otn/f?p=30495:2:3825777729569530::NO::P2_OFFICE_CALL100_KEY:1548
    username = test
    pswd = test
    When I click on LOV icon next to CALLER LAST NAME, I am suppose to see all the last names from the table where the first name = CALLER FIRST NAME.
    The code in LOV (CALLER_LAST_NAME) is
    select distinct OFFICE_CALL1_CALLER_NAME_LAST d,OFFICE_CALL1_CALLER_NAME_LAST r
    from office_call1
    where office_call1_caller_name_first = :P2_OFFICE_CALL100_NAME_FIRST
    order by 1
    When I click on the above LOV I do not get values.
    I ran the above in sql and for 'TRACEY' as first name I get 3 results.
    Please let me know what am I missing.
    Thanks
    Munish

    Hi Munish,
    Sorry for the delay, but I had a tough day and I just remembered that I needed to follow up with you earlier. Your issue can be solved in one of 2 ways only:
    1- Make the first name LOV do a submit after value change. And I am sure you dont want to do that, because this will submit the whole page and may throw validation errors or complete trasactions that you dont want to submit yet.
    2-Use Ajax and process on demand feature in Apex.
    This is not simple to explain, but I have published an online example that does what you want but for other scenario . Your senario is a bit simpler so take only what you need from my code and use as needed. If you need help in that let me know and I will explain.
    My Online Example: http://apex.oracle.com/pls/otn/f?p=54772:1
    Thanks,
    Sam
    Please reward good answers by marking them correct or helpful!

  • Filr 1.1 LDAP Preview Not Returning Correct Number of Result

    I'm finishing set up of Filr 1.1 in our environment but noticed today that the LDAP preview does not return the correct number of results. The query:
    (&(objectClass=Person)(|(employeeType=E)(employeeT ype=Y)(employeeType=Z)))
    has been tried against multiple AD domain controllers and has so far returned 3 different user counts - 2895, 2800, and 2700. Mostly it always returns 2800. The correct count using powershell with the exact same ldap filter is over 5000.
    I would prefer not to try a sync until I have some confidence that it will complete successfully. Any suggestions?

    On Wed, 22 Apr 2015 17:26:03 GMT, jameswatson3
    <[email protected]> wrote:
    >
    > I'm finishing set up of Filr 1.1 in our environment but noticed today
    > that the LDAP preview does not return the correct number of results. The
    > query:
    >
    > (&(objectClass=Person)(|(employeeType=E)(employeeT ype=Y)(employeeType=Z)))
    >
    > has been tried against multiple AD domain controllers and has so far
    > returned 3 different user counts - 2895, 2800, and 2700. Mostly it
    > always returns 2800. The correct count using powershell with the exact
    > same ldap filter is over 5000.
    >
    > I would prefer not to try a sync until I have some confidence that it
    > will complete successfully. Any suggestions?
    Could you try it with filr 1.2?
    https://download.novell.com/Download...d=q-mgVFDsOKQ~

  • ADDT not returning correct results

    Hello
    SELECT tblTraders.trader_company AS trader_ref, tblTrades.trade_name AS trade_ref, tblT2t.t2t_id
    FROM (tblT2t LEFT JOIN tblTraders ON tblT2t.trader_ref = tblTraders.trader_id) LEFT JOIN tblTrades ON tblT2t.trade_ref = tblTrades.trade_id
    WHERE {$NXTFilter_rstblT2t1}
    ORDER BY {$NXTSort_rstblT2t1}
    With reference to the above SQL statement generated while using dynamic list wizard, the SQL does not return the correct results.
    Sadly the SQL does not retrieve the field "trade_ref" and is blank when the "test" button is used.
    Anyone got any ideas?
    Cheers
    Paul

    Hi Paul,
    does this query return the correct results when loading the page in a browser ?
    Cheers,
    Günter

  • Rtrim in where clause not returning correct data

    A select statement specifying
    where rtrim(field_name) &lt;&gt; ''
    is not returning any rows even though there is data on the table with field_name not blank.
    If this particular where clause is omitted the data is returned and rtrim(field_name) is populated correctly.
    This is occurring across different tables and in both 10.2.0.4 and 11.2.0.1 databases. I can't find any references to this being a bug.
    Has anyone else come across this ? Can anyone explain why this is happening please ?

    An empty VARCHAR2 is considered NULL by Oracle.
    sql> select 1 from dual where trim (' ') = '';
    no rows selected
    sql> select 1 from dual where trim (' ') != '';
    no rows selected
    sql> select 1 from dual where trim (' ') is null;
             1
             1

  • ERROR: FMS Server did not return correctly!

    We have several adobe connect HOST meeting rooms. Lately, some users have sent us their complaints arguing:
    "Unable to connect - FMS server did not return corrently"
    I asked them to send me the test's details. 
    "App-Server returned: code:ok, servers=rtmp://fmwebserversec:1935/_rtmp://localhost:8506/,rtmpt://fmwebserversec:443/_rt mp://localhost:8506/"
    I know, this threat has been post at this forum, but I don't find a solution for my users. The Adobe Connect Support is trying to give a solution, but at the moment, I haven't recieve any solution.
    I' ve tried: disconnect firewall, anti-virus,... and they keep unable to connect. (using adobe connect hosted ver 7.5)
    Thanks for your advice and help.
    Rafael

    Obviously  this topic creates controversy

  • IPod software not installed correctly - Please help!

    I thought I successfully installed my IPod software and Itunes, however when I go into Itunes the following message appears......
    The software required for commuincation with the IPod is not installed correctly.Please reinstall Itunes to install the IPods software
    So I have tried to uninstall and reinstall and my computer wont let me do either - when I try to unistall or reinstall the following messages appear......
    String Product_Name was not found in string table
    OR
    Error 0x80040706 Object reference not set - installation terminated
    Please help me!
    Dell   Windows XP  
    Dell   Windows XP  

    Gary,
    Thanks for getting back to me - I gave up on getting this to work yesterday so Im hoping today will be better. I tried your suggestion of holding down the shift key and it didnt work. I have tried alot of stuff that I found posted in the discussions - I tried doing what you suggested Hewtab do - following the article, IPod appears in Window but not in Itunes. I have shut down my virus software - I even restored my computer back to before I installed Itunes and tried to reinstall it but no go - that made it even worse. When I try to uninstall or reinstall Itunes or the Ipod software it wont let me. - It simply says Product_Name ws not found in string table. IS there anything else I can do? Im about to download winamp and be done with itunes.
    Thanks in advance for your help!

  • 'the software required for communicating with the iPod is not installed correctly. HELP.

    everytime i try to update my ipod nano, i get an error message saying: 'the software required for communicating with the iPod is not installed correctly. Please reinstall iTunes to install the iPods software'
    i have tried reinstalling my itunes but i am still getting this message.
    what do i do?!

    When you reinstalled, did you just uninstall iTunes, then download it from apple.com/itunes/download?

  • Bizzare error - datasource and getdate not returning correct day of week

    Hi,
    This is on CFMX 7.0.2,142559.
    I have a data source pointing to a MS SQL server. There is a
    simple query that access a date off the database and extract the
    values of:
    -. Current timestamp
    -. Day of week
    -. First day of week
    The query has been running for years and suddenly it gives me
    the wrong Day of week and First day of week, but the timestamp is
    correct! The result of the calculation for the Day of Week suddenly
    became one day ahead, the @@DATEFIRST switched between 6 and 7
    (being 7 as the correct value).
    Here is the code:
    <cfquery name="dte0" datasource="test123"
    SELECT getdate() dte, DATEPART(dw, getdate()) dteDW,
    @@DATEFIRST dteFirst, @@language LanguageVersion
    </cfquery>
    <cfdump expand="Yes" label="Query Dump" var="#dte0">
    I tried to delete and recreate this data source, restart CF
    and flush the cache with no success.
    The really bizarre thing is for a few minutes after I restart
    CF, it returnes the correct data, but then it suddenly moves one
    day ahead - and again, only the Day of week. The DATEFIRST
    sometimes returns 6 (instead of the correct value of 7) The
    timestamp is ALWAYS correct.
    I then created a second data source with exactly the same
    parameters and named it "test456" and it works perfectly every
    time!!
    I am baffled as how this happened and how to fix it.
    Does anyone know if somehow the datasource "test123" is
    cached somewhere? Appreciate any advice/suggestions/ideas.
    Aditya.

    > The query has been running for years and suddenly it
    gives me the wrong Day of
    > week and First day of week, but the timestamp is
    correct! The result of the
    > calculation for the Day of Week and First day of week
    suddenly became one day
    > ahead.
    >
    > Here is the code:
    >
    > <cfquery name="dte0" datasource="test123"
    > SELECT getdate() dte, DATEPART(dw, getdate()) dteDW,
    $$DATEFIRST dteFirst,
    > @@language LanguageVersion
    > </cfquery>
    > <cfdump expand="Yes" label="Query Dump"
    var="#dte0">
    When CF encouters the string within a <cfquery> tag,
    all it does is resolve
    any CF expressions (there are none in your example), and then
    passes the
    finalised string to the DB and patiently waits for the DB to
    respond, at
    which point CF converts the DB-specific result set to a CF
    recordset, and
    returns it to the calling code. There is very little
    involvement on the
    part of CF other than that: the DB does most of the work, and
    is providing
    all the data.
    All that said, it does seem weird that one DSN returns one
    thing, and
    another returns something else. Is your test rig like this:
    <cfquery name="dte0" datasource="test123"
    SELECT getdate() dte, DATEPART(dw, getdate()) dteDW,
    $$DATEFIRST dteFirst,
    @@language LanguageVersion
    </cfquery>
    <cfdump expand="Yes" label="Query Dump" var="#dte0">
    <cfquery name="dte0" datasource="test456"
    SELECT getdate() dte, DATEPART(dw, getdate()) dteDW,
    $$DATEFIRST dteFirst,
    @@language LanguageVersion
    </cfquery>
    <cfdump expand="Yes" label="Query Dump" var="#dte0">
    IE: both queries to each DSN within the same CF template,
    executed at the
    same time.
    (note: you have a syntax error in your <cfdump>
    statement, so that actually
    *isn't* the code you're running, because it would error).
    If you run the query via some other client (like Query
    Analyser, or SQL
    Studio), what do you get? Does it differ from what CF
    presents?
    Adam

Maybe you are looking for