INTRODUCTION
I would like to discuss a
programming technique I developed in C++ several years ago for converting a numerical amount to a verbal amount. I use this in a check book register program I made for a longtime customer in my hometown of Cleveland, Ohio USA. This technique is part of a module in a larger program that is used to compose and issue checks every week for payroll, taxes, shop materials, office supplies, utilities and more. It has proven to be very reliable over a period of years. This algorithm can also be implemented for assistance with printing legal contracts, loan documents, promissory notes and many more things where a verbal amount needs to be specified.
The full C++
program code readout for this can be viewed on my website. Next, I will explain the logic flow so it can be easily understood.
GETTING SET UP
At the beginning of the C++ source code, defined constants are declared so the rest of the code can reference them for various tasks. After clicking the “print check” button, the variables and objects are declared. Next, a simple if-then logic structure is used to test if a check book register record has been selected from the check book register screen. This is necessary because the check number from the check book register screen is needed to help create the printed check. Now initialize the variables for the check and check stub. Next, retrieve the following items from the controls on the currently displayed screen. These items include check number, vendor name, invoice description, check memorandum and paid date.
For the next step, a file stream must be opened to the binary check book register data file, “cbook.txt”. Here, a do-while loop structure is entered to collect the data for each invoice to be paid. The check number for each check book register record will be matched to the one retrieved from the current data entry screen. Each matched record will retrieve the date, expense code, invoice number, invoice total, early payment discount, and net invoice amount for each specific vendor invoice to be paid with this check. There can be no more than 10 invoices on the check stub in this particular application. With each pass through the do-while loop structure, the matched check book register record will be marked as paid and the net invoice amount will be accumulated. This total will become the numerical amount that will be converted to a verbal amount.
Upon verification that at least one matching check number was found in the do-while loop structure from above, the net invoice amount total will be specified in a character array called “totpay”. This character array will be extensively utilized in the conversion to a verbal amount momentarily. But first, a file stream must be opened to the vendor binary data file, “vendor.txt”. This will be another do-while loop structure that matches the retrieved vendor name from the currently displayed screen to what is in the data file for vendors. The vendor’s street, city, state and zip code are then retrieved upon a successful match and then formatted with some simple string operations to prepare for eventual printing on the check itself.
THE BRICK AND MORTAR
Here are some sets of character arrays that define some of the verbal components used to construct the verbal amount for the check. Each of these character array sets will be assigned a specific name for the purpose of narrating the
software development algorithm that utilizes them for converting the numerical amount to a verbal amount.
1 2 3 4 5 6 7 8 9 10
|
char am1[] = "NINETY";
char am2[] = "EIGHTY";
char am3[] = "SEVENTY";
char am4[] = "SIXTY";
char am5[] = "FIFTY";
char am6[] = "FORTY";
char am7[] = "THIRTY";
char am8[] = "TWENTY";
| |
The above character array contents are selectively concatenated to the verbal description variable depending on what numbers are in the second (2nd) and fifth (5th) positions to the left of the decimal point in the numerical amount to be converted.
THIS IS GROUP A.
1 2 3 4 5 6 7 8 9 10 11
|
char am9[] = "ONE";
char am10[] = "TWO";
char am11[] = "THREE";
char am12[] = "FOUR";
char am13[] = "FIVE";
char am14[] = "SIX";
char am15[] = "SEVEN";
char am16[] = "EIGHT";
char am17[] = "NINE";
| |
The above character array contents are selectively concatenated to the verbal description variable depending on what numbers are in the first (1st), third (3rd) and fourth (4th) positions to the left of the decimal point in the numerical amount to be converted.
THIS IS GROUP B.
1 2 3
|
char am18[] = "THOUSAND";
| |
This is concatenated to the verbal description variable after the “number of thousands figure” has been detected, which is the fourth (4th) position to the left of the decimal point in the numerical amount to be converted.
THIS IS THE THOUSANDS DESIGNATOR.
1 2 3
|
char am19[] = "HUNDRED";
| |
This is concatenated to the verbal description variable after the “number of hundreds figure” has been detected, which is the third (3rd) position to the left of the decimal point in the numerical amount to be converted.
THIS IS THE HUNDREDS DESIGNATOR.
This is not concatenated to the verbal description variable, but rather it is assigned after no other descriptors have been concatenated to the above variable at the end of processing.
THIS IS THE ZERO DESIGNATOR.
1 2 3 4 5 6 7 8 9 10 11 12
|
char am210[] = "TEN";
char am211[] = "ELEVEN";
char am212[] = "TWELVE";
char am213[] = "THIRTEEN";
char am214[] = "FOURTEEN";
char am215[] = "FIFTEEN";
char am216[] = "SIXTEEN";
char am217[] = "SEVENTEEN";
char am218[] = "EIGHTEEN";
char am219[] = "NINETEEN";
| |
The above character array contents are selectively concatenated to the verbal description variable depending on what numbers are in the first (1st) and fourth (4th) positions to the left of the decimal point in the numerical amount to be converted.
THIS IS GROUP C.
STARTING CONSTRUCTION
The first thing to do here is initialize the 70 character character array “verbal_amount” with space characters to prepare it for being updated by the algorithm that converts the numerical amount in the character array “totpay” to the verbal counterpart. A counter variable “aa” will also be used to count how many characters are appended to the char array “verbal_amount”.
Next, check to see if the 5th digit to the left of the decimal point in the numerical character array “totpay” is greater than 0 (begin structure “a”). If true, then check to see if the 5th digit to the left of the decimal point in the numerical character array “totpay” is equal to 1 (begin structure “b”). If this is true, then use
GROUP C to assign a descriptor to the verbal amount character array “verbal_amount” based on the number that is contained in the 4th digit to the left of the decimal place in the numerical character array “totpay” as shown here:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
// if the 4th digit to the left of the decimal point is 0, then append
// "TEN" to the 'verbal_amount' array.
if(totpay[3] == 48) {
for(f=0; f<3; f++) verbal_amount[f] = am210[f];
aa=3;
}
// if the 4th digit to the left of the decimal point is 1, then append
// "ELEVEN" to the 'verbal_amount' array.
if(totpay[3] == 49) {
for(f=0; f<6; f++) verbal_amount[f] = am211[f];
aa=6;
}
// if the 4th digit to the left of the decimal point is 2, then append
// "TWELVE" to the 'verbal_amount' array.
if(totpay[3] == 50) {
for(f=0; f<6; f++) verbal_amount[f] = am212[f];
aa=6;
}
// if the 4th digit to the left of the decimal point is 3, then append
// "THIRTEEN" to the 'verbal_amount' array.
if(totpay[3] == 51) {
for(f=0; f<8; f++) verbal_amount[f] = am213[f];
aa=8;
}
// if the 4th digit to the left of the decimal point is 4, then append
// "FOURTEEN" to the 'verbal_amount' array.
if(totpay[3] == 52) {
for(f=0; f<8; f++) verbal_amount[f] = am214[f];
aa=8;
}
// if the 4th digit to the left of the decimal point is 5, then append
// "FIFTEEN" to the 'verbal_amount' array.
if(totpay[3] == 53) {
for(f=0; f<7; f++) verbal_amount[f] = am215[f];
aa=7;
}
// if the 4th digit to the left of the decimal point is 6, then append
// "SIXTEEN" to the 'verbal_amount' array.
if(totpay[3] == 54) {
for(f=0; f<7; f++) verbal_amount[f] = am216[f];
aa=7;
}
// if the 4th digit to the left of the decimal point is 7, then append
// "SEVENTEEN" to the 'verbal_amount' array.
if(totpay[3] == 55) {
for(f=0; f<9; f++) verbal_amount[f] = am217[f];
aa=9;
}
// if the 4th digit to the left of the decimal point is 8, then append
// "EIGHTEEN" // to the 'verbal_amount' array.
if(totpay[3] == 56) {
for(f=0; f<8; f++) verbal_amount[f] = am218[f];
aa=8;
}
// if the 4th digit to the left of the decimal point is 9, then append
// "NINETEEN" // to the 'verbal_amount' array.
if(totpay[3] == 57) {
for(f=0; f<8; f++) verbal_amount[f] = am219[f];
aa=8;
}
| |
End structure “b”. Next, use
GROUP A to assign a descriptor to the verbal amount character array “verbal_amount” based on the number that is contained in the 5th digit to the left of the decimal place in the numerical character array “totpay” as shown here:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
// if the 5th digit to the left of the decimal point is 2, then append
// "TWENTY" to the 'verbal_amount' array.
if(totpay[2] == 50) {
for(f=0; f<6; f++) verbal_amount[f] = am8[f];
aa=6;
}
// if the 5th digit to the left of the decimal point is 3, then append
// "THIRTY" to the 'verbal_amount' array.
if(totpay[2] == 51) {
for(f=0; f<6; f++) verbal_amount[f] = am7[f];
aa=6;
}
// if the 5th digit to the left of the decimal point is 4, then append
// "FORTY" to the 'verbal_amount' array.
if(totpay[2] == 52) {
for(f=0; f<5; f++) verbal_amount[f] = am6[f];
aa=5;
}
// if the 5th digit to the left of the decimal point is 5, then append
// "FIFTY" to the 'verbal_amount' array.
if(totpay[2] == 53) {
for(f=0; f<5; f++) verbal_amount[f] = am5[f];
aa=5;
}
// if the 5th digit to the left of the // decimal point is 6, then append
// "SIXTY" to the 'verbal_amount' array.
if(totpay[2] == 54) {
for(f=0; f<5; f++) verbal_amount[f] = am4[f];
aa=5;
}
// if the 5th digit to the left of the decimal point is 7, then append
// "SEVENTY" to the 'verbal_amount' array.
if(totpay[2] == 55) {
for(f=0; f<7; f++) verbal_amount[f] = am3[f];
aa=7;
}
// if the 5th digit to the left of the decimal point is 8, then append
// "EIGHTY" to the 'verbal_amount' array.
if(totpay[2] == 56) {
for(f=0; f<6; f++) verbal_amount[f] = am2[f];
aa=6;
}
// if the 5th digit to the left of the decimal point is 9, then append
// "NINETY" to the 'verbal_amount' array.
if(totpay[2] == 57) {
for(f=0; f<6; f++) verbal_amount[f] = am1[f];
aa=6;
}
| |
Begin structure “c”. If the 5th digit to the left of the decimal point in the numerical character array “totpay” does not equal 1, then use
GROUP B to assign a descriptor to the verbal amount character array “verbal_amount” based on the number that is contained in the 4th digit to the left of the decimal place in the numerical character array “totpay” as shown here:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
// if the 4th digit to the left of the decimal point is 1, then append
// "ONE" to the 'verbal_amount' array.
if(totpay[3] == 49) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am9[f];
aa=aa+4;
}
// if the 4th digit to the left of the decimal point is 2, then append
// "TWO" to the 'verbal_amount' array.
if(totpay[3] == 50) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am10[f];
aa=aa+4;
}
// if the 4th digit to the left of the decimal point is 3, then append
// "THREE" to the 'verbal_amount' array.
if(totpay[3] == 51) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am11[f];
aa=aa+6;
}
// if the 4th digit to the left of the decimal point is 4, then append
// "FOUR" to the 'verbal_amount' array.
if(totpay[3] == 52) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am12[f];
aa=aa+5;
}
// if the 4th digit to the left of the decimal point is 5, then append
// "FIVE" to the 'verbal_amount' array.
if(totpay[3] == 53) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am13[f];
aa=aa+5;
}
// if the 4th digit to the left of the decimal point is 6, then append
// "SIX" to the 'verbal_amount' array.
if(totpay[3] == 54) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am14[f];
aa=aa+4;
}
// if the 4th digit to the left of the decimal point is 7, then append
// "SEVEN" to the 'verbal_amount' array.
if(totpay[3] == 55) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am15[f];
aa=aa+6;
}
// if the 4th digit to the left of the decimal point is 8, then append
// "EIGHT" to the 'verbal_amount' array.
if(totpay[3] == 56) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am16[f];
aa=aa+6;
}
// if the 4th digit to the left of the decimal point is 9, then append
// "NINE" to the 'verbal_amount' array.
if(totpay[3] == 57) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am17[f];
aa=aa+5;
}
| |
End structure “c”. Next, append "THOUSAND" to the character array “verbal_amount” and end structure “a”.
Begin structure “d”. If the 5th digit to the left of the decimal point is less than 1 and the 4th digit to the left of the decimal point is greater than 0, then proceed. Use
GROUP B to assign a descriptor to the verbal amount character array “verbal_amount” based on the number that is contained in the 4th digit to the left of the decimal place in the numerical character array “totpay” as shown here:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
// if the 4th digit to the left of the decimal point is 1, then append
// "ONE" to the 'verbal_amount' array.
if(totpay[3] == 49) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am9[f];
aa=aa+4;
}
// if the 4th digit to the left of the decimal point is 2, then append
// "TWO" to the 'verbal_amount' array.
if(totpay[3] == 50) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am10[f];
aa=aa+4;
}
// if the 4th digit to the left of the decimal point is 3, then append
// "THREE" to the 'verbal_amount' array.
if(totpay[3] == 51) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am11[f];
aa=aa+6;
}
// if the 4th digit to the left of the decimal point is 4, then append
// "FOUR" to the 'verbal_amount' array.
if(totpay[3] == 52) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am12[f];
aa=aa+5;
}
// if the 4th digit to the left of the decimal point is 5, then append
// "FIVE" to the 'verbal_amount' array.
if(totpay[3] == 53) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am13[f];
aa=aa+5;
}
// if the 4th digit to the left of the decimal point is 6, then append
// "SIX" to the 'verbal_amount' array.
if(totpay[3] == 54) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am14[f];
aa=aa+4;
}
// if the 4th digit to the left of the decimal point is 7, then append
// "SEVEN" to the 'verbal_amount' array.
if(totpay[3] == 55) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am15[f];
aa=aa+6;
}
// if the 4th digit to the left of the decimal point is 8, then append
// "EIGHT" to the 'verbal_amount' array.
if(totpay[3] == 56) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am16[f];
aa=aa+6;
}
// if the 4th digit to the left of the decimal point is 9, then append
// "NINE" to the 'verbal_amount' array.
if(totpay[3] == 57) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am17[f];
aa=aa+5;
}
| |
Next, append "THOUSAND" to the character array “verbal_amount” and end structure “d”.
Begin structure “e”. If the 3rd digit to the left of the decimal point is greater than 0, then proceed. Use
GROUP B to assign a descriptor to the verbal amount character array “verbal_amount” based on the number that is contained in the 3rd digit to the left of the decimal place in the numerical character array “totpay” as shown here:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
// if the 3rd digit to the left of the decimal point is 1, then append
// "ONE" to the 'verbal_amount' array.
if(totpay[4] == 49) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am9[f];
aa=aa+4;
}
// if the 3rd digit to the left of the decimal point is 2, then append
// "TWO" to the 'verbal_amount' array.
if(totpay[4] == 50) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am10[f];
aa=aa+4;
}
// if the 3rd digit to the left of the decimal point is 3, then append
// "THREE" to the 'verbal_amount' array.
if(totpay[4] == 51) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am11[f];
aa=aa+6;
}
// if the 3rd digit to the left of the decimal point is 4, then append
// "FOUR" to the 'verbal_amount' array.
if(totpay[4] == 52) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am12[f];
aa=aa+5;
}
// if the 3rd digit to the left of the decimal point is 5, then append
// "FIVE" to the 'verbal_amount' array.
if(totpay[4] == 53) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am13[f];
aa=aa+5;
}
// if the 3rd digit to the left of the decimal point is 6, then append
// "SIX" to the 'verbal_amount' array.
if(totpay[4] == 54) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am14[f];
aa=aa+4;
}
// if the 3rd digit to the left of the decimal point is 7, then append
// "SEVEN" to the 'verbal_amount' array.
if(totpay[4] == 55) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am15[f];
aa=aa+6;
}
// if the 3rd digit to the left of the decimal point is 8, then append
// "EIGHT" to the 'verbal_amount' array.
if(totpay[4] == 56) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am16[f];
aa=aa+6;
}
// if the 3rd digit to the left of the decimal point is 9, then append
// "NINE" to the 'verbal_amount' array.
if(totpay[4] == 57) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am17[f];
aa=aa+5;
}
| |
Next, append "HUNDRED" to the character array “verbal_amount” and end structure “e”.
Now check to see if the 2nd digit to the left of the decimal point in the numerical character array “totpay” is greater than 0 (begin structure “f”). If true, then check to see if the 2nd digit to the left of the decimal point in the numerical character array “totpay” is equal to 1 (begin structure “g”). If true, then use
GROUP C to assign a descriptor to the verbal amount character array “verbal_amount” based on the number that is contained in the 1st digit to the left of the decimal place in the numerical character array “totpay” as shown here:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
// if the 1st digit to the left of the decimal point is 0, then append
// "TEN" to the 'verbal_amount' array.
if(totpay[6] == 48) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am210[f];
aa = aa + 4;
}
// if the 1st digit to the left of the decimal point is 1, then append
// "ELEVEN" to the 'verbal_amount' array.
if(totpay[6] == 49) {
for(f=0; f<6; f++) verbal_amount[f+aa+1] = am211[f];
aa = aa + 7;
}
// if the 1st digit to the left of the decimal point is 2, then append
// "TWELVE" to the 'verbal_amount' array.
if(totpay[6] == 50) {
for(f=0; f<6; f++) verbal_amount[f+aa+1] = am212[f];
aa = aa + 7;
}
// if the 1st digit to the left of the decimal point is 3, then append
// "THIRTEEN" to the 'verbal_amount' array.
if(totpay[6] == 51) {
for(f=0; f<8; f++) verbal_amount[f+aa+1] = am213[f];
aa = aa + 9;
}
// if the 1st digit to the left of the decimal point is 4, then append
// "FOURTEEN" to the 'verbal_amount' array.
if(totpay[6] == 52) {
for(f=0; f<8; f++) verbal_amount[f+aa+1] = am214[f];
aa = aa + 9;
}
// if the 1st digit to the left of the decimal point is 5, then append
// "FIFTEEN" to the 'verbal_amount' array.
if(totpay[6] == 53) {
for(f=0; f<7; f++) verbal_amount[f+aa+1] = am215[f];
aa = aa + 8;
}
// if the 1st digit to the left of the decimal point is 6, then append
// "SIXTEEN" to the 'verbal_amount' array.
if(totpay[6] == 54) {
for(f=0; f<7; f++) verbal_amount[f+aa+1] = am216[f];
aa = aa + 8;
}
// if the 1st digit to the left of the decimal point is 7, then append
// "SEVENTEEN" to the 'verbal_amount' array.
if(totpay[6] == 55) {
for(f=0; f<9; f++) verbal_amount[f+aa+1] = am217[f];
aa = aa + 10;
}
// if the 1st digit to the left of the decimal point is 8, then append
// "EIGHTEEN" to the 'verbal_amount' array.
if(totpay[6] == 56) {
for(f=0; f<8; f++) verbal_amount[f+aa+1] = am218[f];
aa = aa + 9;
}
// if the 1st digit to the left of the decimal point is 9, then append
// "NINETEEN" to the 'verbal_amount' array.
if(totpay[6] == 57) {
for(f=0; f<8; f++) verbal_amount[f+aa+1] = am219[f];
aa = aa + 9;
}
| |
End structure “g”. Next, use
GROUP A to assign a descriptor to the verbal amount character array “verbal_amount” based on the number that is contained in the 2nd digit to the left of the decimal place in the numerical character array “totpay” as shown here:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
// if the 2nd digit to the left of the decimal point is 2, then append
// "TWENTY" to the 'verbal_amount' array.
if(totpay[5] == 50) {
for(f=0; f<6; f++) verbal_amount[f+aa+1] = am8[f];
aa=aa+7;
}
// if the 2nd digit to the left of the decimal point is 3, then append
// "THIRTY" to the 'verbal_amount' array.
if(totpay[5] == 51) {
for(f=0; f<6; f++) verbal_amount[f+aa+1] = am7[f];
aa=aa+7;
}
// if the 2nd digit to the left of the decimal point is 4, then append
// "FORTY" to the 'verbal_amount' array.
if(totpay[5] == 52) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am6[f];
aa=aa+6;
}
// if the 2nd digit to the left of the decimal point is 5, then append
// "FIFTY" to the 'verbal_amount' array.
if(totpay[5] == 53) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am5[f];
aa=aa+6;
}
// if the 2nd digit to the left of the decimal point is 6, then append
// "SIXTY" to the 'verbal_amount' array.
if(totpay[5] == 54) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am4[f];
aa=aa+6;
}
// if the 2nd digit to the left of the decimal point is 7, then append
// "SEVENTY" to the 'verbal_amount' array.
if(totpay[5] == 55) {
for(f=0; f<7; f++) verbal_amount[f+aa+1] = am3[f];
aa=aa+8;
}
// if the 2nd digit to the left of the decimal point is 8, then append
// "EIGHTY" to the 'verbal_amount' array.
if(totpay[5] == 56) {
for(f=0; f<6; f++) verbal_amount[f+aa+1] = am2[f];
aa=aa+7;
}
// if the 2nd digit to the left of the decimal point is 9, then append
// "NINETY" to the 'verbal_amount' array.
if(totpay[5] == 57) {
for(f=0; f<6; f++) verbal_amount[f+aa+1] = am1[f];
aa=aa+7;
}
| |
End structure “f”. If the 1st digit to the left of the decimal point is greater than 0 and the 2nd digit to the left of the decimal point does not equal 1, then begin structure “h”. Use
GROUP B to assign a descriptor to the verbal amount character array “verbal_amount” based on the number that is contained in the 1st digit to the left of the decimal place in the numerical character array “totpay” as shown here:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
// if the 1st digit to the left of the decimal point is 1, then append
// "ONE" to the 'verbal_amount' array.
if(totpay[6] == 49) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am9[f];
aa=aa+4;
}
// if the 1st digit to the left of the decimal point is 2, then append
// "TWO" to the 'verbal_amount' array.
if(totpay[6] == 50) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am10[f];
aa=aa+4;
}
// if the 1st digit to the left of the decimal point is 3, then append
// "THREE" to the 'verbal_amount' array.
if(totpay[6] == 51) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am11[f];
aa=aa+6;
}
// if the 1st digit to the left of the decimal point is 4, then append
// "FOUR" to the 'verbal_amount' array.
if(totpay[6] == 52) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am12[f];
aa=aa+5;
}
// if the 1st digit to the left of the decimal point is 5, then append
// "FIVE" to the 'verbal_amount' array.
if(totpay[6] == 53) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am13[f];
aa=aa+5;
}
// if the 1st digit to the left of the decimal point is 6, then append
// "SIX" to the 'verbal_amount' array.
if(totpay[6] == 54) {
for(f=0; f<3; f++) verbal_amount[f+aa+1] = am14[f];
aa=aa+4;
}
// if the 1st digit to the left of the decimal point is 7, then append
// "SEVEN" to the 'verbal_amount' array.
if(totpay[6] == 55) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am15[f];
aa=aa+6;
}
// if the 1st digit to the left of the decimal point is 8, then append
// "EIGHT" to the 'verbal_amount' array.
if(totpay[6] == 56) {
for(f=0; f<5; f++) verbal_amount[f+aa+1] = am16[f];
aa=aa+6;
}
// if the 1st digit to the left of the decimal point is 9, then append
// "NINE" to the 'verbal_amount' array.
if(totpay[6] == 57) {
for(f=0; f<4; f++) verbal_amount[f+aa+1] = am17[f];
aa=aa+5;
}
| |
End structure “h”. If nothing was translated to a verbal amount from the above code (the “aa” counter variable is equal to 0 from not being incremented in the concatenation programming from above), then assign the
ZERO DESIGNATOR to the verbal amount character array “verbal_amount”. Lastly, skip a space character in the verbal amount character array “verbal_amount” and append “AND”. Skip another space character and append the two (2) characters for cents in the numerical character array “totpay” followed by “/100”.
CONCLUSION
As seen from the above narrative,
application development saves a lot of time and labor. When I create software, I don’t really care about making it aesthetically pleasing to the eye as long as it is easy to use, reliable and reasonably fast. This is what business people really care about. My
developer skills can be traced back to the early 1990s from designing business software. Please contact me through my
software developer website if you would like to learn more about the services I offer.


'Frozen 2' cast admits to sharing spoilers on 'Jimmy Kimmel Live!'
by WABCLOS ANGELES (WABC) -- Two weeks ahead of "Frozen 2's" theatrical release, the cast stopped by "Jimmy Kimmel Live!" and confessed to sharing movie spoilers -- with their kids.
Stars Kristen Bell and Josh Gad, who appeared on Thursday night's show alongside Idina Menzel and Jonathan Groff, admitted that their children know some highly classified information about the sequel to Disney's 2013 box office hit.
Bell, who voices Anna, revealed that, after reading the movie's script, she told her kids the entire plot in an attempt to impress them.
"I told them everything, and I told them, 'Just keep it a secret,' and then it occurred to me: Kids are bad secret keepers, and I might breach my contract," she said.
Gad, who voices Olaf, followed by telling Kimmel that he showed his kids the movie.
"I would put them to bed at night and be like, 'Remember, we don't talk about it," and they're like, 'We know," and I'm like, "Cause, you know, daddy wants you guys to keep having dinner, to be able to sleep with a roof over your head,'" he said.
The cast also talked about wacky "Frozen 2" accessories, Groff's "amazing 80s jam" featured in the movie, and Menzel and Bell getting their stars on the Hollywood Walk of Fame.
"Frozen" is the highest-grossing animated film of all time in the worldwide box office, and already, its sequel broke a record for first-day ticket presales.
"Frozen 2" hits theaters in the United States on Nov. 22.
The Walt Disney Company is the parent company of this station.


"Out of Sight" - Clooney Robs Banks, Steals the Show
Who said that the bad guys were the ones that always ran from the law? If you find the rare opportunity to talk to a person like Jack Foley (George Clooney), you'll find out that he's intelligent, personable and loves the movies. He has admirable principles, possesses an understated charm, and is a likable guy.
During his escape, Foley is forced to take hostage FBI agent Karen Sisco (Jennifer Lopez). However, Foley doesn't resort to threats and scare tactics during this period of tension. Rather, he is collected and begins to engage in a conversation about his ex-wife, friends and his love of movies. Though she is scared, there's a sort of comfort that she gets from his voice. A strange but believable attraction begins to take shape. "What if we met under different circumstances," he muses. Yet despite their developing bond for one another, Sisco knows that she ultimately must arrest the escaped convict. Meanwhile, Foley has his own agenda, which leads him and his friend Buddy (Ving Rhames) to Detroit where a former inmate now lives. This inmate (Albert Brooks) once ill-advisedly bragged how he kept $5 million in diamonds at his place. For Foley, this could be his big break. If he can successfully pull off the robbery, allude the tenacious Agent Sisco, and also stay ahead of a rival gang of former inmates who also know of the diamonds, he can retire and escape to some far away island.
"Out of Sight" incorporates much of the skewed humor, sharp dialogue and absurdly violent situations seen in "Jackie Brown" and "Get Shorty" (in fact, all these movies are adapted from work by Author Elmore Leonard). This is the kind of film where we become more interested in what a character thinks and not what he does. Clooney does a terrific job as a man who is constantly looking for ways to maneuver through various obstacles in order to reach his goal, whether its finding a way to meet Sisco or finding the stash of diamonds. Lopez is also very good and projects the right look of a woman who wants to make the arrest while teasing with the idea of first having an affair with him. Together, they have chemistry and a smoldering sexuality. Meanwhile, they are surrounded by a colorful and rich cast of supporting characters, and each of them gets ample opportunities to show us how unique, strange, and odd their crime world is.
The film makes me wonder how interesting it must be to be a part of this kind of world, as fragile and hostile as it may be. The film's greatest pleasure comes from it's dialogue. Add a funky electronic piano and bluesy guitar score, and you have a film that looks good, sounds good and feels hip.
Grade: B
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Over 80 TSB branches set to close with 400 jobs at risk
by Scotsman ReporterUp to 400 jobs could be at risk as more than 80 TSB branches across the country are set to close their doors next year, the bank announced in another blow to the UK high street.
TSB said that it was cutting back its locations to refocus on profits, and will replace workers' tasks with automated processes.
As part of the plan, 82 branches will be shut next year.
Staff will be told if their bank is affected in the coming days, and a full list of sites slated for closure will be published on Thursday.
Around 300 to 400 members of staff are understood to be employed in these branches.
TSB said it will try to find new roles for them elsewhere in the group.
They are understood to be the bank's less busy branches.
It is part of a plan to save around £100 million by 2022, and turn a profit of between £130 million and £140 million.
"The plan we're sharing today involves some difficult decisions, but it sets TSB up to succeed in the future," said TSB boss Debbie Crosbie, as she set out the three-year plan.
"Taken together, these changes will help us to serve more customers, better, for the long-term."
It also includes a push to invest another £120 million in digital products.
The bank said it expects 70% to 80% of its sales to come from digital channels by 2022, up from 46% in September this year.
It comes in a tough retail environment for British banks, with high streets suffering while online-only challengers are tempting customers with new types of accounts.
TSB said it had around twice the number of stores per 10,000 customers in 2018 as the average in the UK.
"With a trusted brand, modern platform, and national presence, TSB is well placed to deliver - but we need to make changes to enable us to compete," Ms Crosbie said.
"Our new strategy positions TSB to succeed in a challenging external environment at a time when we know customers want something different and better from their bank."


ABAP Quick Fixes - Replace Logical Operators
If you follow the guidelines for the clean ABAP, then you would probably replace all the logical operators like EQ, NE, etc. to = or <>.
This quick fix does it for you.
Works for: EQ, NE, GT, LT, GE, LE


This is a landing pages for talks I have given and made it to GitHub.
Rounding in python
2019-10-30
ChiPy presents Spooky Lightning Talks
We all learned to round in elementary school. Python doesn't use that same strategy. Instead it uses even number rounding, also known as banker's rounding. It's great, but can trick you if you're not aware.
Makefiles for Data Projects
2019-06-19
ChiPy Data SIG presents A Night of Lightning Talks
What is make and why should I use it? What are some examples of how make can help improve my workflow on data projects?
Microservices in R
2019-04-27
SatRdays Chicago Conference
What is a microservice and why should I care? What are some examples of microservices in R? What tools can help improve my workflow developing microservices in R?
A Tour of Job Scheduling in Python
2018-10-11
Chipy October 2018 Main Meeting
Once you've started to learn python, you're going to want to use it to automate tasks. Their are lots of ways to do this, each with it's own set of pros and cons. This talk will go over a few options for scheduling the execution of python scripts and the tradeoffs that come with each. Tools that will be covered include crontab, schedule, celery, airflow, and cloud options AWS Lambda and GCP functions.


Last Name
First Name
Address
City
State
Zip/Postal Code
Country
Bulgaria
United Kingdom
United States
Russian
Phone (country code, area code, number)
(+
)
-
E-mail
Birth date
Month
Day
Year(4 digit)
Gender
Male
Female
Starting date
Spring 2013
Summer 2013
Comments/Questions


Full Aircraft Animation
Convergence Plot
For the selected vibration mode, this graph shows the error in modal frequency decreases as you increase the number of elements.Modal Frequency:
Visualisation Guidance
This is the guidance for the Free Vibrations vizualisation.
The number of elements slider allows you to adjust the level of discretization used. Increasing the number of elements increases the accuracy of the simulation until results converge, as displayed in the convergence plot.
The mode shape slider allows you to change the mode shape being animated. Increasing the number of elements allows for more mode shapes to be found due to the underlying linear algebra. Also, you can observe that, as you increase the mode shape number, the associated modal frequency also increases.
The slow-motion slider allows you to adjust the speed of the animation. Note this animated frequency does not represent reality, the lowest modal frequency is 12.7Hz!
To see how the results were obtained and some of the idealizations used, follow the show theory button.
Click the second dot button below to display the 2D projection and see the eigenvectors in greater detail.
Click the third dot button below to display convergence plot. As the number of elements increases the modal frequency should converge to a given value. At this point, the simulation is as accurate as the underlying idealizations made.
Have fun!


Description
In Hyprsense we develop state-of-the-art production-ready facial expression tracker. We are looking for a software engineer who will work with us to automate, measure and improve the machine learning workflow spanning through training data collection, machine learning, deployment and optimization on mobile devices.
You will develop either:
Automation our training image data collection system
Optimize machine learning algorithms (i.e. Linear regression, SVM, Deep learning) and distribute across cluster nodes.
Implement and optimize various numerical optimizations and computer vision algorithms running on mobile devices.
Key Qualification
3+ years experience in developing software applications
Strong proficiency in C++ and writing manageable high-performance code
Bachelor degree or comparable industry career
Skills
Python, C++, Machine Learning, Software Development
Plus
Mobile app development (Android / iOS)
Proficiency in python scripting
Experience in data engineering (i.e. ETL, Spark)
Experience in computer vision or machine learning projects (OpenCV, Tensorflow, PyTorch)


---
layout: post
title: ''
date: '2010-04-01T23:09:18-07:00'
tags:
tumblr_url: http://alexhwilliams.tumblr.com/post/490655041/check-out-chicagos-cycle-center-portland-needs-a
---
Check out Chicago’s Cycle Center. Portland needs a place like this.
NACTO Presents: McDonald’s Cycle Center in Millennium Park, Chicago, IL (via NACTOfilms)


In the ‘60s popular music had been characterized by its largely teen fan base. When the portable radio was introduced; it became even easier for teens to take their tunes wherever they went.
But the true driving force of pop in the ‘60s came from across the Atlantic, with Beatlemania and the British Invasion into the American charts. The British Invasion brought rock and pop music and bands to the U.S., where they became wildly popular. The Beatles were the ones who started the phenomenon with their mix of beat, rock, and pop ballads immediately took over American pop charts. It extended to other British bands, that took part in this invasion included the English rock group, The Rolling Stones, the Kinks, the Who, Cream, and the Yardbirds were all making appearances on the U.S. charts.. English rock groups were not the only ones who were dominating the U.S charts, but also individual artists like Tom Jones. Through all of this, not only the pop genre, but also the rock genre was forming into something not solely defined by the American solo-pop and rock artists/bands of the previous decade. Now, bands were introduced into the fray, and pop was splitting into sub-genres that included Bubblegum pop—defined by its upbeat sound and its direct aim at teen audiences—and Baroque pop, which blended pop and rock and baroque music together. Rock music sub-genres such as folk rock, surf rock, blues rock, and psychedelic rock were formed during the British Invasion.
The Beatles were a legendary rock group that formed in Liverpool, England, in 1960, and went on to transform popular music as a creative, highly commercial art form over the next decade. The Beatles were one of the most popular bands of all time, producing songs like "Yesterday, "Hey Jude," "Penny Lane, "With A Little Help From My Friends," "Let It Be," "Day Tripper" and "Come Together” that consists of members—John Lennon, Paul McCartney, George Harrison and Ringo Starr.
In 1962, one of the most successful and critically acclaimed rock bands of all time, the Rolling Stones was started in London. Named after the Muddy Waters song "Rollin' Stone," the original band included frontman Mick Jagger, guitarists Keith Richards and Brian Jones, bassist Bill Wyman, drummer Charlie Watts and pianist Ian Stewart. Guitarist Ron Wood joined Jagger, Richards and Watts in 1975. The Stones, in their various incarnations, have rocked on for more than 50 years, selling more than 200 million albums worldwide.
Pop was traveling, and picking up influences — from the beaches of California, bands like the Beach Boys were taking the harmonies from traditional pop songs and layering them with the “surf rock” rhythm that they became known for.
The Beach Boys are an American rock band formed in Hawthorne, California in 1961. The group's original lineup consisted of brothers Brian, Dennis, and Carl Wilson, their cousin Mike Love, and their friend Al Jardine. Distinguished by their vocal harmonies and early surf songs, they are one of the most influential acts of the rock era.The band drew on the music of jazz-based vocal groups, 1950s rock and roll, and black R&B to create their unique sound, and with Brian as composer, arranger, producer, and de facto leader, they often incorporated classical elements and unconventional recording techniques in innovative ways.
Tom Jones is a Welsh singer born on June 7, 1940, in Pontypridd, Wales. Influenced as a child by American blues, R&B and rock 'n' roll, over the past five decades the singing legend has produced hits in both the United States and the United Kingdom. Highlights include classics such as "Once Upon a Time," "With These Hands," "Green, Green Grass of Home" and "Delilah." He continued to put forth successful albums from the '80s into the new millennium, with hits particularly catered to the British and European markets.
The "Motown Sound" and popular R&B music had a major significance in terms of the Civil Rights movement and integration in American society during the sixties. Motown records consisted mainly of African-American groups, singers, songwriters and management and their musical and business success proved in breaking down the barriers of segregation and granted African-American performers and musicians a chances to reappropriate much of the success that had been credited to white rock 'n' rollers and pop artists who had success in singing "black music" during the previous decade.
Stevie Wonder is an American musician, singer and songwriter, considered to be one of the most creative musical performers of the 20th century. Blind from birth, he was a child prodigy and became a skilled musician by the age of eight. After signing a contract with Motown label, he was renamed ‘Little Stevie Wonder’ and made his recording debut at the age of 12.Subsequently, he emerged as an able artist with his hit single “Fingertips” and later, his passionate delivery of the pounding single “Uptight (Everything’s Alright)” confirmed the arrival of a compelling performer. In the following years, Wonder had numerous hits with several chartbusters including “I Was Made to Love Her” and “For Once in My Life”.
The Jackson 5 were one of the biggest phenomenons in pop music during the late 60s, and the last great group to come out of the Motown hitmaking machine before Marvin Gaye and Stevie Wonder shifted the label's focus to more individual visions. The Jackson 5's infectious brand of funky pop-soul was a definite departure from the typically smooth, elegant Motown sound, as befitting the group's youth and the dawn of a new decade. That youth, coupled with the merchandising juggernaut that sprang up behind them, inevitably got them tagged a bubblegum group. But they were far more talented musically than that label would suggest, especially lead singer Michael, and their material, while sunny and upbeat, didn't pander to its audience. Solo careers and overexposure gradually weakened the Jackson 5, but their best music still holds up surprisingly well as some of the most vibrant mainstream pop/R&B of its era.
Folk rock singer-songwriter Bob Dylan was born Robert Allen Zimmerman on May 24, 1941, in Duluth, Minnesota. While attending college, he began performing folk and country songs, taking the name "Bob Dylan." In 1961 Dylan signed his first recording contract, and he emerged as one of the most original and influential voices in American popular music. Dylan has continued to tour and release new studio albums, including Together Through Life (2009), Tempest (2012), Shadows in the Night (2015) and Fallen Angels (2016). The legendary singer-songwriter has received Grammy, Academy and Golden Globe awards, as well as the Presidential Medal of Freedom and the Nobel Prize for Literature.


Our fourth annual High School Conference is a collaborative, interdisciplinary, and locally engaged initiative, designed to promote diversity and female presence in the STEM fields in and beyond the United Arab Emirates by helping high school girls prepare for successful college studies and a career in STEM.
We all gathered for an end-of-semester pot-luck dinner to celebrate our accomplishments and say farewell to weSTEM members studying abroad the following semester.
As part of our Speaker Series, we had a chance to speak with Regien Sumo about her experience s as an NYUAD professor teaching Introduction to Entrepreneurship and a Strategy Consultant in Dubai. Regien completed her PhD in the Innovation, Technology Entrepreneurship & Marketing (ITEM) group of the school of Industrial Engineering at Eindhoven University of Technology. Her work has been published in numerous renowned international journals and conference proceedings, and she previously held several positions in the investment banking sector at ING Bank N.V. in Amsterdam and Singapore.
We hosted three inspirational women leaders from Emirates Global Aluminium (EGA): Amal Aljasmi, Inam Al Marzouqi and Khawla Al Marzooqi. As true trailblazers in their fields, they spoke about their professional experiences as women in STEM. It was an opportunity for students to network with accomplished STEM professionals, learn more about EGA, and contribute to an important dialogue in the weSTEM community.
Women’s Leadership Network and weSTEM co-hosted an interactive session on Addressing Gender Bias in the Workplace. Students of all genders and backgrounds learned how to effectively address gender-biased comments in professional settings.
Dóri Palfi and Beatrice Ionascu, founders of weSTEM at NYUAD talked about why they founded weSTEM, how they transferred this vision into a company as well as their experience as startup founders. They are now working together on their own startup imagiLabs that provides a mobile platform for coding education. Their first product is a programmable phone case that pairs with imagiLabs own application, allowing users to learn to code while customizing their phone accessory!
We met with Nicole Adoranti, the STEM Career Advisor at the NYUAD Career Development Center to discuss strategies for tailoring our experiences to create an effective STEM CV.
On October 13th we hosted the first of our Dialogue Series. Dana Abu Ali, former weSTEM member and NYUAD Computer Science Alumna who currently works at IBM in Abu Dhabi came to campus and discussed her article about The Pressures on a Female STEM major. It was a great opportunity to take some time, reflect together, and share our experiences as women in STEM.
Our annual tech internship panel took place with students representing Digital McKinsey, Foursquare, Lockheed Martin, and Sift. We got to hear about the process of getting a summer internship and what students’ experiences were like on the job.
In this workshop we taught basic electronics and coding with Arduino software. It was designed for students of all majors, hoping to get anyone and everyone excited about tech!


The test harness is a piece of software that is responsible for launching Holodeck with command line options, this software is not part of Holodeck and must be supplied by the user. The Test Harness is also responsible for terminating the test at appropriate times and monitoring the application under test for exceptions. When launching Holodeck the following command line options are available:
/record – turns on session recording
/silent – runs Holodeck minimized and with no popup UI
/codecoverage:[high|medium|low] – turns on code coverage with either high, medium or low settings
/randomstress:[high|medium|low] – turns on random stress testing with either high, medium or low settings
/intelligentstress:[high|medium|low] – turns on intelligent stress testing with either high, medium or low settings
For more information on the command-line options in Holodeck see the Introduction to using Holodeck as a command-line Utility
The test harness must terminate the test process after Holodeck has finished running each test so that Holodeck can restart the Application Under Test with new faults set. The test harness is also responsible for monitoring and recording errors thrown by the Application Under Test, it is highly recommended that these are time stamped so that they may be easily compared to Holodeck’s recorded session xml files.


Make your own website in a few clicks! Mobirise helps you cut
Just like yersterday, we met through the instrumentality of Mrs Akinpelu and Mrs Ojo. I first saw her in Orisun Baptist CHurch, Ogbmoso in a program, where she appeared as the dawn, as bright as the sun, as fair as the moon, as majestic as the stars in procession.
Meanwhile she had known me and seen me ssome years back when she come home from school with my house.
to cut the story short, the short friendship culminated in friended which resulted in introduction...and on the twentieth day of June, 2009 we walked together down the aisle.
that started the conjugal journey


OUTFOX
Copyright (c) 2005 Out of the Box
This game is played on the following board:
Each player has nine pieces off board, which represent all possible pieces with two different attributes (of three values each). In this webpage, I use color (red, white and black) and size (stack of size 1, 2 and 3).
- SETUP - Initially, one player drops a friendly stone on an empty cell. Then the other player plays a typical turn.
- TURN - On each turn, each player must do two actions in sequence:
- First he drops one of his off-board pieces in an empty cell. This cell must be adjacent to, at least, another piece which must be adjacent to another empty cell.
- Second - Select one adjacent piece and slide it over a straight line of empty cells (no jumps or captures allowed).
- GOAL - Wins the player that, after his turn, makes a 3 in-a-row containing three different values of a given attribute and a single value on the other attribute (in this case, three different colors in the same size OR three different sizes with the same color).
- A stalemated player (i.e., without any valid moves) loses.
An example The next player wins the game if he drops his red piece of size 2 into [1] and then slides the red piece of size 1 already on board into [2].
You can check the publisher's website to find more information.


CosNotification_AdminPropertiesAdmin
Module
CosNotification_AdminPropertiesAdmin
Module Summary
This module implements the OMG CosNotification::AdminPropertiesAdmin interface.
Description
To get access to the record definitions for the structures use:
-include_lib("cosNotification/include/*.hrl").
All objects, which inherit this interface, export functions described in this module.
Exports
get_admin(Object) -> AdminProperties
Types
Object = #objref
AdminProperties = [AdminProperty]
AdminProperty = #'CosNotification_Property'{name, value}
name = string()
value = #any
This operation returns sequence of name-value pairs which encapsulates the current administrative properties of the target object.
set_admin(Object, AdminProperties) -> Reply
Types
Object = #objref
AdminProperties = [AdminProperty]
AdminProperty = #'CosNotification_Property'{name, value}
name = string()
value = #any
Reply = ok | {'EXCEPTION', CosNotification_UnsupportedAdmin}
As input, this operation accepts a sequence of name-value pairs encapsulating the desired administrative settings for the target object. If it is not possible to set the given properties the exception UnsupportedAdmin will be raised.


This site is a pure Javascript implementation of the Dungeons and Dragons 5th Edition Character generation. There are no plans to make it non-Javascript based at this time.
Please click on one of the links to begin creating your character.
Load your character
I assume you are buying or accumulating your wealth....otherwise, why are you here?
Current Purse:
Any data input here is kept exclusively on your machine and is not shared to any services or databases.
Raise your character's level
Raise your character's level by one
Choose a new class to add to this character_
Add or Use equipment in your pack
Edit your stuff


Your browser does not support SVG
Our vision is to see the Gospel transform people into Spirit-filled disciples, who know they are the beloved of God because of Christ alone.
Seattle
Renton
Chicago
Downtown
Near West
Albany Park
Washington D.C.
Centreville


19
1 After these things I heard what sounded like a huge crowd in heaven. They were shouting things like,
"Hallelujah!" "He has saved us!"
"He is glorious and mighty!"
2 "Praise him because he judges truly and justly!"
"He has punished the very evil city that was like a prostitute
because their people persuaded the other people of earth to act immorally as they did."
"Praise him because he has punished them for murdering his servants!"
3 The crowd shouted a second time, saying,
"Hallelujah! The smoke of the fire that is burning that city will rise forever!"
4 The twenty-four elders and the four living creatures prostrated themselves and worshiped God, who sits on the throne. They said, "It is true! Hallelujah!"
5 Someone spoke from the throne and said, "All you who are his servants, praise our God! All you who honor him, whether you are important or not, praise him! Everyone!"
6 Then I heard something like the noise of a huge crowd of people, like the sound of a huge waterfall, and like the sound of loud claps of thunder. They were shouting:
"Hallelujah! Our Lord God, the Almighty One, reigns!
7 We should rejoice, we should be extremely glad, and we should honor him
because it is now time for the lamb to be united with the woman he is marrying. She has made herself ready.
8 God has permitted her to dress herself in fine linen, bright and clean.
Fine, bright, and clean linen represents the righteous actions of God's people."
9 Then the angel said to me, "Write this: how fortunate are the people whom God invites to the feast when the lamb marries his wife!" He also said to me: "These words that God declares are true!"
10 I immediately prostrated myself at his feet in order to worship him. But he said to me, "Do not worship me! I am just your fellow servant and the fellow servant of your fellow believers, those who speak the truth about Jesus. God is the one you should worship because it is the Spirit of God who gives people the power to speak the truth about Jesus!"
11 Then I saw the heavens open up, and I was surprised to see a white horse. Jesus, the one who was riding on the horse, is called "Trustworthy and Genuine." He judges all people according to what is right; he fights in justice against his enemies.
12 His eyes shone like a flame of fire. There were many royal crowns on his head. A name had been written on him. Only he knows the meaning of that name.
13 The cloak he was wearing was drenched with blood. His name is also "The Message of God."
14 The armies of heaven were following him. They were riding on white horses. They were wearing clothes made of clean white linen.
15 A sharp sword extends from his mouth; with it he will strike the rebellious people groups. He himself will rule them powerfully as though he had an iron rod. He will crush his enemies as a person crushes grapes in a winepress.
17 Then I saw an angel standing in the light of the sun. He called loudly to all the flesh-eating birds flying high in the sky, "Come and gather for the large feast that God is providing for you!
18 Come and eat the flesh of all God's enemies who are dead—the flesh of kings, of army commanders, of people who fought powerfully, of horses and of the soldiers who rode them, and the flesh of all other kinds of people, whether they were free or slave, important or not. All kinds!"
19 Then I saw the beast and the kings of earth with their armies; they had gathered together to fight against the rider on the horse and his army.
20 The rider on the white horse captured the beast and the false prophet. The false prophet is the one who had performed miracles in the beast's presence. By doing that he had deceived the people who had accepted the beast's mark on their foreheads and who had worshiped its image.  All the birds gorged themselves on the flesh of the people and horses that he had killed.